How and Where Should I Learn Programming?
Software development is a challenging and lucrative career option. Our daily utility items — light bulbs, televisions, cars, banking, shopping — everything is driven by intelligent pieces of codes.
If you want to learn programming but do not know where to start, you have come to the right blog. I have compiled a step-by-step guide that will get you started on your software development journey and eliminate your apprehensions.
As you would have noted, there are many popular programming languages nowadays. It is easy to be tempted and try to learn everything at one go. However, it will only lead to frustration and disappointment.
I strongly recommend picking one language (of course, only on the first steps, later you should aim to get knowledge in several languages) and sticking to it rather than sailing in too many boats together. Here are some of the things to consider before choosing a language:
Difficulty level — Your prior experience with programming languages (if any) is a vital determiner of success. If you are entirely new to programming, Java and C# would be a good starting point. But I would strongly recommend Java for those willing to devote more time and looking for more rewarding options. It has a wide application, is highly-paid, and a large developer community to seek support from, making it worth the extra effort.
Here is an infographic highlighting the easiest programming languages to learn:
This picture nicely sums it all up. Java sits nicely in the middle as it offers the perfect balance of effort and rewards. There are many other options to explore — from the evergreen HTML to the emerging data science/artificial intelligence favorites (R, Python).
Popularity — This is another important parameter to consider while picking your language. Spending hundreds of hours learning something that does not have many applications would not be rewarding. According to the TIOBE July 2020 index, the top five popular languages are:
Java and C are always competing in terms of popularity, as reported by many articles like this one from Infoworld. Please keep in mind that this is just an indicator and your choice should not be solely guided by how popular a language is.
Resource availability — Learning programming by yourself, you would repeatedly be referring to available resources for getting your doubts cleared. Choosing a language that has been around for years means there is plenty of educational and reference material to help you along the learning curve. Whether you like to get a solid theoretical knowledge or you want to get started with coding straightaway, you just have to find the right course for your style. Additionally, there are active online forums where queries are posted and answered — there is a fair chance that your next query has already been answered by someone!
Long-term prospects — Career growth is likely an important factor in your decision to learn programming. Technologies used by top companies is usually a handy reference, as you know the in-demand skills.
Programming is different. This word is used for creating a feature rich website or web application. Moreover, in the case of web programming, there is a frontend (creation of functional interfaces, everything that the browser can read, display or launch) and a backend (everything that runs on the server). Programming is also the creation of mobile applications and desktop programs. For each of these areas there is a pool of working tools, including programming languages.
Scientific programming, video games, big data, trading, finance — different languages can also be used for different industries.
Some languages are more suitable for writing small scripts, others — for heavy enterprise applications.
Below I will give a short list of where and what is most often used:
- Enterprise-heavy server side applications — mostly Java, could be C #, sometimes C ++
- Scientific programming — Python, Java, C#, R
- Big Data — Java, Python, R
- Machine Learning — Python, R
- “Big” video games — mostly C ++ (with different engines, especially Unreal), C # (with Unity Engine)
- Mobile applications (including video games) — Java, Kotlin, Swift
- Operating systems, drivers, high performance desktop applications — C, C++
In fact, most languages are relatively universal. Let’s say Java can be applied in any of the above areas. There are two main reasons why a particular language is used in a particular area:
- The architectural features of the language. C and C ++ they are a little more low-level than the same Java or C #, they are closer to the hardware and work much faster. Therefore, where high performance is needed, these languages are used. And if security is more important, then it is much easier to build it in Java than in C and C ++.
- History and availability of tools. Let’s say Java and C # are architecturally and syntactically very similar. But Java entered Enterprise earlier, so there are a lot of applications for that that have been supported for years in the Enterprise.
Now that you know about the important parameters to guide your decision, it is time to take the leap. Based on the criteria listed above, these are the programming languages that I would recommend to beginners:
It offers the best rewards-effort ratio. It is beginners-friendly. It is ideal for learning object-oriented programming that lies at the foundation of complex applications. It is an open-source language. One of the most serious advantages of Java is JVM (Java Virtual Machine), a virtual machine that enables a computer to run Java applications. That means you may write your code once and it will work on any platform, from servers to mobile phones (of course, with some reservations).
Organizations of all scales use Java, translating into a lucrative career option. Java programmers have a dynamic job market where quality programmers are always welcome.
Java is used for huge enterprise-level server-side applications. It is also extensively used in Android programming. Technology-driven industries such as banking, finance, insurance, e-commerce, travel, transportation, social networking, etc. all deploy Java codes for building engaging user experience. Java-driven web applications are popular in Big Data technologies, software tools, and embedded space.
It is another solid language to start your programming journey with. C can be called a “middle level” language. This means that unlike high-level Java or Python, it is kind of closer to the hardware. So it can help you understand computing fundamentals at a deeper level. It has fewer standard libraries, which means you will be writing a lot of code from scratch, which is good for a beginner to get into the programming groove.
C is amongst the oldest yet versatile languages when it comes to real-world applications. For decades, it has been the language for creating drivers, operating systems, and scripting. Linux, Unix, Windows — they all were written in C. It remains a safe bet for the future, considering its applications in Internet of Things (IoT) and databases.
Python has long been on the periphery of the programming world. It has become mainstream in the last few years, thanks to a sudden spike in data science applications. Python’s uniqueness lies in building prototypes rapidly. It has a host of complementary tools such as NumPy, SciPy, etc. that are simple to learn but have the ability to build sophisticated systems in the domains of data science and scientific computations.
Python has a large resource pool available online and the developer community is growing by the day, adding more knowledge to the vast pool. As it has built-in testing frameworks, it is preferred for conducting cross-platform testing.
Python has heavy demand in futuristic technologies such as Data Science, Machine Learning, and Artificial Intelligence. It can be used to develop web applications or software.
Learning a programming language should be viewed as a journey rather than a destination. You cannot become and master all aspects of a programming language in a few weeks. Be realistic in your expectations. List down what you want to achieve at the end of the course and go for the course that aligns with your objective, learning speed, and learning mode.
Different languages have different learning approaches that you must follow systematically, keeping an eye on the bigger picture. Break down your overall objective into daily goals and include it in your schedule.
Now that you know what you want to do, the next step is to research and shortlist your resources. There are different types of them.
There are online resources offering hands-on tutorials. These adopt a practical approach to teaching and get you in the habit of coding early. The best way to learn is through practice.
Here are some content-rich websites you could refer to grasp programming concepts through the ideal mix of theory and hands-on.
Codegym is an online course and web portal to learn Java. It’s practical and applies 80:20 principle to teaching, with 80% of its content focused on practice. After covering the basics, the course gradually moves to complex concepts such as multi-threading, collections, etc. The fun part is you get over 1200 coding tasks to complete in order to hone your skills and derive confidence for the next level.
It offers a large array of programming languages to choose from. The site lists a rich collection of learning resources that are categorized according to courses. You can learn programming, databases, GUIs, and much more.
Codingame adds a much-needed fun element to learning programming, which can otherwise get monotonous and frustrating. You are up against enemies that you must shoot down by using your programming skills in order to survive. Not only does it make programming fun, you also get to practice it while playing the game.
A solid theoretical foundation is crucial for programmers, especially at the beginner level. Whether you are designing an application or preparing for an interview, a sound theoretical knowledge would give you a head start. Udacity is a very good website where you can find some courses for grasping the theoretical aspects of programming.
It is the most comprehensive resource you can get your hands on. It might not be the easiest to read but nothing explains a language better than its official documentation. For Java programmers, official java documentation continues to be The Bible of Java programming, irrespective of their experience levels.
Programmers from around the world get together on special platforms and discuss ideas, solve each other’s problems and share their experiences. This saves you from reinventing the wheel, as there is a good chance someone else has already faced and solved the problem you are about to run into.
Evergreen languages like Java, Python or C have active communities, thanks to a large number of users with decades of experience behind them. They are a good place to learn from each other’s mistakes and speed up your learning process.
Stackoverflow, GitHub, Reddit (r/WebDev, r/AskProgramming or r/LearnProgramming) and Slack (Hashtag Developers, European Dev Explorer and Slash Rocket) are some of the popular platforms that have some of the best-managed developer communities.
If you asked me for just one advice about learning programming, this would be it. If programming were easy, everyone would be doing it. Learning anything new takes time and patience. You need to make an honest effort and keep progressing towards the end result you planned for. There will be hiccups along the way that need to be taken in the stride.
Even the experienced programmers write bad code but they continue to refine it until it shines through. Learn from your (but better from others’) mistakes and try not to repeat them — there are plenty of new ones waiting to be made!
Learning a programming language takes time, patience, effort, and persistence. The resources you choose go a long way in determining the quality of the programmer you would end up writing. Thanks to the online learning revolution, plenty of reputed universities and programmers have posted their material online. All you need to do is find the right ones and uncover the immense potential within you.
First published on Levelup Gitconnected.