Live data from Hacker News

A computer science study plan to become a software engineer

github.com

81–90 of 220 posts

Re: A computer science study plan to become a software engineer

#81
post #35

This isn't a bad list of topics about data structures, algorithms, and software fundamentals, but let's not pretend that computer science has anything to do with most software engineering roles. I studied computer science, and in 30 years, I've hardly used any of it. There were a few jobs where some of the statistics and math were helpful, but in my long career, I've seen very little overlap between computer science…

Your comment reflects a common meme that can often be summarized as: "Real World" work doesn't involve the academic nonsense you learn in school. Many of the people who say this kind of stuff never really mastered the theory, and because they never mastered it they can't really use it, and because they can't really use it they find work that doesn't strictly require it, and then conclude it's useless... It's like whe…

> it's not useless, they just found success in a career that didn't need it.

Or don't realize how often they actually do use the skills they learned in calculus class to solve problems that don't necessarily involve derivatives or integrals but do require a methodical, structured approach to solve that isn't something you're born being able to do but must instead be honed through practice on "toy" problems.

Re: A computer science study plan to become a software engineer

#82
post #41
post #35

Earlier quoted context omitted.

Your comment reflects a common meme that can often be summarized as: "Real World" work doesn't involve the academic nonsense you learn in school. Many of the people who say this kind of stuff never really mastered the theory, and because they never mastered it they can't really use it, and because they can't really use it they find work that doesn't strictly require it, and then conclude it's useless... It's like whe…

Can you give some examples of where computer science academic theory helped in software engineering?

Personally, I see it come up in more vague areas during my Web Development. It's more along the lines of, "based off my understanding of X, I can assume this bit of JavaScript code works like this under the hood". Understanding how memory works traditionally keeps me "memory-conscience", but this may be redundant when working with JavaScript. When writing complicated operations I can use things I've learned previously to improve efficiency. To put it nicely, I'm not balancing binary trees and sorting my arrays with JavaScript. However, it was helpful when learning how the VDom works.

In other industries...

I started my Software Development journey with C, then moved into Game Development in C++ as my first job. Game Development DEFINITELY requires a lot of CompSci info (that I lacked). Hash Maps, Pathfinding, Matrix math, physics calculations, Linked Lists; all the works. We were also using a proprietary Game Engine so maybe with other Engines CompSci isn't as needed, I haven't worked in different engines.

Re: A computer science study plan to become a software engineer

#83
post #75
post #67

Earlier quoted context omitted.

It sounds like you work in an industry that doesn't strictly require frequently delving into foundational theory in CS. I do believe it would be a mistake to conclude its useless, however, as there are many other industries that do need it, and people who are not in touch with the theory probably would not be competitive in those industries.

From your prespective how common are those types of roles in all industries as a whole? There are interesting compiler roles but the vast majority who learn how to build a compiler never use it day to day work. Would you recommend spending more time building compilers to better compete for those few roles or would you recommend a different approach?

Challenges that benefit tremendously from just a bit of a dive into theory are all over the place. This has been true for me in my career as a software engineer whether I'm working at an energy company, federal research lab, tech startup, or networking services company. The key part is that it's not apparent (or apparently needed) unless you are familiar with the material.

Re: A computer science study plan to become a software engineer

#84

Earlier quoted context omitted.

Your work doesn't depend on operating systems, databases, network communications and data structures? I can go on.

Not as much as it depends on human communications, organization, self-management, etc. Most technical challenges in my experience end up being reduced to word problems. All of the stuff you mentioned is probably 10% of it. You can be bad at the 10% if you're great at the 90%.

Word problem? That's not a technical challenge. That has to do with writing and communications, which are ubiquitous to all types of work.

I think you're misunderstanding the premise here.

Re: A computer science study plan to become a software engineer

#85
post #41
post #35

Earlier quoted context omitted.

Your comment reflects a common meme that can often be summarized as: "Real World" work doesn't involve the academic nonsense you learn in school. Many of the people who say this kind of stuff never really mastered the theory, and because they never mastered it they can't really use it, and because they can't really use it they find work that doesn't strictly require it, and then conclude it's useless... It's like whe…

