Should I get a Computer Science Degree?

By: David Boland

development

technology

ai

Recently a friend of the family reached out asking if it was worth getting a computer science degree. At the time my thoughts were scattered. I had a million other things going on, and I could tell at one point I was just rambling. I decided to follow up in an email, with my thoughts written out and organized. I figured it's valid information regardless of the audience, so it might be worth sharing.

This is all based on the assumption you want to get more into software development. If that isn't the case, or some of these points aren't clear, feel free to leave a comment and I can follow up.

I broke things up into two categories:

  1. Career
  2. Education

Career

Risks

First I wanted to mention some risks to the software development field that will probably only get worse over time.

Outsourcing

A lot of development jobs are going overseas. Countries like India, Poland, and many South American countries have tons of really strong developers. Companies in the U.S. still need developers locally. They need senior resources with good communication skills to coordinate with overseas resources. Also, lots of customers and clients prefer working with local resources. When production changes need to be made quickly or a client likes to move quickly, it helps to be in a similar timezone. So while a lot of jobs are being taken, there are still opportunities.

AI

While AI is getting a lot of hype right now, this is probably less of a risk to software development jobs. AI is getting pretty good at writing small chunks of code, but large applications are made up of hundreds of thousands, sometimes millions of lines of code. Having AI understand requirements and be able to write, and more importantly find bugs, with that amount of code is a long way off.

Side note: You will probably be tempted to use these AI tools in school. AI can make a good coder much faster. But it will probably hurt in the long run if you rely on it too much early on.

Career Ceiling

There is good money in software development. But it is worth pointing out that as someone who writes code, you will probably hit a ceiling after about 7-10 years. At this point you will probably not have as large of salary jumps, and your experience (unless it's with a very niche technology) probably won't be worth much more than someone with 5-7 years of experience. This is just what I have noticed, but others may have had other experiences.

The way most developers get past this is either by getting into Sales or management. Both are sought after skills in tech, because most developers prefer to be heads down and left alone. But if you are more driven, and willing to work more on the people side of things, you won't hit any ceiling.

This is not something that is communicated well early on, so I wanted to bring it up.

Education

Picking a School

If you do want to go the development route, don't worry too much about rankings when it comes to schools. The exception here would be if you are trying to get into a Google or Amazon. They tend to look at the top universities in California first. Not saying you won't have a chance at one of those. But just something to call out.

The reason I say don't focus on rankings too much is because development is one of the few desk jobs where you usually need to prove your skills before getting hired. This usually comes in the form of coding challenges. Most hiring teams care more about how well you interview and demonstrate your skills over a few ranking spots in schools.

Choosing a Track

When I was in school, there was just Computer Science. When we spoke we mentioned there being different "tracks" now, which can range from machine learning, algorithms, software engineering, etc.

I would say not to focus too much on which track you pick. You will learn development skills regardless of the track you take. And if development is interesting to you, I assume you will keep up your skills outside of the classroom as well. I think it's more important to pick a track you find interesting. If it's interesting you will be more engaged. And any skills you would learn in the "Software Engineering" track are the kind of skills that are easy to learn on the job.

Job Searching

As I mentioned, a lot of getting hired as a software developer is demonstrating skill. So I would recommend starting early. There are two things I would focus on:

  1. Getting an internship
  2. Creating a portfolio

Getting an internship is pretty straight forward conceptually. You can probably start looking for internships after your second year.

Creating a portfolio is something you can start right away. Most developers do this by either creating a Github profile, or creating a personal website. I would recommend both, but creating a Github profile is probably the easiest to start.

If you aren't familiar with Github, you will learn pretty early on in school. Its is a repository for people to share code they have written. Most organizations use some form of it for coordinating code among a development team. It is a good way to show that you like to write code, and have done it consistently throughout the years. Here is an example of mine: https://github.com/debpu06

The second option, creating a portfolio, is a bit more involved. I like to blog about tech related topics and code. But you can go much simpler, and just make a website that you built yourself from scratch. This seems daunting, but there are pretty straight forward tutorials out there. If you do that, and just create pages for any fun dev projects you have made, it will go a long way.

Misc Thoughts

Programming Languages - Don't feel the need to focus on a single language, or worry that one is more "in demand" than another. A lot of the concepts are transferable. Make sure you learn Object Oriented programming. Also, when you get a bit further along, look into SOLID principles and clean coding.

Job Interviews - As I mentioned a lot of companies require some demonstration of your coding knowledge as part of the interview process. Once you start getting ready for internships, I would check out a site like https://leetcode.com/. They have lots of programming/logic problems that help you practice for interviews. This is a acquired skill in itself, so I would start trying these out a couple months before you start interviewing.

Final Thoughts

I know this was a good amount of information. But hopefully it was helpful. Remember, this is all based on my personal experience. So if you read something and it doesn't feel right, I encourage you to do more research and feel free to follow up with me on anything, I enjoy talking about this stuff.

Also, when you get to the point where you are getting ready to showcase your Github account, portfolio, or need an internship interview prep help, there are great sites like dev.to where devs are more than willing to give feedback.