Live data from Hacker News

A computer science study plan to become a software engineer

github.com

11–20 of 220 posts

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

#12

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…

I am inclined to agree. I think the issue is just with the HN title. The repo does say that it is for interview prep.

I will say that I've seen some companies improve their interview questions to be less about having CS insight or algorithmic "tricks" and more about writing good code.

But I've also been asked to essentially come up with quickselect in a 45 minute screener, the asymptotic analysis of which took me more than 45 minutes to understand.

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

#13

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…

Maybe it is true that you got in a line of work where you rarely need those things; And you certainly got more experience than me. But I, for one, use and profit from the way of thinking I was taught in University very regularly.

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

#15
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 think the issue is the filter is based on the specific algorithms and not that problem solving ability.

There seems to be more emphasis on "the candidate knew to use bubble sort" or something stupid like that instead of "I observed this candidate reason through the problem and I don't really care that they didn't know a canned algorithm".

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

#16

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.

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

#18
> ...This is meant for new software engineers...

Do these big companies really need so many developers that only know how to use this long list of 'fundamentals'?

I've interviewed a lot of people of all ranges, ages and skews. No matter what, when it comes down to sitting down with them and asking them to write out a simple program without any technicalities, 9/10 of them fail due to clearly not spending enough time just making things.

Are these big companies _really_ hiring juniors with this as their laundry list?

> ...Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer....

A junior to me who has spent a year banging away making real failing programs and can talk about what and where they struggled with is useful to me(and the company).

A junior who hasn't built a single project, but can tell me about the one time they spent 4 months writing data structures on white boards is little more then a warm, but dead silent body in a design meeting.

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

#19
post #9

Earlier quoted context omitted.

> 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 think the issue is the filter is based on the specific algorithms and not that problem solving ability. There seems to be more emphasis on "the candidate knew to use bubble sort" or something stupid like that instead of "I observed this candidate reason through the problem and I don't really care that they didn't know a canned algorithm".

I think a big point people miss is that you need intuition which algorithm fits where. You don't need the details of how it works, but if you have a good idea how it works you usually have a better intuition.

It's a bad proxy, but better than no proxy in my opinion.

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

#20
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 about the commonly used “tools” that a distributed systems engineer would use, more specifically:

- Load balancer - Nginx

- Key/Value storage - Redis

- Pub/sub - Kafka

- Queueing - SQS

- Map/reduce - Hadoop, EMR

- Databases - SQL

Post reply on HN