Every programmer is self-taught
There are many ways to become a programmer beside getting a computer science degree. If you’re on that less conventional path, you may be wondering what you should do to catch up to people who do have a degree. How can you compete with someone who spent many years in a classwork learning about computers and programming?
In my experience, there is no such competition: what matters is what you can do with the skills you have. There are various paths to becoming a developer. In fact, nobody learns how to be a web developer or an Android developer from school, except maybe at bootcamps.
Everybody working with those technologies is largely self-taught and improve on the job and during their free time. I took many classes related to computers during my electric engineering degree, but few of them featured web development specifically. Maybe you’ll get a class or two or an elective on these subjects, but this knowledge will most likely be outdated by the time you use it.
Well, if a degree does not teach you a specific niche like web programming or mobile development, what does it teach you? The role of a degree is to make you a generalist with a broad array of programming and computer-related knowledge. You’ll learn more about subjects such as maths, databases, algorithms, networking, programming patterns and languages.
You won’t be an expert in any of those subjects: you’ll know that they exist, but you will need to perfect these skills and use them in the real world for them to be really useful. On the other hand, all those skills are a useful toolbox you can dig in when you start a project and need to solve new problems. You can use what you learned as a starting point to go deeper and improve your knowledge as needed.
If you didn’t learn this at school, nobody is stopping you from acquiring this knowledge in other ways, such as online classes or books. There is nothing different about the knowledge you get at school: the focus on learning makes it easier to progress at school , but you can learn by yourself.
Those skills will really stick when you start using them to complete real projects. You’ll start specializing a few areas based on your interests, your job or a deliberate plan and grow from there. You’ll be part of a team where everybody has a different mix of skill and knowledge to build on. It would be boring and ineffective if everybody had exactly the same background!
What you learn in school is incomplete anyway. You’ll work on tiny projects to master specific concepts, but in real life you don’t stop after you shipped the first version. You’ll learn how to handle maintenance, bug fixes, deployment and how to work with a team across many disciplines. You will keep learning new skills for every project you start working on and every bug you fix.
What’s important is learning how to learn so you can always catch up on a subject or a new technology as needed. It’s easier if you keep learning a bit all the time and build a habit to learn, but it’s never too late.