This posting is to show my experience on learning Web and Mobile languages nowadays. Even though I have a Bachelor of Computer Science, technology changes so fast that is extremely hard to keep updated if you are not working in the industry. However, it was faster to learn with the background I have than if I was totally new to software development.
I graduated in 2008 in Brazil in a public University, similar to UBC, after 4 years in a Computer Science program. During that program, I had the opportunity to have learned Pascal, C and Java. Moreover, I had 2 courses of Algorithms, Open GL(coding in C) and Distributed Systems(coding in Java).
In addition to my education experience, I got my first developer job as a Web Developer where I had all the roles as possible, such as Developer, Project Manager, Business Analyst, etc. I had no experience on Web programming languages in the University, so I need to look for courses and study by myself. Our client was all the department of University, where we needed to developed solutions and give the support. Those systems were developed in HTML, CSS, Java Script, MySQL, ASP and PHP.
Resources to learn
Most of what I have learned that time came from the instructors I had. The Internet didn’t have the variety of information and foruns where you can send your doubts and someone will be willing to help you. There was no GitHub or StackOverflow website to help you. I used to access Coderanch or Java Web Forum in order to get some help about my problems. If these forums did not have the information I needed, I had to go to the language documentation and try to figure out myself.
In addition to my program, in my Algorithms course, my instructor provide some code challenges from Valladolid University in order to keep improving to be a better developer. This Spanish institution is still very famous for promoting Algorithms challenges. Here are the websites where you can try to do some of their challenges: https://uva.onlinejudge.org/
Nowadays there are a lot of websites that provide courses, such as Udemy (https://www.udemy.com/) or Coursera (https://www.coursera.org/), and algorithm challenges, such as Hacker Rank (https://www.hackerrank.com/). Finally, you also can join events where people get together to help others to learn how to code.
Emerging of Smartphones and experience to learn how to code for them
When I finished my graduation, smartphones started to appear and was not available to everyone because of its price. The first Iphone was launched in 2007, and I had my first experience with one in 2011 with Iphone 3GS. In my opinion, software development took another step by the emerging of different applications where you can order your food, show your location, play your music, etc. Usually, desktop apps have a lot of features and solve different problems at the same time. Nowadays, you can have one app that has a specific feature and with a pleasant design. This makes easier for developers, who don’t have so much experience on software development to be willing to develop an app that solves a specific problem and makes this app profitable.
With my previous background in Java, CSS and XML was easy to understand how is to code for Android. Most of the features that are available on the IDE looks familiar to CSS properties. You are still developing in the same way you are developing a desktop developing in Java. Of course, there are new libraries and features that you must learn in order to take advantage of everything that the programming language has to offer.
In my opinion, the documentation of the language and the resources on how to learn still needs to improve. The technology evolves so fast that is getting difficult to create tutorials and look for specific problems that other developer had solved before. That a high chance that the solution you found on the Internet uses objects and methods that are deprecated.
Differences from Web now and when I started coding
ASP and PHP are languages where you most mix you back-end code with the front-end on the same file. This is extremely difficult to give maintenance. One single page of an e-commerce could have more than thousands of lines of code. If there are bugs to fix, it is difficult to discover where is the problem if the website was not well documented.
I had experience with ASP.NET and JSP, where you can separate the front-end from back-end code, but it was for a year and those languages were not as popular as PHP and ASP at that time. Most web languages allow the developers separate the client code from the server code, and divide the app into layers in order to make this more secure and organized.
Moreover, in the past, there was less concern about how the design is going to look like. Nowadays, designers care about white spaces, readability, accessibility, colors, etc.
In my opinion, developers don’t need to be scare if they want to jump into new technologies that are available now. What I recommend is to you focus on your particular language and go look for videos and courses, practice a lot in order to get good on developing for that language. There are a lot of resources available and people who are willing to help you to be a good developer. Look for Meetup (https://www.meetup.com) events where people are developing app’s where beginners are able to code and help people to solve a particular problem. It is also an opportunity to show your skills and get a job. Moreover, If you have a strong background in Algorithms and is a good problem solver, to learn a new web and/or mobile programming language will be a piece of cake for you.