Over a million developers have joined DZone.

Every Programmer Is Self-Taught

Why a computer science degree is not the only way to become a developer, because every developer learns a lot working on their own projects.

· Agile Zone

Learn more about how DevOps teams must adopt a more agile development process, working in parallel instead of waiting on other teams to finish their components or for resources to become available, brought to you in partnership with CA Technologies.

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.

Discover the warning signs of DevOps Dysfunction and learn how to get back on the right track, brought to you in partnership with CA Technologies.

learning at work

Published at DZone with permission of Cindy Potvin, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}