4 Comments

Finding Your Path to a Second Career in Software Development

When I went back to school to pursue a bachelor’s degree in computer science, I found that I wasn’t alone. Even though I already had one degree and a few years of work experience, I went to study groups where I was the youngest person in the room.

Lots of people are investing in a second career, and for good reason. According to the Bureau of Labor Statistics, computer and IT occupations are slated to grow almost twice as fast as the national average and pay more than twice as much. The the ratio of open jobs to new grads with CS degrees is 10:1.

Of course, going back to college to get a degree isn’t the only—and certainly not the easiest—way to start a second career. I see three main routes, and I’ll present them on a spectrum from fastest to slowest.

Three Paths

The bootcamp

The first–and most expedited–route is a coding bootcamp. Bootcamps provide a short period of intensive training, usually with the promise of tech-stack mastery and a job at the end. Examples (which I do not endorse but have heard yielded positive outcomes) include Grand Circus and Hack Reactor

These bootcamps range from about six weeks to three months. They tend to focus on gaining highly sought-after skills and helping you with your job search.

The do-it-yourselfer

Secondly, there are go-at-your-own-pace online classes where you can learn how to build software. You can complete the course as either as a full-time self-directed study or in your spare time while you work in your first career. Subjects are a superset of what might be covered in a bootcamp, since you can mix and match courses and choose more traditional CS or math-oriented material that doesn’t fit neatly on a resume. Examples include Treehouse’s Techdegree program or Udacity’s Nanodegree.

The formal degree

Finally, there are traditional, accredited computer science degree programs offered by universities and colleges. This is definitely the longest and most expensive route, but it’s also the most thorough. It’s the route that I chose, though I’m not sure I’d make the same decision today. You’ll see a much higher focus on math and traditional CS concepts, and whatever you learn about current technology in the classroom is likely to be pretty far behind the industry.

A Few Things to Consider

Given these three categories with their strengths and weaknesses, how do you pursue a second career in a manner that doesn’t break the bank, doesn’t take too long, and imparts the skills and knowledge you need? There isn’t a simple answer to this question, but I have put together a few tips that may help, however you find your way into the industry.

1. Learn concepts, not technologies.

Computer science programs excel at this: In an academic environment, you will learn valuable concepts, maybe at the expense of learning technologies that are more relevant to what you’ll eventually use in the industry.

Although bootcamps help you add an impressive-sounding tech stack to your resume, they don’t necessarily give you the time to wrap your head around the concepts that you’re using. I remember interviewing bootcamp graduates who knew a tech stack pretty well, but completely lacked a foundational understanding of programming language concepts that would allow them to quickly learn other languages and solve thorny problems within that stack. If we were to put them on a non-Spring Framework project, they’d be like a fish out of water.

So if traditional CS degrees are on one side of the concepts vs. technologies spectrum, and bootcamps are on the other, I find that the online programs are in the “Goldilocks Zone.” While getting my second degree, I completed quite a few training courses from Treehouse and Udacity and found that they offered excellent quality at a cut-rate price. They teach new technologies with a focus on context and fundamental concepts.

2. Learn some math.

This is a chief weaknesses of non-academic programs. Although I don’t use triple integrals every day (or even since I took Calc III), spending a lot of time doing math is really good for changing the way that you think and reason. I was one of those students who didn’t think they could do math, and even when I got over my perceived inability while getting my CS degree, I wasn’t very good at it in terms of letter grades.

However, the hundreds of hours I spent learning math and going to tutoring were a huge part of teaching me to think in a programmatic way. It’s not the only way to learn, and you can still learn to program if you can’t pass calculus, but I have to say I found it invaluable.

It’s fine for the pursuit of a second career to be value-oriented, but I urge you not to overlook the value of things like linear algebra, calculus II, or discrete math. These may not raise eyebrows on a resume, but they will rearrange your brain in delightful ways and provide you with new ways of thinking about the hard problems you’ll encounter in the industry.

3. Find a community.

Bootcamps and universities have valuable built-in communities. Some of the online degree programs have this, but to a lesser extent since they don’t meet in a physical space. I cannot overstate how helpful it was to get help from other students and to teach other students the subject material we were learning.

Software development comprises a broad and deep set of disciplines and requires tons of extraneous knowledge. Working within a larger community is vital to tapping into the knowledge pool that no one person can be expected to have.

As a software company, we’re looking for people who are accustomed to and good at working with others. If you’ve been coding in a closet for a year and want to start doing it in real life all of a sudden, that might be a very difficult and stark transition to make. Find your community whether it’s in forums, in an open-source project, or a user group you find on Meetup.

4. If you want to make software, make software.

This is another area where those middle-of-the-spectrum programs excel: They teach you via making projects and give support for figuring out the futzy bits of gluing a tech stack together. When we evaluate candidates as software developers, it really boils down to one thing: Do they like making good software?

I’ll even say that more than the material differences in the three main categories of education I’ve laid out, there is one measure that best differentiates the outcomes you can get from any one of them: the amount of time someone spends making software.

It’s hard to evaluate a candidate (possibly for the reason that they aren’t a good candidate) who doesn’t have some software they can show us. If you’re going through school or bootcamp or plodding through online courses, know that what you make doesn’t have to be perfect or complex or use an impressive technology. Games written in Python or an iOS app that organizes your cat photos by emotion tell me what I want to know: that you love making software.

If you’ve arrived at software development as a second career, please leave a comment on how this advice tracks with your experience, or what you would add.