Live data from Hacker News

A computer science study plan to become a software engineer

github.com

141–150 of 220 posts

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

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

Currently writing software for electrical engineers. One example that comes to mind is graph theory. I use it frequently to answer questions about the data I'm looking at.

Imagine an electrical distribution network where there are 3 phases (A/B/C) and an overhead line can contain any combination of those phases. These networks can be modeled as a graph with nodes connected by links. The links do not have a direction, but they do have a phase. If you want to know what the phasing is at any point in the network, the way to figure that out is to use graph algorithms.

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

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

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

But isn't that generally true for most education and most jobs? For example, what percentage of Real World work that requires a high school degree, actually involves high school geography academic knowledge?

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

#143

Earlier quoted context omitted.

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

Well good thing you learned to read, write, be disciplined and be organized in school along side CS.

I didn't learn CS in school. I'm self taught. I'm 20 years into my career.

That doesn't mean I don't respect a CS education, but I don't think this kind of testing is a good measure of potential.

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

#144
post #139

Earlier quoted context omitted.

Unix was cutting edge OS theory? I mean, it was Bell Labs, and they were probably the premiere research facility in the world at the time, but my impression is that the trick on Unix was how small they were able to squeeze it, not that it was pushing theoretical boundaries. Can you point me to any aspects of Unix that were theoretically new?

What we take for granted today was once brand new and hard won.

True. But what was new in Unix? What specifically?

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

#145

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

The reduction of a technical problem to a word problem is the application of years of accumulated knowledge, including, in many cases, Computer Science concepts.

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

#146

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…

Reading and reviewing code: getting a feel for performance, appropriate use of data structures, implementation strategies, etc. As you get more senior, you spend more of your time reading code and are expected to offer insight and mentoring.

And, there is always pride of workmanship. There is a lot of beauty and elegance in computer science, appreciation of these things can have positive effects on morale, implementation quality, maintenance, and performance, and teamwork.

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

#147
post #96
post #57

The most important thing on your path to becoming a software engineer is building stuff, improving it, releasing it, and thinking how you can do it better. Having been through the lifecycle of a piece of software from design to maintenance will also provide a wealth of experience. I understand that it's popular to let people solve toy problems during interviews, and think that's ok for people coming out of university…

I strongly agree with this point. Most of day-to-day problems in software engineering / craftsmanship (i.e. the work most people are paid for in this industry) are not computer science problems, they are about the process of understanding your user requirements, iteratively improving your product, achieving and maintaining the appropriate level of quality, and the meta-cognitive skills around identifying when you jus…

The problem is more and more companies will not let you have a chance to do any of the above without first jumping through the fiery blazing hoops that comprise of solving the "toy problems" of a typical leetcode technical interview.

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

#148

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…

Before we lend your comment any credence, do you mind listing the projects you've worked on?

Groundbreaking software engineering projects that advance the state-of-the-art, like Google's Map-Reduce-based scaling architecture back in the day, or ones that provide some non-trivial edge or advantage, like the tight integration of hardware and software in iPhones (and the resulting responsiveness and battery life), or ones that provide high-assurance and provable correctness (Rust, Haskell, etc) actually do require CS knowledge.

Whenever someone makes a comment like this, I just assume their work thus far has consisted of linking together pre-existing building blocks to make web or mobile apps, rather than anything completely original or state-of-the-art.

And it's good that the industry has gotten to a point that such a job opportunity exists for so many people. But keep in mind it was only possible by decades of development of layers upon layers of abstracting away most of the CS into easily composable libraries, APIs, and other components. You many not need to know algorithms and datastructures yourself, but you're definitely using them by building on them and with libs that encapsulate them.

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

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

90% of jobs in software engineering require very little CS knowledge. Yet interviews for entry level software engineering jobs focus 100% on CS 101.

It's not that CS knowledge is useless, in fact it's great to know the theory. It's just not the top priority in terms of doing everyday work. Recommending an aspiring engineer prioritize CS (outside of what you need to pass interviews) is like recommending an aspiring pianist to master music theory. Nice to have, sure, but not an efficient use of time.

Also when people defend the importance of knowledge of CS theory in this industry, their seems to be this implication that CS theory somehow can't be learned on the job. As if it's super complicated and only "real" engineers have the intelligence to pick it up. A load of crap. For example, I once had to use graph algorithms on the job (probably the only time I've ever had to use CS on the job), and I didn't remember any of that stuff from school, so I took a day or two to read up on graph data structures & algorithms, and was able to get the job done.

What's more important in this industry, or any field really (unless maybe you're doing something super special like nuclear physics), is knowing how to learn - especially at the junior level. That is way more important than any knowledge. Of course you need to have some base knowledge, but any junior engineer working their first job is going to have a hell of a lot to learn anyways, so for an entry level role I'd rather pick the smarter person who's dabbled in his own projects and is eager to learn than the CS major who's expecting to be tackling interesting CS problems all day at work - unless of course the job actually requires this which until now has never been the case for any of my software jobs.

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

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

It's a little frustrating how random the process is. I'd consider myself to have a decent resume for an undergraduate. I've interned at a "big N" so to speak, I've done side projects that are relevant in my field of interest and I'd consider myself to have amassed some domain specific knowledge. Yet my resume gets random rejected/ghosted from a remarkable amount of places. It's especially bad when I don't fit neatly…

If you want to do temp work then go to some contracting agency. Good companies want longer term commitments.
Post reply on HN