Three things school taught me (and Three things it didn't)

Too often I see chatter online about how studying computer science in school is the only way to have a successful career at a startup or a big company. That definitely isn't the case.

I studied computer science as an undergrad (a while ago). At the time, it felt like the only choice on an obvious path to a career as a programmer, even though I graduated in the middle of the 2008 recession.

In 2024, things are different - the job market is wildly competitive, and the path to a tech career is not as clear-cut as it once was.

I see countless posts on the /r/computerscience subreddit along the lines of I sent 74 applications and got no interviews - what am I doing wrong?

On the other side of the spectrum, while hiring for my own team, I've seen a lot of candidates with non-traditional backgrounds who are just as capable as those with a CS degree.

I’ve also seen a lot of candidates with CS degrees who sound like they would be very challenging to work with.

So, with a handful of years of experience under my belt, I wanted to share some thoughts on what I learned from studying computer science, and what I didn't.

Skill 0: Tenacity

The most important thing I got out of studying CS in school is tenacity. Learning hard computer science is really about writing code the wrong way many times and figuring out how to do it right. The process of doing it wrong and then getting it right is what truly fosters learning.

I spent many late nights in front of my computer pulling my hair out (RIP) trying to figure out why my code wasn't working. Little did I realize how formative those experiences would be for my career - even today, many of the more stubborn problems I face at work are solved with a solid dose of patience and tenacity.

Here's the good news: you don't need to study computer science to learn this. You can learn it by doing anything that's hard and requires you to fail a lot before you succeed.

Learn how to Learn

I learned how to break down abstract problems into parts and apply things I picked up along the way. This involves research, memorization, and a lot of trial and error.

Another lucky break for you, friend -- you probably have some of this skillset in your pocket already. Ever looked up how to fix a leaky faucet? Or how to make a soufflé? Or how to change a tire? It's the same process, just with different tools.

Grits is just corn (you've seen it all before)

Many of my classes focused on fundamental concepts that comprise the building blocks of computer science. At the time it felt a little silly to spend so much time on things like sorting algorithms and basic data structures. But, as I've progressed in my career, I've found that these fundamental concepts are the most important.

So many of the "hard" problems I've faced at work can be brokend own into simpler parts with solid understanding of these basic concepts. By the same token, there are also some problems that just can't be solved with the tools we have today. Understanding the shape of those sorts of problems is helpful, too.

All this to say: being able to see larger problems as a collection of smaller, more manageable problems is a skill that will serve you well in any career.

Here's what they don't teach in Computer Science programs

While I don't regret my formal Computer Science degree, there are mountains of critical lessons that they didn't teach in the courses I took.

You don't need anyone's permission

You don't need anyone's permission to learn this stuff. Most of what I know and have learned in my career is freely available online. With dedication, you can learn through online courses, YouTube, tutorials, and books -- if you're willing (and able) to put in the time.

Formalized education is great, but it's not the only way to learn. I've met many successful developers who never went to college, and others who have degrees in unrelated fields.

There is no archetype

Carnegie Mellon's computer science program is great, but it's not the only way to learn. I've met successful developers who never went to college, and others who have degrees in unrelated fields.

I have worked with some incredible UX designers, developers, PMs, etc. who started their careers in economics, geography, library science, the military, and even as auto mechanics. These people bring a unique perspective to the table that someone who has only studied computer science might not have -- and that's a good thing.

It's difficult no matter what

Breaking into a tech career is hard, regardless of your path. It's not just about having a degree or self-taught coding skills; landing your first job depends on your ability to make connections and network. Getting in front of the right people at the right time can make all the difference. A prestigious degree or an impressive self-taught portfolio alone isn't enough, especially when competing with a mess of other candidates.

So what, then?

This newsletter comes from my frustration with gatekeeping: there's not one right way to get into a tech career. Do what works for you, and don't let anyone tell you that you're doing it wrong.

I enrolled in a whole-ass masters degree program because I was told early in my career that it was "the only way" to get into UX work at Microsoft. I'll be damned if that's the case today.

No matter what path you go down, you're going to work hard; success will always feel like it's just behind the next obstacle. Use that as fuel to keep you learning and trying new things.

Most importantly, get to know the people around you -- help them out, be a positive force, and give without the expectation of receiving. An investment in your people is one that will pay for itself many times in the span of your life.

More career advice from me

If you or someone you know is considering a career shift, you may also find these articles useful:

Louder, for the people in the back

  • 🎙️ My recent interview with James Perkins from Unkey for the APIs You Won't Hate podcast is one of the more memorable chats I've had in the past year. James' path from a contributor to a developer advocate to a successful founder is a great reminder that our careers rarely follow a predicable path.

I hope you enjoy this one!

***
Hero
Three things school taught me (and Three things it didn't)

Too often I see chatter online about how studying computer science in school is the only way to have a successful career at a startup or a big company. That definitely isn't the case.

career
Mike Bifulco headshot

💌 Tiny Improvements Newsletter

Subscribe and join other builders

My weekly newsletter for product builders. It's a single, tiny idea to help you build better products.

    Once a week, straight from me to you. 😘 Unsubscribe anytime.


    Get in touch to → Sponsor Tiny Improvements