Self Taught Is Not the Easy Way

Disclaimer: I do not have a traditional background or much formal education at all past high-school.


There are new variations every day of people asking the same question, “Do I need a (CS) degree to have a career as a software developer?”

They are always answered similarly, “No, but it helps, mostly if you want to go into management or work for a company that requires a bachelors one day.” Sometimes someone will mention something about theory or fundamentals, and I think those are correct too, but none these replies fully answers the question, in my opinion.

With the number of people asking that question, it would suggest that people feel that it would be easier to become a software engineer without having to go to college or that there is a shortcut available.

That is not the case. Being “self-taught” is the hardest path to establishing a career and while it is true that good programmers are often ’lazy’, someone predisposed to this way of thinking is not likely to enjoy programming even if they were able to establish a career.

Who’s Asking?

The answer to that question is going to be highly dependent on who is asking and I find that most instances of this question being asked, the OP will be one of the following:

  1. Career Starters - Limited work experience, college-aged, recent high school graduate
  2. Career Switchers - Potentially many years in the workforce already, typically late-20s and older, if they have any college education it is likely unrelated

The Value of a Formal Education

Whether or not a formal education is worth it to you can only be decided if you are realistic about exactly what that education has to offer.

A huge portion of the value of a formal education comes from the work experience gained from internships and access to a network of people all doing what you do right out of the gate. This is arguably more valuable than the degree itself.

When you go to a university for a bachelors degree in computer science, there is a path that, if you follow it, you will most likely find yourself doing professional software engineering about 5 years later.

The Value of Internships

IT professionals can sometimes get a foot in doing help desk or similar grunt work by leveraging customer-focused work in other fields. When it comes to software developers, however, this type of entry-level job simply does not exist.

Except perhaps through nepotism or significant struggle, almost nobody gets a job in software engineering with 0 years of experience, regardless of what degree they’re holding.

Consider that if you go to a four-year school, where each summer you do a three-month internship, then by the time you graduate you will have a degree and twelve months of real-world work experience.

That year of combined internship experience greatly reduces the risk of hiring you from the employer’s perspective since they will be able to assume you are, at the very least, socially well-adjusted, have a desire to be there, and that you have developed a basic understanding of what a software development life cycle looks like and how the teams are organized.

The people who complain that a university degree program teaches no skills relevant to the job are largely overlooking this aspect of a formal education.

The Value Of Degrees

That ‘piece of pape’, as to which you often hear it being referred, will, in theory, tell prospective employers you have the aptitude for the kind of problem solving requird in software engineering.

The most important thing to understand, for someone in either group, is that you are not rewarded with a career, nor do you deserve one, for simply completing a CS degree.

I understand where that thinking comes from because its basically what we have been telling kids for a long time now: “Go to college and everything will work out fine”.

High school students need to understand this so that they are able to receive all of the value available to them while attending a university so they will leave with not only an education and degree, but also a chance at even applying it.

Career-switching adults, especially if they have not had a life-long interest in computers and technology up to that point, need to understand this so that they do not think the promised land awaits just on the other side of obtaining the degree. I usually tell these individuals that they should try to have a foot-in-the-door job before they graduate, as the opportunities to network will stop dropping off after that.

Catch-22

Career-switching adults also have an additional problem: most of them are already working full-time and cannot afford to do summer internships. I don’t have an easy solution for this. Switching careers in this way is very difficult. There are still some opportunities to get your foot in the door with IT-focused jobs but it has become virtually impossible for software development.


My Own Experience

I will close part 1 with my own experience with formal education…

I would fall into the second group of career-switching adults. I was 27 when I decided I was going to start leveraging my interest into a career. My obligations by then made it unrealistic for me to try to get the full university experience. That ship had sailed and I think it’s important to be realistic about these sort of things.

I ended up with my own degree, an Associates In Science Computer Information Systems from St. Petersburg College mainly because I had started it and wanted to finish it. My initial motivations were almost exclusively about networking. I did not know many people in the area, especially technology professionals, so I figured if I went to school I would at least hopefully start making some connections that could land me a job.

The program itself was disappointing and I got more out of the general classes than anything else. I do really question these “applied” programs. I always told my classmates that these programs do not teach you nearly enough, fast enough. The classes themselves eventually became a chore and the materials structured in such a way that even if you were familiar with a subject, the coursework was time consuming.

I eventually started taking 4000-level classes as part of their Technology Development & Management degree and these I actually found to be beneficial. I was able to choose a software engineering track and of course, I did all these classes first since most of the rest looked quite boring. This is where I was able to take Datastructures & Algorithms and friends. That ended up being purely for myself though because I stopped attending with nearly 50 credits still needed for the bachelors.

Due to my goal of network expansion, I would participate in any extracurricular group or activity I could find and about one year into my time there I was at one such activity and a lucky meeting with the person who would hire me into my first platform development role a couple months later was all I needed. I worked at the company for 3 years and eventually finished the associates program 2 years into that, mainly just because I had started it.

So, degrees have done very little for me but the networking opportunities provided by schools has done a lot.