I've come across a lot of discussion lately about the best path to becoming a developer. Unfortunately, often this is focused on disparaging one path over another. For instance, I've seen comments that bootcamps are a waste of time and money and I've seen similar talk about obtaining a CS degree from a university.
This fits an unfortunate pattern common in the developer community whereby some people deem that there is one "right" solution to a problem. Each of these paths has pros and cons and which one is right for you depends largely on your goals (both short and long term), your finances, your time and your interests. There is no wrong way, in my opinion, but there may be options that better meet your specific needs.
It's important to consider that each individual's motivations for becoming a developer are not the same. For example, Evans Data found that, on average, women are more likely to be motivated to "develop my skills and challenge myself" while men are more likely to cite wanting the skills to support a startup or new business. Both are legitimate motivations, but can impact an individual approach to education.
In this post, I'm going to lay out the three most common educational paths to becoming a developer in a broad sense and try to give an even-handed look at the pros and cons of each, from my point of view.
College Degree
A college degree with a major in computer science or a similar topic of study is the most traditional path to becoming a developer.
Pros
- Many jobs require a degree - Do you have to have a degree to become a developer? No. But there are still many positions at companies that have a baseline requirement that you have a degree - often specifying a BS in computer science or related field of study. Many notable companies have dropped this requirement, but even when it isn't a requirement, it is often listed as "preferred."
- A well-rounded education - The thing about a college degree is that it is about more than just coding. This may seem like a waste of time when you are young, but, in my opinion, has benefits that last well into your career. Speaking from experience, you may not know where your career will lend you and some of the skills you'll learn and interests you may develop in college can be beneficial in the long run (for example, studying history and creative writing in college built up my writing skills that have led to career opportunities later in my career).
Cons
- It's the most expensive option - According to the College Board, the average yearly tuition in the US for 2018-19 was $10,230, meaning a degree will cost over $40k over 4 years. It's important to note that about 3/4 of students receive grants and scholarships that mean that they don't pay the full tuition, but it is still likely to be very expensive and this cost may be out of the range of possibility for you.
- It takes a long time - Sure, you can finish in less than 4 years, but 4 years is the norm. If you are working already to support yourself or your family, this will only extend the amount of time it will take to complete a degree as a part-time student.
Keep in mind that an alternative path here is to study an unrelated field but still get a job as a developer - I have met many developers with non-CS degrees in the industry (myself included). However, you'll likely have to combine your degree with one of the other paths below.
Bootcamp
Bootcamps are a relatively new concept in developer education, with some of the first ones being founded in 2011-2012. While there is no accepted definition of a bootcamp, they generally last anywhere between 2 and 6 months (the average is about 14 weeks).
Pros
- They are the quickest option - Even a lengthy bootcamp at six-months would be significantly shorter than a college degree. It is also very likely shorter than the amount of time you'd have to invest in a self-taught program, if only because you follow a designed curriculum and generally attend full-time, plus you leave with some form of certificate while being self-taught will require you invest time in proving your qualifications in other ways (building a portfolio perhaps).
- The focus on code - Because they are designed to move quickly, bootcamps are very focused on getting you hands-on coding early and often. Most programs work on projects that students can then present as portfolio items when they leave complete the program.
Cons
- They are expensive - According to the 2018 Coding Bootcamp Market Size Study, the average price of a bootcamp is $11,906 (with the average length being 14.3 weeks, that's well over $800 per week). While significantly cheaper than a college degree in terms of overall cost, a bootcamp certificate arguably has significantly less value, especially over the longer term.
- Job placement can be difficult - Recent surveys indicate that, while a majority or graduates (56.8%) have employment within 12 weeks, only about 75% of those without a college degree end up employed in the end (while other numbers are higher, I use that as a point of comparison since we are speaking of Bootcamps as college degree replacement). I will note that most major bootcamp programs offer job placement assistance of some kind.
There are over 100 different bootcamp programs around the country. Given the cost and time investment, it is worth doing your research on each program's success rate in terms of job placement and curriculum.
Self-taught
Self-taught is a broad category since it covers everything from online classes to books to any number of alternative learning methods one can find.
Pros
- This is the least expensive option - The cost obviously depends on your choice of learning path. It can be anywhere from $0 if you take advantage of a variety of free online learning options to several hundred dollars to subscribe to courses at Udemy, CodeAcademy or Pluralsight, to name a few popular options (based on a yearly subscription or multiple courses).
- You are in control - If you are the dedicated, self-motivated type of person, then the lack of a specific curriculum or time to completion can actually be a big benefit. The "curriculum" is up to you and can focus on your specific areas of interest. How long it takes is really just a matter of your time and dedication, which can be made to fit into a schedule that still accommodates work and/or family.
Cons
- No placement assistance - What does it take to meet the qualifications necessary to get a job as a developer when you are self-taught? There are no clear guidelines and they are likely to change depending on the company. This is complicated by the fact that you are on your own in terms of job placement while colleges/universities and bootcamps have resources and recruiting partnerships to help you in your job search.
- You are in control - As much as this is a pro, it can also be a con. What's the curriculum? Up to you. How much time do you need to spend? Up to you. How long will it take? That's unclear. If you struggle with motivation or finding the time to complete training and courses independently, you may never gain the momentum necessary to get you to the point that you are ready to start your career.
It's probably worth mentioning that the self-taught option is something that can be combined with any of the other options, especially as the costs are low. In fact, it should become part of any developers continuing education throughout there career, regardless of how many years you spend in development.
Share Your Experiences
While I did share some research, much of this is based upon my own opinion and experiences and are purposefully generalized. Your own perspective and experience may be different. I'd love to hear about your education journey towards becoming a developer - share in the comments!
Top comments (17)
This may sounds a little controversial, since I worked at big companies and small startups:
For big tech companies that everyone wants get into:
If you have a degree from a top Computer Science college, you'll most likely move to the front of the line for job interviews (or even get pampered internships from top schools before you even graduate.) These big companies have dedicated on campus recruiting teams at these big colleges that throw parties, host events "free pizza", identify you probably as soon as you chose your major, collect data on you and recruit you. That is why Google and Facebook engineers are dominated engineers from top colleges.
Nowadays, at big companies, they will hire bootcamp graduates, but they will be on a different career track almost immediately. Some big companies have "apprentice" programs. But the expectations will be very different.
Self taught, usually you have some project or open source project that have some traction, then you would stand out to big companies. It is only ver recently many of the big companies removed college degree as a requirement.
For smaller companies:
Although any one can be a developer if you can develop a product!!! Practice and practice.
My experiences and observations generally align with your. Most big companies, even if they've removed the requirement for a CS degree, still heavily favor them. In my own career, I've encountered positions that I could not be considered for even though I have a degree, just because my major was not computer science.
I think this is where your motivation really matters. If your goal is to work at a major company as a developer, then the safest path is probably still the CS degree. That being said, I know plenty of people who did make it into major companies (myself included, having worked for Adobe) despite the lack of a CS degree, but this required years work and experience that compensated for the lack of a CS degree.
Just to be up front moved from a CompSci+Eng to just a Eng degree. I've been writing software almost 20 years and have played a part in hiring for 10+ years of that. I've worked in startups (usually leaving when they hit ~50ppl) and various other companies of 10-150ppl. In all these jobs we integrated with large multi-nats so I've experienced that, too. I grew up and got my degree in Australia and have worked in the US a while.
I got a degree in essentially physical engineering. Electronics, power electronics, semi fab, ASICs, control software, etc. I trained myself in writing code to write an online store for my employer at the time. I took a full time software job with one of the companies we supplied at the time once they found out I had created the store. It was after the first bubble so tech jobs were really difficult to find.
My first job was with a crew of self-taught developers - I found so many SQL bugs because they'd learned SQL but didn't really understand it.
Since then I've gotten every job I've had via word of mouth. After your first job it really doesn't matter what your qualifications are if you are networked and represent yourself well and do good work.
If you want an international career you will need to get a degree from a decent school unless you get a decade of experience and find a willing employer. It is possible to circumvent this but a degree makes things easier.
Outside of this one of the best developers I worked with did a semester of a biology degree and then taught themselves. The worst developer I ever worked with also was self taught.
You sort of hit on the main differential I've see between someone with a degree through to self-taught and that is breadth of knowledge. Depending on the quality of the school you'll generally get a wider knowledge than someone who teaches themselves and absolutely more than any bootcamp. You might not have used those skills enough to be practical but when a problem arises you are more likely to be able to find an existing pattern/algorithm or practice. You're also more likely to be able to differentiate between solutions as the problem sets get more complex.
I see bootcamps only as accelerated self teaching. They get you more quickly to the point where you can teach yourself but do not seem to give nearly a broad enough understanding of software development, computer science or anything else to be useful without further learning. College suffers the opposite problem in that they teach you a broad range of knowledge without necessarily seeing how to use it in the real world.
What I would say is that if you have a college CS grad they might have some lackluster skills but you typically have a large amount of shared understanding. With a bootcamp or self-taught person you quite often get hit with surprise gaps in their knowledge.
If a company has the resources to really hand-hold new recruits then I don't care about schooling as much as their demonstrable skills, ability to learn and their motivation. If the company has limited resources to train new developers then typically college graduates are easier because there is a shared understanding of knowledge.
From my experience, developers that have a degree turn out to be either really good developers(developing is their true passion) or really bad developers(meaning they started developing because it pays high - not for passion). I'm 100% self taught and I haven't had a hard time finding good paying jobs. In fact, I often make more than my college degree holding peers simply because developing IS MY PASSION. I started using Linux, terminal, upgrading/fixing computers etc., by my early teens. I did attend college for one semester but I quickly got discouraged when my computer science teacher didn't know what "pointers" were. Pointers being a common feature in most languages that is derived from the c language.
You are right!
I was basically love the computer. Did not decided. Got first computer since 2007.
At that time I was a teacher of Desktop publishing software like Photoshop, illustrator, page maker, corel-draw etc. It was my Bachelor's of commerce part time jobs. I was good at photoshop so I have decided to think on animation courses for being a animator. But when coming to metro city of Kolkata in India that time 3d animation production houses were not there.
So I moved to web designing course and convert myself as a Graphic and html designer. :)
Now I am experienced 8 years of experience in this IT field as a Senior Fullstack developer.
I am telling my story that I have few friends who has MCA degree but getting salary less what I take. And even they are not a passionate developers who fixes issues. They just completes their degree for jobs.
I was passionate with computer and I have even done computer chip level courses and mobile chip level and can repaire computers and phones. Do you imagine it's just for knowledge, I did this courses. I did not do it for job. I just want to know how these things works. And it helped me.
Interesting post and interesting responses. Having been at the same company for many years and not been involved in the job hunt scene for quite some time, I often wonder what it's like out there and just how much these things matter.
My own route was a mix: Self taught as a teenager and that naturally transitioned into college once I started post-secondary. However, I only did a 2 year diploma program, not a 4 year degree, something that I sometimes regret on a level of "It would be nice to have a little more education/and also be nice to be able to say I have a degree" however it hasn't held me back career-wise at all so far (knock on wood!) I did get some of that knowledge breadth in college but I can't help but wonder how much MORE breadth I might have if I had done a few more years.
That said, everyone in my program at college seemed to wash out and end up moving on to a non-dev career unless they were also self-taught to some degree. I don't feel like college was the place to actually learn how to become a practical developer, it was more a place to teach theory, history, best practices, and nurture people who were already doing a lot of this stuff on their own time. It feels like this is an industry that you need to either do a lot of learning on your own time, or else have some kind of apprenticeship or articling approach, in which you take courses but are also required to learn on the job with mentors, maybe similar to how the CPA program works.
I have worked with some really sharp devs in the past who had no formal education and left me totally in awe of how talented they are, so there's definitely many ways to excel in this industry, which is pretty special. It feels like so many industries have hard requirements in terms of education so it's great to work in a field where there IS that flexibility.
I feel like CS is more focused on the things surrounding code like project management, design patterns, documentation & programming concepts where as boot camps (& self thought) are more focused on just coding and not the surrounding concepts around programming which are required for large scale applications. Correct me if I'm wrong.
I have done neither a CS degree nor a bootcamp, but based on what I've seen, it seems that CS programs try to teach many of the broader concepts of programming that, while taught with a specific language (sometimes a bit outdated), apply across most application development regardless of language.
Bootcamps seem much more task-oriented. You are building a project using specific languages/technologies to learn how to use those technologies. It seems less about the overarching programming concepts since the end goal is to become a developer in those specific languages, though many students may grasp that on their own.
Great article as always Brian. When it comes to Bootcamps I would suggest you do your research on the Bootcamp you're interested in. A lot of them will boast about numbers but don't actually report to anyone to verify them. At Tech Elevator we have a graduation rate of 93% and of those graduates a 91% placement rate. Not all Bootcamps are created equal but if you can find a good I really believe in them (us).
There's a 4th and HUGE option... attend a Career Tech/VoTech High School that offers Software Dev(or some variation) as a career pathway.
Thank you, I was going to mention this. I currently attend a Technical College and they give you hands on coding experience, and not only that, they usually often talk with employers to see what they would like you to know and tailor the programs around that. Also, they cost a fraction of what Universities cost and a full time student is done in 2 years. For working people they offer night classes and certificates (1 year). In addition, they help you with job placement like the Universities.
Great to hear. I had not considered that option. It'd be great if you or @mj Lokes posted about your experiences. I have never encountered anyone who got into the career this way or heard much about the programs and I suspect I am not alone, so it'd be great to hear from folks who have been through it to make people more aware of the option.
Yes! I was looking for this. I took an 11-month Web Development program. This included a web development certification. Our teacher helped us build up our portfolio with plenty of real-world projects for charity/non-profits (which is more important than the certificate, imo), and she networked within the community to find jobs for her students. I worked as a waitress during this time, and I was able to complete the program with no debt and a career in the field.
I consider myself a self-taught developer, I started when I was 14 years old, the idea of being able to control the computer through commands seemed very promising to me, I made some small tools to solve my math homework, I quit studies after I got my high school diploma, landed my first full time job as a developer a year later, I needed to invest in an online certificate to show my capabilities, I chose w3schools, that was around $100, I worked for a year, then I quit, I'm now attending an in-person entrepreneurship bootcamp, to start my own business, but that's a different story.
I am mostly self taught. I went to school for a "Multimedia Development" diploma which taught me very little programming. I have taught myself all that I know about development through either youtube tutorials, side projects or at work. I have been in the industry for around 13 years now.
I have worked at small startups (2 - 3 people) and at larger companies (200+ people) and have helped hire at both. In my hiring I have never taken a CS/Bootcamp degree into consideration. To me schooling does not make a good developer.. What makes a good developer is someone who is humble, interested in tech and interested in learning. I tend to find a lot of (not all) student who come out of a CS program lack these and are more interested in the industry because of the pay.
My advice to people looking to get into the industry is always to network. Find people in the industry and connect with them. Whether that is through meetups, LinkedIn, Twitter, whatever. The more connections you have, the better off you are.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.