Live data from Hacker News

A computer science study plan to become a software engineer

github.com

71–80 of 220 posts

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

#71

Earlier quoted context omitted.

Studying for the SAT won’t actually improve your score much on expectation, but taking it multiple times of course will increase your expected score (since they take the max). SAT is basically an IQ test, which is of course a reasonably strong predictor of white collar job performance (ceterus paribus).

I don't think its 'of course'. A study at the UofIowa showed only one correlation between tested psychological features and job performance (as measured by 1-year evaluation). It was 'conscientiousness'. That is, if you kept at a task until it was actually and fully done, your boss/coworkers valued your contribution. That's it. Not about being smart or educated.

The conclusion of this IQ vs job perf paper is “it’s complicated”, but essentially every meta study they cite is pretty unequivocal that IQ predicts job performance. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4557354/#!po=0.... The only room for doubt is in confounding effects like the fact that people with higher IQs are likely to enter more mentally difficult professions.

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

#72
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 learned trig before I learned to program and the symbolic dexterity from trig was useful. I think kidz today will learn to program before they learn trig. I don't really have a point here.

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

#73
post #5

Spoiler alert: https://medium.com/@googleyasheck/i-didnt-get-hired-here-s-w... > Last week I received a rejection email from the recruiter, and at first, I thought it was a mistake, and laughed it off. I checked in with my referral and he inquired into it and lobbied on my behalf, but in the end, it didn’t change the situation.... The thing that bothers me is that I didn’t even get a phone screen. I didn’t even talk…

I hate to nitpick, but your use of 'spoiler alert' here made me believe there might be some clever deception in the article, but he got hired at Amazon _after_ the Google rejection. this is slightly misleading.

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

#74
post #38
post #24

Earlier quoted context omitted.

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.

Note that you may find your career limited to fixing (simple!) bugs, tweaking UIs, and adding small features.

That;s a sad career.

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

#75
post #67

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…

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?

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

#76
post #70

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…

This is true for the most part. But having the CS knowledge allows you to create much more efficient solutions once at scale. I've personally revamped core parts of a product at previous companies to be over 1,000x more efficient just by applying some CS principles. This translates to $100K/mo+ in savings for a company that is at scale.

I have to ask though... Was it at scale?

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

#77
post #41

Earlier quoted context omitted.

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.

If this was an interview I'd say dictionaries aren't O(1) but one popular implementation of this collection is.

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

#78
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.…

As a software engineer, you have a professional responsibility to stay abreast of current technology. That doesn’t mean hopping on every latest JS fad, but it does mean continually looking for more information, and learning how others in the field are solving problems.

Physicians have to keep up their board certifications/licenses by undergoing yearly(?) retraining, in order to continue practicing medicine.

It’s not that hard to find what other software engineers are doing, to start, Read hacker news! Talk to more experienced engineers, read blogs, as an intellectual exercise, surf through AWS services and think about how you could use each.

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

#79
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".

No, that's what you assume they are looking at. You're assuming they only look at whether you properly memorized bubble sort, but in reality good interviewers don't care if you don't even finish the problem or find the answer, they are looking at how you approach the problem and your problem solving skills.

You often need strange problems to really get to see people's problem solving, which is why they're often not things you see in real life, but again, the goal isn't to see if people know how to do the strange thing, it's to see how they approach a novel problem from scratch. Aka problem solving skills.

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

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

I tend to use it quite regularly. I've had to diagnose many performance issues with our large code base. Understanding compilers, data structures, networking, OS internals, etc, have all been quite helpful. Even if it's simply finding a starting point for tackling the problem.

Sometimes it's trivial, replacing a for-each loop with something that's log(n) or O(1). Sometimes a little more complicated, like refactoring some code and realizing the original implementer was trying to do BFS but.. wrote something else. And the rarer cases are having to really dive in and trace some odd contention issues. All of these touch on what I learned in college at some level. Sometimes knowing something exists is helpful for looking up later and can save lots of time.

I do wonder if it's less about "requiring" the education and more about someone seeking out the kind of work that uses the education. I know many people in my company are the opposite of me, and definitely do not care to go much deeper than implementing things until they work.

Post reply on HN