A frequently asked question by students is, “Which language they should learn to begin with?” or “How do they start learning programming?” If you want to become a great programmer, don’t start by learning any software language. It is a longer route for truly turning into a programmer.
I have been working with software engineers since last 16 years and I have seen two kinds of programmers largely:
- Run of the Mill: The programmers who know the language very well. They will understand the framework, syntaxes and various other tools to help them develop software applications. If you explain them the requirements, they will be able to develop software applications. On a closer look, you will find that many a time, their work is a copy, paste job; in other words, modifying an existing code written by someone else. They are an expert in finding solutions on the internet and will implement it in the application in the fastest possible way. They would not necessarily understand the entire code, but will make the necessary modifications to make it work and then they assemble many such pieces together to develop a full blown application.
Typically, they will excel in the programming language or platform that they are aware of but will be very slow in adopting new languages or tweaking applications in any other technologies.
- Problem Solver: A relatively less majority of developers revels in the sheer joy of creating beautiful, well-written programs and applications. They would understand the basics of computer programming extremely well. They will be strong in solving problems and debugging existing codes. A particular language will not deter them when they're exploring various possibilities in it. They would learn newer technologies at a faster pace and will have a horizontal exposure in a wide range of solutions and technologies. Obviously, they will have a vertical strength in certain areas as well.
The growth trajectory of these two types of software engineers is significantly different, especially after spending a few years in programming. In fact, the average earnings of the second type of programmer are at least 40-300% higher than the first type of the programmer.
If you would like to see yourself as the second type of programmer, you will need to build a solid computer science base. If you are someone who wants to learn on your own, here is a sequence that I have seen working for many aspiring programmers:
- Sign up for code.org. Start with code.org course 2. Complete course 3 and 4 and complete “Computer Science in Algebra” https://studio.code.org/s/algebra It is important not to skip anything in between. This will typically take you 2 months (average of 15 hours a week).
- Sign up for Scratched https://www.edx.org/course/programming-scratch-harveymuddx-cs002x-1 Build application and games on scratch platform (4-6 weeks)
- Sign up for CS50 course from Harvard https://www.edx.org/course/introduction-computer-science-harvardx-cs50x. It is a little tough, but it is important to complete the course.
- Develop strong database skills by learning one SQL based course https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about. Later on, you can take a NoSQL course as well. The Database is one skill which is frequently ignored by a lot of developers.
Once you take this sequence you will know what to do next to build skills in a particular language. Hope this helps!