Planning out a software development career is hard at all stages of the game. There is no well-defined path to mastery for a developer, unlike other fields like medicine or law where you must get a precise degree with clear specialties. It can be terrifying since you’re never sure if you’re going in the right direction. Many people go to school to get started so they have a common basis of computer science, but even that is not a given. Even at school you can choose among many electives, and your internships and projects will shape the beginning of your career.
How to you know that you’re doing the right thing? In my opinion, the best way is to start working on concrete projects as soon as possible even if it’s scary. This will help you stay on track and will give you clarity on what you should specialize in. If you aim to progress in software development, specializing in a field is a must. Just learning skills at random is not an optimal strategy if mastery is important for you. You need to have a strong specialty and supporting skills if you want to be an effective and productive developer.
It’s hard to know what a job looks like if you’ve never done it before, so give yourself a chance to discover what’s going on. The same goes if you want to switch to a new specialty because you’re currently dissatisfied with your current line of work and feel stuck.
If you don’t have a job or internship and need to get started working, you can get involved in open source, work on your own side projects or join a group working on something interesting. Always stay curious and keep learning. If you come across something that you don’t understand, take a few minutes to do more research on it. You’ll learn what skills are useful in a way you would never get from a tutorial or a class and start making (and fixing) your own mistakes. For example, being able to do small modifications to images will always come in handy if you’re a web developer. Another good example is writing: new coders often underestimate the amount of writing that goes on when you work on large projects and have to communicate with clients and coworkers.
When you’ve been in motion for a while, you’ll be able to figure out better where you should go and what are the important skills you need to acquire to fill the gaps in your knowledge. At this point, you should write out a rough plan to map out where you really want to go. Often, one more programming language or algorithm is not the answer. Knowledge of an industry or soft skills like public speaking may be more important to you.
After a while, the natural learning you get by doing real work will most likely slow down once you’ve mastered the basis of what you need to do your job. You must make sure you keep learning regularly to move in the direction you want to go even if it doesn’t come from your job. You’ll never really get rid of all the gaps in your knowledge, but you’ll learn how take action and let the gaps take care of themselves. Experience will make this easier, like public speaking gets slightly easier with time but never really stops being scary.
Once you have enough tools in your toolkit, you’ll see that the coding itself is not the most important thing. The really hard thing is how to use technology to solve problems for real people in their businesses and their life. At this point, you’ll see that you’re still a beginner like most of us, since working with people is a lot harder than working with machines.