I come across questions on how to get started in programming often. People are hungry to learn, but don’t know where to start or which path to take. This is made even more difficult these days due to a lot of different areas that exist, such as web development, mobile software development, game development etc.
Although we live at a time when tutorials and lessons are abundant, a lot of it can feel overwhelming. What you need is a roadmap to navigate the topics. You want a structure to guide you in your learning. A lot of coding bootcamps follow an approach similar to a college curriculum. Working through these curriculums is frustrating because you don’t feel like you are learning anything substantial quickly enough. College curriculum is great if your goal is to get a certificate or a degree. They are not great if your goal is to learn the practical skills of software engineering.
Following is a roadmap that I have put together to help you guide yourself in learning how to program. Your mileage with this will depend on your current experience with coding. These days though, I expect a lot of people to have had some exposure to very basic coding concepts such as loops, if statements etc. Spending any more time on these concepts may not be worthwhile. What you want is a road map that gets you on your way to building things.
Here it is, my recommended roadmap for learning how to build software:
1. Start with Web Development
As I had mentioned, there are many different areas of software development that you could focus on. I recommend starting with Web Development because it has the quickest feedback loop. This will help you improve fast and learn various concepts quickly. Principles learnt here can then be applied to other areas that you may be interested in such as mobile app development or game development.
For the backend, you will primarily work with either PHP, Python, Java or Ruby. Pick any one that you feel comfortable with. I recommend Python or Ruby to start.
2. Prioritize building an end-to-end application first
One of the key principles for effective learning is to focus on depth first. Instead of learning a lot of concepts across the breadth of the topics, I recommend going deep into one specific area. In this case, I suggest focusing on building a simple end-to-end application first.
You will get a general idea of what it is like to build something from scratch. More importantly, you will feel great having a built a working app. The feeling of satisfaction from the progress will motivate and propel you forward.
At this point you are ready to unpack and dive deeper into various aspects of what you have built.
Checkout my detailed Beginner’s Guide to learn more about the step-by-step process of building your first web application.
3. Dive deep into the principles of software architecture
Once you have built an end-to-end app you will find that learning a couple of frameworks and libraries will be enough to keep you going. Most coding bootcamps stop here. But this stops short of diving into the richer and more rewarding world of software engineering.
I recommend spending time learning software design principles, object oriented programming and various systems architecture patterns. You will learn the details of how to cleanly and effectively work with databases, how to structure your code to enable more complex systems, different design patterns and architectures.
Software architecture principles are timeless and will support you throughout your entire career.
Some great books I can recommend here are:
Check out my overview on building large scale backend systems with event streams and stream processing.
4. Data structure and algorithms are super important
The importance of algorithms in software engineering can be surprisingly controversial. This is perhaps due to Silicon Valley tech companies relying on them in the interview process. It’s true that many professional software developers never look back at the algorithms that they vaguely learn in college.
That’s unfortunate. The reality is that deep knowledge of algorithms, just like software architecture are foundational requirements if you want to excel as a software engineer at the highest level.
(Check out the book Programming Pearls for some great practical thinking on this).
I hope this roadmap gives you some sense of the various aspects that you can focus on to learn programming and launch a career in software engineering. I have not provided a time estimate here since your progress will vary. Learning something new and complex takes time. If you stick with it, a rewarding career is waiting for you on the other side.
Subscribe to keep learning more
Sign up to receive exclusive updates and thoughts on learning how to become a Software Engineer.