You do not need a Computer Science degree to become a Software Engineer

You can become a Software Engineer without a Computer Science degree.

It's also possible to become a Software Engineer without a college degree at all.

Let's cover pros and cons of two of the most common, non-traditional paths to becoming a Software Engineer: bootcamp programs and teaching yourself.

Bootcamp Programs

One path that has gained popularity since the rise of Dev Bootcamp circa 2012, is the bootcamp program.  While this model was popularized by Dev Bootcamp, there are several schools that have since put together similar programs.

Bootcamp programs are short-term (usually 2-4 months), intensive training programs that teach you the basics of software development.

Pros:

  1. Time - these programs pack a lot of information and experience into a relatively short time period.  They have found a program that works - you won't be meandering through the internet just trying to figure out what you need to learn.
  2. Experience - you will be using the same software development tools and agile methodologies Software Engineers use on a daily basis.  You'll be working in teams and learning to productively communicate and collaborate.  In my experience, bootcamp programs place more emphasis on this than traditional college courses do - you're generally doing this every day and even from the very beginning of the program.
  3. Mentorship - oftentimes, these programs pair you with a mentor.  It is a nice way to tailor the experience to you and your needs.  You will get one-on-one time to have your questions answered and get the guidance and coaching you specifically need.
  4. Employment - these schools typically partner with corporate sponsors that will hire you as an entry-level Software Engineer after successful completion of the course.

Cons:

  1. Time - yes this was also a pro - unless you've found a program that happens to be designed to be part-time, you're going to be spending every waking hour on learning, studying, practicing, and building.  More than likely, you'll need to quit or take time off from your job if you already have one.
  2. Cost - according to bestcolleges.com, the median bootcamp program cost in 2020 was $13,579.

Teaching Yourself

The cheapest way is to teach yourself.  And it can be done - there are plenty of success stories out in the wild - I run into these folks on a pretty regular basis.

Pros:

  1. Cost - there is no cheaper path (in terms of money) than doing it yourself.
  2. Exploration - you can try different technologies, stacks, and disciplines and figure out what's most interesting to you.  You can try different learning materials and figure out which best suits your learning style.

Cons:

  1. Time - you'll be spending time trying to figure out what it is that you need to learn, finding the materials to learn it, and then you could be left not knowing if you know enough.
  2. Isolation - it's likely you won't be gaining experience working in teams and collaborating with others.  Even if you do find a way to incorporate these into your learning plan, you're unlikely to place enough emphasis on them.
  3. Mentorship - unless you seek out a mentor on your own, you're unlikely to have this valuable resource.  You could be missing out on one-on-one time with a person that has real-world experience in Software Engineering and can answer nearly any question you have.
  4. Completeness - it's easy to overlook certain tools or knowledge that are necessary to becoming a Software Engineer.  Put simply: you don't know what you don't know.

What path is right for you?

You'll need to consider what your timeline and constraints are.  Do you have the time and money available to attend a bootcamp program?  Would you prefer to explore before committing?  Learn at your own pace?

To those that have considered these paths before - what did you choose and why?  How did it work out for you?

Want to learn more?

Check out some of the best reasons to become a Software Engineer - and - some of the not-so-great things about being a Software Engineer.