Live data from Hacker News

A computer science study plan to become a software engineer

github.com

21–30 of 220 posts

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

#22

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 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%.

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

#23

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…

Most places will also probably have you spending a good chunk of time maintaining legacy code rather than inventing entirely new business units / products / platforms. I can't imagine what the maintenance burden is like at huge companies for existing / mature products. Anyone care to shed some light?

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

#24
post #9

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…

> and in 30 years, I've hardly used any of it. Isn't that similar to people saying "I've never used trig in 30 years"? Isn't the point to train your brain to think in a certain way, more so than actually needing sines and cosines? For computer science specifically, the goal is to teach you to think in terms of loops, conditionals, recursion and so on. It's to train the muscle more so than memorize specific algorithms…

I'm still new to the industry, but my CS education (yours may differ) was quite theory-heavy.

Perhaps the knowledge of data structures and algorithms can be useful for people who need to design whole architectures and systems, but I think the folks who are fixing bugs, tweaking the UI, or adding small features would benefit more from Code Complete than an Algorithms book.

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

#26
post #9

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…

> and in 30 years, I've hardly used any of it. Isn't that similar to people saying "I've never used trig in 30 years"? Isn't the point to train your brain to think in a certain way, more so than actually needing sines and cosines? For computer science specifically, the goal is to teach you to think in terms of loops, conditionals, recursion and so on. It's to train the muscle more so than memorize specific algorithms…

> Isn't the point to train your brain to think in a certain way

You might get that through other methods besides trig, meaning trig isn't strictly necessary -- it's just one option among potentially many. The hard part is proving efficacy and efficiency of each option.

CompSci interview questions go way beyond loops, conditionals and recursion though, such that if you don't already know some secret sauces, it's unlikely to get the best case solution that the interviewer wants.

The other thing throwing this off is interviews are looking for different grades of solutions or maybe just looking at your problem solving/communication skills, e.g. you can fail to find the best known solution but still get a job because of your reasoning.

So in this way, the algorithms & data structures interviews can sometimes be used to test knowledge, or test problem solving ability, or both.

The interview stopped being a test of "if you can do this job" and instead seeks to find a correlation backed up by some research that says "people that prepare, study, and do well at this interview also do well at this company". Similar research meant that they needed to stop asking brain teaser questions because it wasn't a good indicator of success.

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

#27

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…

> and in 30 years, I've hardly used any of it.

So you don't see the sine in the sky from sunrise to sunset?

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

#28
post #9

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…

> and in 30 years, I've hardly used any of it. Isn't that similar to people saying "I've never used trig in 30 years"? Isn't the point to train your brain to think in a certain way, more so than actually needing sines and cosines? For computer science specifically, the goal is to teach you to think in terms of loops, conditionals, recursion and so on. It's to train the muscle more so than memorize specific algorithms…

An interviewer proposes this scenario: There is a school bus full of ping pong balls, all the way to the ceiling, filled from back to front. You are asked to estimate the number of ping pong balls while explaining your line of thinking. Questions are welcome--and answered if on the fact sheet.

Explaining your abstract, critical thinking process seems much more valuable. HR screens someone for having the degree, assume they are familiar with all the facts (they can use Stack Overflow when they get in). Just learn how they think and how they communicate.

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

#29

"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…

The same can be said for the SAT. Unfortunately there seems to be significant enough overlap between "good test taker" (or in this case "good interviewee") and "good worker".

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

#30

"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 success with in hiring good candidates) has been to pose a real problem we're dealing with now or have recently solved (so the solution and problems are fresh in the reviewers' mind) and ask the candidate for their solution at a high level. Not whiteboard coding, though. Something like if I tell you we're trying to filter out strings that contain creatively obfuscated obscenities, what should we do in order to maximize true positives while minimizing false negatives (and as the candidate offers solutions, provide sample strings that would fail their solution and see how they adapt)?

Post reply on HN