Skip to content
Swizec Teller - a geek with a hatswizec.com

Computer science is not software engineering

Wow, college was such a waste of time ... when did you ever invert a binary tree outside of an interview?

Honestly I never inverted a binary tree in college either ☹️

Maybe I skipped that day ... I was a terrible student. The kind who oversleeps 10 minutes and says "Ah screw it, might as well not go to class today"

And despite working at it for 5 years and never graduating,1 studying computer science was one of the best things I ever did for my career. We talked about it with Noah Gibbs on his new podcast, Computer Science: Just the Useful Bits. You should give it a listen.

Computer science didn't prepare me for software engineering. This is true.

There were classes about engineering. Freshman year. Intro to Java 101. Sophomore year, product management blow off class.

And that's it. 5 years, 10 semesters, 40 classes. 2 on software engineering

To be perfectly honest, the air of superiority in my college was ... thick. We looked down on software engineers.

We were computer scientists damn it! Going into industry is a waste of talent. We're here to advance the field!!

The Senior Mindset series

Get a series of curated essays on the mindset of a senior software engineer. What it takes to get there, what should you do when you're there, how to change the way you think.

it describes my days in a way I have not read before.

This was a very enlightening article about being a senior engineer.

Join over 10,000 engineers just like you already improving their careers with my letters, workshops, courses, and talks. ✌️

Then we discovered money. We all work in startups building technically boring apps where the biggest challenge is how to engineer this thing so a large team can work together without killing each other 😅

XKCD: Academia vs Business
XKCD: Academia vs Business

Why study computer science then?

What I got from computer science are the timeless truths of our field. And a lot of math.

Everything from how transistors work to proving equivalence between different theories of computation. The understanding that beats knowledge. The core truths that don't change every 5 years.

Understanding wins in the long term
Understanding wins in the long term

And that's been invaluable my friend. It changed everything.

I started as a self-taught dev and I remember what it's like. When you know every tree in detail and don't realize there's a whole forest. That trees work together. That they're all the same.

A tree is a tree is a tree. Some have leaves, some have needles, some are tall, some are short. And they're all trees.

Just like JavaScript frameworks.

Some have JSX, some have templates, some split CSS and JS, some merge it all together. Some like observers, others like passing props. And they all make you faster.

How to get the most out of a comp sci degree?

If you have a choice between a comp sci and a software engineering career, go for comp sci. One prepares you for a wide swath of careers, the other gives you tools for today.

Bootcamps in particular are all about get job NOW. Oh you need skills that work 5 years from now? Good luck.

Comp sci is forever.

Well there was that one time I taught my databases professor about NoSQL and he was shooketh. Asked me to do a seminar and the entire class hated me when that material was on the exam.

Next year NoSQL was part of the official curriculum 🤘

That was 2010. Now it's 2020 and NoSQL is a strong you shouldn't use this unless you have a very specific use-case or reason in mind.

Relational databases, a comp sci thing, are the default way to store data for 50 years and counting.

Make sure you code on the side!

That's the trick. That's how you get the most out of your degree. Apply your skills and knowledge in real time.

You can see the effect of that on my old articles. Like when I built a Turing machine simulator in 133 bytes of JavaScript. Yes it's useless. Learned a lot though.

Even better if you can launch an app, get a freelance gig, moonlight at an agency, anything that teaches you software engineering. Engineering is best learned on the job.

If you're an old fart like me, pick up a CS book once in a while. Read an article. Study a paper.

Shannon's A Mathematical Theory of Communication is a fantastic paper with broad applications to modern web engineering and systems. I read it every few years.

What if you never studied comp sci?

I bet you know more than you realize!

You pick up lots of computer science on the job. Things you never even realized were part of comp sci.

Like the fact that you can't parse HTML with Regex, or that reading from a database is slower than from memory. Or that you should have a cache and avoid slow operations.

And that async code is faster than sequential code, but never faster than the slowest non-parallelized part.

I don't have an answer for how to pick up computer science later. And I don't know that you need to. But it won't hurt.

Try a textbook or a good paper like Shannon's above (very approachable). Tannenbaum's Modern Operating Systems is a great practical place to start.

You should listen to the full podcast episode with Noah Gibbs where we talked about what comp sci was like for me and why I think it was great.

Happy Friday ❤️

Cheers,
~Swizec

1 I dropped out in 2012 after missing graduation by 2 credits. The credits were in separate semesters and I'd have to stay in school for a whole 'nother year. Decided to go full time on my freelancing business instead.

PS: the credits were for a notoriously difficult freshman course in low level computer architecture. CPU pipelines and such. Prof was one of the college founders 💪

Did you enjoy this article?

Published on October 2nd, 2020 in Opinions, Learning, Mindset

Want to become a true senior engineer?

Getting that senior title is easy. Just stick around. Being a true senior takes a new way of thinking. Do you have it?

Leave your email and get the Senior Mindset series - a series of curated essays on the mindset of a senior software engineer. What it takes to get there, what should you do when you're there, how to change the way you think.

The Senior Mindset series

Get a series of curated essays on the mindset of a senior software engineer. What it takes to get there, what should you do when you're there, how to change the way you think.

it describes my days in a way I have not read before.

This was a very enlightening article about being a senior engineer.

Join over 10,000 engineers just like you already improving their careers with my letters, workshops, courses, and talks. ✌️

Have a burning question that you think I can answer? I don't have all of the answers, but I have some! Hit me up on twitter or book a 30min ama for in-depth help.

Ready to Stop copy pasting D3 examples and create data visualizations of your own?  Learn how to build scalable dataviz components your whole team can understand with React for Data Visualization

Curious about Serverless and the modern backend? Check out Serverless Handbook, modern backend for the frontend engineer.

Ready to learn how it all fits together and build a modern webapp from scratch? Learn how to launch a webapp and make your first 💰 on the side with ServerlessReact.Dev

Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com

By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️