The Pitfalls of Proficiency
Brandon Corey
Mon Jun 10 2024
When I realized I wanted to become a software engineer, I had just graduated college. I began working as a marketing analyst at a large Tech company and was upskilling on SQL and general scripting via Python/JavaScript. I soon realized that I loved programming and building things. I've always been a creative person, and development scratched that itch for me.
Unfortunately, this realization occured after completing my entire undergraduate degree. There is some irony in realizing the career you want to pursue as soon as you finish your degree in something unrelated. At the time (early 2022), it seemed like everyone and their mother was getting hired as developers, which made things more confusing. It raised questions like: "Can I really do a three month bootcamp and become a proficient developer".
The obvious answer to that question is no. However, lacking proficiency and lacking hirability are not the same thing. This was especially true back then. So I was tempted with the prospect. The $$$ mixed with the "too good to be true" promises was what ultimately made me pump the brakes on a bootcamp, but the path forward did not become more clear.
It is no secret that aspiring software engineers face a very confusing landscape. I've noticed two main patterns:
- Predatory education
- A volatile ecosystem (at least in the web space)
The latter makes the former more effective. When there is too much to possibly know, predatory educators can take advantage of people's anxiety by promising to teach them everything, which of course, is impossible.
Three paths
There are three fundamental paths that people find themselves on when they want to break into the industry.
- CS/SWE/Computer Engineering Degree
- Bootcamp
- Self taught
CS
A Computer Science degree is likely the safest choice, especially if you are college age. In fact, if money is not an issue, I think this is by far the best option. Money doesn't grow on trees, but bootcamps are not exactly cheap either. When taking this into consideration, CS degrees stack up well.
The main issue with a CS degree is a similar issue that plagues many higher education programs: a lack of practical skills. "Practical skills" does not mean learning the fourth frontend framework to come out this week, but how to program general. Opportunities to actually program can be lacking in many college programs as they are more theoretical in nature. These programs certainly won't fully prepare you for the wild west that is the modern web, but little will.
With that being said, learning the fundamentals provided by a degree and becoming a better programmer down the road is a far better choice than than some of the alternatives. Employers also recognize this, which is why CS grads are still prioritized by most companies.
Bootcamps
Bootcamps suck. Okay maybe not all bootcamps, but a vast majority are absolutely horrible. The idea that one can develop any level of proficiency as a dev in 3-4 months is ridiculous. This is not and never was the case. However, in the past, employers were so desperate for engineers that they would throw an offer at anyone who knew a bit of React. Bootcamps will cover the latest and most popular tech (kinda...), but this is wasted on beginners and makes things more confusing for them. Learning solutions to problems before you understand the problems themselves is not a good way to go about things.
Now, I attended what most would consider a bootcamp, and I believe it is a great program. However, that specific program took me 2 years to complete start to finish, and it takes some people 3+ years. As a result, I was able to sit with the concepts and let them sink in before moving on. I was not in a time crunch at all, and I was never promised an easy or quick path. I was actually told the opposite. I was writing client side applications using the DOM API and handlebars before I ever looked at React. I was writing full server side applications using templating engines before that. I wanted to understand why things are done a certain way, and be able to have opinions on them.
This is antithetical to what most bootcamps will teach you. Learning problems before learning solutions is something that typical bootcamps do not have time for.
Self Taught
This is a very difficult path. The issue with self teaching is not that lack of great resources out there. They exist. The issue is the reality that "you don't know what you don't know". This is why curriculums were developed in the first place.
You don't know what you don't know. - Sun Tzu
It is very difficult, as a complete beginner in the field, to have any idea what to be learning. Even devs with large amounts of experience would struggle to cook up an optimal curriculum. Most people are not great teachers. It is no wonder why there are countless "How I would learn to code again if I had to start over" videos on YouTube.
For these reasons, I think self teaching is reserved for a very few, incredibly driven people. It will take longer, as discovering what knowledge is needed, and when it is needed, will require as much effort as learning it.
The Third Pitfall
I mentioned two main issues with learning development earlier. There is a third one. The motivations for becoming a developer in the first place.
There is an alarming number of people who turn to software development as a get rich quick strategy. They view it as an easier way to advance their careers, despite not having much interest in tech. These are the people that are preyed upon heavily by influencers and bootcamps.
This is also the easiest pitfall to avoid. This may be a hot-take, but if you are not moderately passionate about the industry, it is best to look elsewhere. This can be viewed as gate-keeping, but in my opinion, everyone should aim to do things in life that they enjoy and are passionate about. There are other avenues to advance a career and make money that may be more suited for people who do not enjoy programming or software.
There is nothing particularly glamorous about software development. The boom of "A day in a life" content glamorizing SWE roles convinced many otherwise. In fact, it can be incredibly boring. Sitting in front of a screen staring at an error message is not very exciting. However, if you are not the type of person who gets excited when you solve the error, then there may be a problem.
The Solution?
The sad truth is that there are limited options for learning software developement in a directed manner. College is great, but there are obvious reasons why it may not work for someone. Most bootcamps are horrible, and self teaching is difficult and can waste a lot of time.
If I had to suggest a path for a younger person who does not have a degree, or has a STEM undergrad, I would say go for a bachelor's/master's in CS. If you are like me and are not in that position, I think avoiding most bootcamps is a good idea. If anyone reads this, the program I did, Launch School, is high quality. But, it would be disingenious to say that is suitable for everyone. It is not. I will probably end up writing a post about Launch School, but that is not the topic here.
Ultimately, many end up bumbling and stumbling their way down a path that leads them to proficiency. And those paths can look quite different. One of the best things about the industry is that you can arrive at the same place as someone else with a wildly different journey, in the same way that you can solve an engineering challenge with many different approaches.
CS degree | Bootcamp | Self taught |
---|---|---|
Good for young people | Good if you have professional or tech adjacent experience | Good if you're wicked smaht |
Good if you have the money | Good if you went to an elite college | Good if you're organized |
Good if you have the time | Good if you have a STEM degree | Good if you're incredibly motivated |
Safest bet | Launch School was very good to me, but takes 18-36 months | |
Gives you internship oppurtunities | ||
Looks good on resume |