Live data from Hacker News

A computer science study plan to become a software engineer

github.com

41–50 of 220 posts

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

#41
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…

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

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

#42

"When a measure becomes a target, it ceases to be a good measure."[1] These coding challenges used to be a very good measure of ability, but now applicants are just memorizing the most common problems for each company. We're not at the point where these tests are useless but we will get there in the near future. The problem is that I haven't seen any good alternatives. [1] https://en.wikipedia.org/wiki/Goodhart%27s_l…

> These coding challenges used to be a very good measure of ability I'm skeptical. The stereotypical interview question involves reciting algorithms from memory, where the thing you actually want to know of a software engineer is do they appreciate how things fit together to meet the constraints of the project. > The problem is that I haven't seen any good alternatives. Something we've done before (and had good succe…

Do you mind if I ask what company you're with? I'd love to put it on my list of companies with good interview practices that I would want to apply to. If you're not comfortable with getting that specific, just for my personal curiosity, is it a FAAMG/big tech company, or other? haha :)

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

#43
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?

Dictionaries for O(1) lookups, b-tree indexes for fast SQL queries, interval trees in genomics analysis software.

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

#44
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?

Please go pick up any of the Martin Fowler books. All are rooted in computer science fundamentals. Let’s not pretend software engineering isn’t rooted in computer science. That’s a categorically false assertion.

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

#45
This is a good starter list for the more Computer Science skills but I see little in the way of practical skills. It's definitely nice to have these skills but let's be real, you aren't going to use them on a daily basis.

I would add learning a few of the most popular languages and frameworks depending on your area of interest.

Without those practical skills I'm pretty sure you will be passed up during interviews.

When hiring, I look for people who can get stuff done first and foremost. I don't care if they have to look things up and don't have things memorized. Efficient "stack overflow driven development" is real world development.

Then if they have those skills I look to see what kind of theory and architectural understanding they have. Those are secondary.

The more senior the candidate the more I expect them to have CS and architectural background so I would normally forgive not knowing the CS theory stuff for junior developer candidates.

But practical "get it done" skills in the relevant language and frameworks are a minimum requirement for everyone.

One other thing that I would add is to customize your study plan based on where you want to apply. Startups will favor more practical skills during the interview. Larger companies and enterprises will favor more of the traditional CS during interviews.

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

#46
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?

Knowing the properties of a data structure and how it works under the hood is incredibly valuable when deciding if it's a good answer to the problem at hand. If you don't know why hashing is important or what it gets you, you might not understand why a hashmap is a very powerful tool. You might choose some other structure or hand-roll something involving manually managing multiple arrays, and down the line run into what feel like intractable performance problems.

That's just one example, pulled from people I've worked with. An understanding of fundamentals is required to do a real evaluation for yourself.

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

#47
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?

Boolean algebra, relational algebra, sets and graphs, reductions, runtime analysis, gossip and epidemic protocols, satisfiably, verification, turing machines, push down automata, etc.

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

#48
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…

Agreed, but also some great moments are when you finally use something you learned and think “Oh, that’s why they taught me that.” Even if it’s many years later and I did NOT master the concepts, I’m just aware of them. It’s happened enough to me that I no longer have the opinion that stuff I learned was “useless” even if I don’t use it. I might one day or someone else might encounter a problem that requires that knowledge.

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

#49
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?

People can go on all day about this. The most major one for me is protocol engineering - there's a whole world out there on this. Others would be model based design and its formal verification. Also several problems in state synchronization in distributed systems.

In many of these cases, the team I joined had a code base in place that "kind of" did the solution, but was not grounded in any conceptual model - despite phenomenal code quality, peer reviews, etc. Recasting it as an implementation of a well-studied formal model generally yielded a codebase that was one-tenth the size of the original, and with far fewer defects. As I said in the parent comment, if you aren't familiar with this kind of stuff, you don't know about it, so you don't use it, so you find other (suboptimal) ways to do it.

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

#50
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?

1. Unix was cutting edge OS theory and gave birth to the microcomputer industry.

2. AWS was cutting edge distributed systems theory and gave birth to cloud computing.

3. Renaissance Technology was cutting edge algorithms theory and gave birth to quantitative hedge funds.

Some people innovate for a living.

Post reply on HN