Categories
Monocategorized

very degree-able

I took a break last week to talk about the Stadia shutdown. I am now on week four of not talking about “quiet quitting”. How much longer can this outrage last? How much longer can I continue to not talk about it?

At least one more week apparently.

Today I want to talk about computer science degrees. More specifically, I want to talk about the lack of computer science degrees. I have worked with several software developers who do not have computer science degrees. Some of them have been amazing, some of them have been… less than amazing. I decided to write about the value of a computer science degree because a very good friend is looking to level up professionally and address the lack of a computer science degree. I felt it would be good to try to articulate what my computer science degree means to me, and what a hiring manager will look for in the absence of a degree.

I know a lot of people fixate on a computer science degree when they are hiring. I also was part of a team that hired two friends as a part of an acquisition—one had a degree and one did not. I was flabbergasted to learn of the huge pay disparity between the two of them, especially since the engineer hired without a degree was a tremendous work horse. I still talk to him pretty regularly, and he continues to be an exceptional engineer whom I admire.

I also had a business partner without a computer science degree. He was a tremendous builder and probably one of the top five most amazing software developers I have worked with. When we started our mobile game studio, I took the role of president, he took the role of CTO, and we had tremendous fun building cool stuff together.

I mention these two things, specifically, because I hope it helps hiring managers calibrate their candidates better. I know that some people will use a lack of a degree to lowball a candidate or invalidate them completely. It is hard to move past the lack of a degree and consider the whole candidate on their merits.

So what exactly did I get with my degree? I am going to go into rapid fire answer mode like I am some sort of TikTok video-making person.

International work eligibility – If you want to work in a different country, getting a degree will give you access to different visa and immigration options. Considering where I was born and where I live now, I have to say this is one of the bigger benefits to my degree.

Learning to learn – A substantial number of lecturers at universities are bad. They are hired to tenured positions for research and other purposes, and do lecturing as a filthy side hustle. I have had many frustrated professors who will put something arcane up on the board at the front of the classroom as if it was the most obvious thing in the world and turn around to an ocean of befuddled students who have no idea what the hell any of it means. When you have a terrible professor you must learn the materials from textbooks, grad students holding office hours, or just through practicing multiple assignments or questions on your own. Spending four years inside of an institutional learning facility will give you plenty of opportunities to practice new ways to learn things under difficult circumstances.

Achieving goals – A four year computer science degree is a lot of work, and it is often the first time you are away from home as a young adult. If you can figure out how to make it through a four year program, you have figured out how to handle your course selection, enrollment, and novel living situations. I will confess, I initially wanted to get my degree just to prove a point to my father, who had very negative views of computers and my career prospects. By the end of my degree I had figured out a lot of what I wanted out of my life and was on my way to setting and accomplishing my own goals.

How computers work – There are a lot of low level computing courses at the University of Waterloo. We had to do some simple digital hardware design, create a two-pass assembler, and write parts of a file system. I use these skills in debugging live systems on a regular basis.

The mathematics of scale – One of the big things that Silicon Valley software developers do well is creating scalable systems. Most hiring managers for large SaaS companies will grill their candidates on their understanding of “Big O” notation and algorithmic complexity. This is probably one of the more important software engineering skills to learn, and likely one of the most important day-to-day skills for principal engineers and architects.

Tools and patterns – Many of the required courses for a computer science degree will introduce new developer tools. You will likely have classes on sorting algorithms, data structures, and network protocols. Understanding these deeply helps you decide what types of tools to apply in a given situation. Should you store data in a list? A hashmap? How can you optimize the sorting? How are you sharing data between systems? Over time you will develop a series of patterns that you will use to solve problems. Sometimes you will create libraries and frameworks that you will rebuild and reuse from one job to the next using these tools.

Networking – I do not mean computer networking here, I mean people networking. All you Stanford attendees know what I am talking about. I think one of the big failures of most schools and alumni is to fully leverage their schools and their fellow classmates to accelerate your success. I am fortunate that I still keep in touch with several alumni and work with many people with whom I have worked in the past. Learning to network will help accelerate your professional success in any profession. While I have had great success at this, I think this is one area where a lot of software developers could improve.

Student government – I got actively involved in student government in my third year. I really enjoyed it and learned a lot about how abstract organizations get things done. Knowing Robert’s Rules of Order might sound terrifying to the average software developer, but I have applied some of the tools from my time in student government to many jobs later in life. To this day, I get tremendous pleasure when I hear someone use the word “quorum” in a meeting, especially if they were not using it before I joined the company. It is such an excellent word. Say it with me: “Quorum!

If you set aside the first item in the list, almost everything else in this list can be learned somewhere else—probably faster, and probably cheaper too. There are two questions that you can ask yourself: “How would you go about doing it?” and “How much time will this take me?” To be honest, I do not fully have an idea.

There is considerable emphasis on two of these, and I put them in the middle on purpose: The mathematics of scale and Tools and patterns. Assuming you have some elementary algebra skills, you can probably master the The mathematics of scale in eight months. That roughly corresponds to the academic year where you are learning this material. Tools and patterns feels more like a twelve to sixteen month journey given the depth of mastery you will need and, more importantly, the ability to show off that mastery to a potential hiring manager. You might argue that you could do this in less time if you stacked the subjects on top of each other and had some good mentoring in place to ensure your work efforts are highly targeted.

So there you have it. These are the things I learned in my degree, and the things I would contemplate when assembling a total candidate picture for someone who may not have a degree.
Thank you once again for reading along. If you do not have a degree and are looking for some help trying to be a software developer, I am happy to spend some time answering questions. Alternatively, here is an Amazon Affiliate Link to a book that has all of the markings of “You can learn to be a computer scientist!” as well as “this is a paid sponsorship please buy my book!”. If you already have a computer science degree, and you are interviewing candidates, I hope this gives you some tools to see if they have mastery of the two to three core computer science skills your company will need.  I am looking forward to another week of not posting about quiet quitting

By jszeder

This space intentionally left blank.