Can you give some examples of where computer science academic theory helped in software engineering?

Dealing with unicode bugs taught me a lot about computer science academic theory. It helped to understand memory addresses and how encoding works.

Re: A computer science study plan to become a software engineer

#86
I used something similar to this as well as Khan Academy to learn CS, when I transitioned into software engineering, after being laid off at my previous position in a different industry.

It’s possible, but it takes work. I also benefited by contacting my peers from college on LinkedIn and getting referrals for interviews. Even though I didn’t major in STEM originally, I still ended up connecting/befriending many while in school. I would encourage you to try to utilize resources like that as much as you can.

Re: A computer science study plan to become a software engineer

#87
post #41
post #35

Earlier quoted context omitted.

Your comment reflects a common meme that can often be summarized as: "Real World" work doesn't involve the academic nonsense you learn in school. Many of the people who say this kind of stuff never really mastered the theory, and because they never mastered it they can't really use it, and because they can't really use it they find work that doesn't strictly require it, and then conclude it's useless... It's like whe…

Can you give some examples of where computer science academic theory helped in software engineering?

Tons: Cryptography, operating systems concepts including multi-threading, distributed systems, network communication, mobile and embedded systems which are basic backbones of all the things you use today. You know that's where majority of the tech companies are innovating on, right?

Re: A computer science study plan to become a software engineer

#88

This isn't a bad list of topics about data structures, algorithms, and software fundamentals, but let's not pretend that computer science has anything to do with most software engineering roles. I studied computer science, and in 30 years, I've hardly used any of it. There were a few jobs where some of the statistics and math were helpful, but in my long career, I've seen very little overlap between computer science…

What differentiates a real career professional with someone who just "learned how to code" IS the fundamentals like Data Structures, Algorithms and their underlying math fundamentals.

Sure, you can become a "senior" engineer even at a big tech company if you take a more product-focused track, but even there your lack of mastery of fundamentals will eventually limit and stunt your career growth, because those around you at the same level will have that deep understanding and knowledge to pull from when they actually need it for their job.

Notice I didn't say this requires a COLLEGE education, I've met plenty of amazing, very senior engineers in my career with no formal degree or college education, but they sure as hell understood all the underlying fundamentals and theory of their field better than most.

Re: A computer science study plan to become a software engineer

#89
post #39

From scanning through the course outline, the big omission is learning about distributed systems, and industry leading implementations of common tools. At big tech companies, you typically have to work at a much larger scale. A solution that works, won’t necessarily work at 10x, 100x, 1000x the scale. You often need to use technologies architected differently than a monolithic Web App. I would recommend learning more…

There's a different "knowledge" problem that must be tackled here. Someone can form a cognitive bias from only being exposed to a few ways to solve a problem. Maybe it's because they haven’t seen it to larger scale, or that they only worked with monoliths, and thus are limited to only that problem scope. Throwing more MySQL databases at a problem won’t fix all problems, but for a lot of people, this is all they know.…

No it's not. A formal computer science education at least mention and cover the problems these tools are solving. And for those who want to solve these challenges, they take graduate courses.

Re: A computer science study plan to become a software engineer

#90

Earlier quoted context omitted.

CompSci theory hasn't helped me with the complexity of the industry i work in. It hasn't helped me when i've misunderstood something in our domain. It hasn't helped me release / distribute a product easier or faster or cheaper. It hasn't helped me navigate team dynamics or how to work effectively with others. It hasn't helped me write better technical texts. So for some very specific cases, in my career (and i suspec…

All this is true, but when I look at undergrad curricula for other engineering disciplines I don't see this stuff either. And the software engineering courses I did have in undergrad were terrible .

Software engineering needs to be learned on the job. I see lots of new grads that take classes in "Agile" and I cringe just knowing how instead they could be taking difficult courses in graph theory, theory of computation, abstract algebra, advanced algorithms, distributed systems, or any other number of advanced topics. As we get older it's easier to pick up tricks of the trade (various Git workflows, "agile", etc)... but it gets harder to sit down to do 3 hours of homework 4 days a week doing your pushdown automata or linear algebra exercises.
Post reply on HN