A huge reason that we are so passionate about the developer community is there isn't a singular path that developers have taken to get where they are now. One might expect that a career as technical as software engineering requires the right CS degree and the right technical experience, but this couldn't be further from the truth.
According to Stack Overflow's 2020 Developer Survey, only about 60% of college-educated developers actually got their degree in Computer Science. However, over 80% of developers still think that some kind of formal education is at least somewhat important in your success as a software engineer.
At the same time, the internet is filled to the brim with informal development education, including youtube tutorials, forums, and personal portfolios.
It is therefore worth taking a deeper look at the different ways developers learn, as well as the benefits and drawbacks of each.
As stated before, despite all the different resources, the majority of professional developers still hold some kind of computer science degree. The Stack Overflow survey does in fact put to numbers what most developers know to be true: That academic classes can only teach you so much. Only about 10% of developers said that formal education was critical to their job.
Among many developers, formal classes are generally regarded as a pretty strong way to learn theoretical CS concepts, but not necessarily the best method of learning to apply these concepts. For example, one can ideally expect a developer who comes from academia to have a very strong grasp of topics like algorithms, data structures, and time complexity. In addition, when it comes to constantly evolving subfields, like Artificial Intelligence and Cybersecurity, many CS students have the opportunity to conduct academic research.
While academic experiences are obviously going to differ from institution to institution, there is generally a lack of real-world application of these concepts. A developer who exclusively learns through academia may therefore not be incredibly strong at building real software.
Those for whom academia is too costly or time prohibitive often turn to online tutorials and courses for the equivalent theoretical education. Sites like Youtube, Udemy, and Coursera offer thousands of different courses on the same sort of theoretical topics that one would study at a university. Though it may not have the same prestige to many hiring managers, these courses are almost always free or only cost the price of a nice dinner.
In addition to these theoretical topics, online resources can teach programmers about new and specific languages, technologies, and frameworks that usually aren't covered in a college curriculum. Online courses and tutorials are therefore essential to keeping up to date with the latest trends in software engineering.
As with Academia, there is a risk with online courses and tutorials of only being able to regurgitate what you learned, and not actually apply it to real projects. One should therefore not expect to be ready to code professionally with a technology after watching a two-hour course on it.
A nice midpoint between the credibility of a degree and the accessibility of online resources is Coding Bootcamps. These programs are typically only a couple of months long and are a fraction of the price. In addition, they tend to focus more on teaching marketable tech stacks rather than theoretical concepts.
Bootcamps are especially great for people looking to make a career switch without the full investment of an additional degree. The major drawback is that while it might help you land your first development job, by giving you a working proficiency in the most popular web framework or database technology, a Bootcamp alone won't necessarily help you keep that job.
Being able to succeed in a development role often requires fundamentals that aren't hidden beneath the latest technology. For example, knowing how to use ReactJS without a strong foundation in HTML and CSS can only get you so far. While that certainly doesn't diminish the educational quality of a Bootcamp, you should just have realistic expectations of what you are going to get out of it.
There are few professions where project-based learning is as accessible as it is for software engineering. One of the best ways to learn how to do something is to just do it. The issue is that if you want to be a doctor or a mechanical engineer, accountability and financial constraints are often going to prevent you from getting real-world experience. In contrast, all you need is a working computer and an internet connection to get real-world experience building software.
Working on pet projects is an amazing way to work through the actual kinds of problems that you would encounter on a job. While its value may sometimes be harder to convey to a hiring manager than a GPA, that real-world experience is going to be instrumental to the value you can bring to a company. And hey, you never know, your next pet project might become the next billion-dollar company, like Github or Facebook.
The one thing that people should be hesitant about when relying on personal projects is only programming in a way that gets the job done, and not necessarily in a way that gets the job done well. It's great that you made a cool Web App that works, but if all your code is inefficient, horribly documented, and riddled with security vulnerabilities, it might be worth learning some more fundamentals. This kind of coding style might be fine for your pet project, but it is probably going to make you a nightmare to work with.
A huge way that programmers learn that often gets taken for granted is participation in developer communities. This can come in a number of forms:
- Asking and Answering questions on Stack Overflow
- Participating in Open Source projects
- Writing and Reading developer blogs on platforms like Medium and Dev.to
- Keeping up to date with the newest technologies and trends on Reddit, Twitter, and Hacker News
Even if you already landed your dream job, participating in the community is an important part of being a developer and an important part of sharpening your coding skills.
As the Greek historian, Plutarch once said "Education is the kindling of a flame, not the filling of a vessel". Learning is a lifelong process, so staying active in the community through methods like these can make sure that you are always learning.
So is there a singular right way to learn to code? Probably not, but there is certainly a wrong way. Relying on either exclusively theoretical education (Academia, Tutorials, Bootcamps) or exclusively application(Projects, Community Participation) is going to limit your success as a developer. A strong developer is someone who has both a good grasp of theoretical concepts and has the ability to apply these concepts to real-world software.
Thanks for reading! What do you think? Is there a right way to learn to code? Is there a wrong way? How'd you learn?
To learn about how Codesphere is revolutionizing cloud services, you can check out Codesphere.com. :)