13 Comments
User's avatar
Jud's avatar

No class I took at any level of education has had more of a direct effect on my success than middle-school typing. Being able to touch type quickly and accurately is a force multiplier across multiple dimensions.

Expand full comment
Ryan Peterman's avatar

Agreed, typing fast helps me get a lot more done. Especially helpful over chats since I'm not usually limited by the speed of thought there.

When I'm coding, its nice to have but it usually takes me longer to think of what to write than to type it out.

Expand full comment
Daniel's avatar

I disagree that only three classes mattered. It simply may be the others matter in ways in which you are unaware. This article touches on some of those details: https://www.pearlleff.com/the-value-of-an-undergraduate-degree

Expand full comment
Ryan Peterman's avatar

That's a fair argument. Thanks for the link to the article I found this paragraph the most relevant:

> Furthermore, college exposes you to current ideas across your field, even the areas you wouldn't normally be exposed to. Yes, perhaps 90% of programmers will write CRUD applications their entire career. But that one time they see an operating systems problem, they'll know immediately it's an operating systems problem, instead of being confused, rewriting the wheel, or writing crazy maneuvers to avoid the problem. And there's also a chance that they'll encounter operating systems in college and fall in love, and realize that this is what they're meant to be doing. Or maybe they'll be able to use their knowledge of operating system paradigms to write a blazingly fast web framework. Either way, they'll have a comprehensive contextual framework of what's going on above and beneath the layer they're working on.

Yeah it's hard to say when the ROI is unclear or difficult to trace. Those classes *might* help in the future, but I could see someone still being a great engineer without them.

To be clear, I enjoyed most of my comp sci classes and I'm not saying college is not worth it.

Expand full comment
Daniel's avatar

A good example is technical writing and public speaking. Being a "great" engineer involves skills beyond writing code. It includes interpersonal, organizational, and communication skills as well. The ROI on such classes becomes evident as soon as you need them. I utilize communication skills learned from writing essays in my high school English class nearly every day as an engineer in my communications with others.

Expand full comment
Ivan H's avatar

This syllabus is a perfect example of what happens when you just used HTML and not include CSS 😝

But anyways, thanks for the classes. I agree that some classes weigh more than others, but I also think it's important to have a broad understanding of CS since there are times when a class might seem unimportant, but can actually be important in the future.

It's like when Steve Jobs said "Creativity is just connecting things...And the reason they were able to do that was that they’ve had more experiences or they have thought more about their experiences than other people... A lot of people in our industry haven’t had very diverse experiences. So they don’t have enough dots to connect, and they end up with very linear solutions without a broad perspective on the problem."

Just taking more classes in CS will give you more experience and understanding of computers. I think it's also important to focus on open-source projects, but having a broad understanding can make it easier.

Expand full comment
Ryan Peterman's avatar

Yeah that's fair, there's value in having broad understanding of CS. Impossible to pinpoint which classes contribute the most to that.

Expand full comment
Mohammed Husain's avatar

Hey - also a UCLA grad here, we might have overlapped. Any recommendations on open source resources for each of these fields? I work very closely with SWEs and SDEs so I want to get smarter on the backend.

Expand full comment
Ryan Peterman's avatar

If you're looking to learn by doing, I'd recommend finding a project you're interested in that has a backend you can contribute to. There's a lot of resources online that can help you find a project you like, here's an example: https://opensource.guide/how-to-contribute/

I agree, doing SWE work will help you understand your SWEs and SDEs better.

Expand full comment
Amit Kulkarni's avatar

I go to Georgia Tech and I can agree that only a few of the classes really mattered for SWE and it's pretty similar to your list. For me, it was CS 1331 (intro to OOP), CS 1332 (Data Structures & Algorithms), CS 2340 (Objects and Design aka class we learned git). The other nice to have classes were CS 2110/2200 (low-level programming), CS 3510 (Algorithms) and CS 4400 (databases).

Everything else, I've learned on my own using resources like FullStackOpen, Leetcode, and working on open-source projects and internships.

Expand full comment
Ryan Peterman's avatar

Yeah that list makes sense. Otherwise learning from resources online and from work cover most of what I know today too.

Low-level programming is a nice to have I forgot about, thanks for sharing that.

Expand full comment
Matthew McCane's avatar

It seems Math majors are most useful than CS majors. Definitely intertwined. But Ryan, I think you make a great point here... a lot of the innovators in the field of CS or leaders of the big tech companies do not have CS degrees and have not learned nor taken all the classes that CS students take, but their skillset may be greater. The mind learns best from experience and failure, not from theory. With that said, your curriculum is indeed important and a good wealth of knowledge! Good job on completing all that hard work! Walter Isaacson has a good book called The Innovators... I recommend reading!

Expand full comment
Nishant's avatar

Funnily enough if you spoke to engineers working in Meta's Infra Org, they would have different answers than yours.

Expand full comment