Live data from Hacker News

A computer science study plan to become a software engineer

github.com

161–170 of 220 posts

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

#161

Earlier quoted context omitted.

Word problem? That's not a technical challenge. That has to do with writing and communications, which are ubiquitous to all types of work. I think you're misunderstanding the premise here.

I think you're mistaking work for being puzzle-solving. Work is always about people. If it's not about people, it's probably research, which is different from work.

Work is a function of people and problem solving. A balance between the two provides an effective and productive environment for producing good work. I wouldn't praise or idolize the notion that work is always about people.

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

#162
post #95

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…

Maybe it's easy to overlook these things when you have a really deep computer science background, but coming to software engineering from a non-CS background (math degree) I found lots of valuable knowledge in CS. The most important parts for me would be: - State machines. I run into a lot of state machines, especially incompletely specified ones. Not that everybody gets these wrong if they haven't studied state mach…

> State machines

Probably one of the most powerful tool out here. You can catch a lot of things simply by identifying which state transitions should be possible and which shouldn't exist

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

#163
Let us use machines and mechanical engineer as an analogy.

These days, you don't need to be a mechanical engineer to operate 'most' machines.

Will being a mechanical engineer help if the machine breaks down? Yes. Will there be some machines that only a computer engineer could operate? Yes. Will there be come cases where being a mechanical engineer make you a better machine operator? Yes. But do you need to be a mechanical engineer to operate most machines? Answer is clearly no.

We are at the point where that analogy carries over easily to computer science and coding. Yes, there are many cases where knowing computer science will be essential to extremely helpful. But for 80% of the coding jobs, you don't 'need' to know theoretical computer science.

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

#164
post #95

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…

Maybe it's easy to overlook these things when you have a really deep computer science background, but coming to software engineering from a non-CS background (math degree) I found lots of valuable knowledge in CS. The most important parts for me would be: - State machines. I run into a lot of state machines, especially incompletely specified ones. Not that everybody gets these wrong if they haven't studied state mach…

Can you please describe when you had to use formal queueing theory in your work?

I have struggled - and failed - to find a use case relevant to daily SWE work, since (a) the probability distribution for most customers waiting in a queue is not known and must be "guessed" or predicted ahead of time using historical data and (b) nearly all queue requirements are simple (i.e. minimize total waiting time) and the solutions just as simple (scale up your queue consumers!)

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

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

> but grinding leetcode will give you a better chance of passing the coding interview compared to studying CS theory

It may surprise you to know that any LeetCode question can be easily answered by those with a solid education and background in computer science. Ironically enough, because this mindset is popular within the industry, you end up with quite a few interviewers who lack the ability to understand any solution they have not memorized. It's always fun reading posts of someone failing an interview because they gave a more optimized solution, which was different from what the other guy in the room had, and couldn't be convinced he was wrong because he didn't understand how mathematical proofs worked.

Discrete math, basic linear algebra, and a few mathematical concepts in computing, generally cover all the possible questions you can get. What I like to do is quickly scroll through all the LeetCode/HackerRank questions, identify which ones I'm unable to quickly label with the type of math to be used, and then learn that math subject/topic. It takes me more time learning the math/theory, it takes me longer still trying to memorize every possible solution out there.

Spend on the history, end all the mystery. Or just keep trying to collect all the rocks in the world.

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

#166

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

Well said.

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

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

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

> What's more important in this industry, or any field really [...], is knowing how to learn - especially at the junior level.

Here we completely agree.

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

I disagree.

Using CS problems has two advantages. The first is that it establishes a common vocabulary. The second is that it's stack agnostic.

Personal projects are great, but sometimes it's hard to tell how much help they got from the internet...

Being able to learn CS fundamentals is, to me, a bigger predictor of later performance when they'll be tasked to learn Enterprise X Custom Stack that's not really covered online instead of Well Documented Framework With 1000 Examples.

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

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

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…

I have no experience in the field and I would like to quickly get in it. I want to dive in with experience and I’m trying to figure out what things would get me there quicker if someone wanted to tutor me at work. What would you say are the things in your experience that are most useful to be able to contribute in a development team?

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

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

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

What is the base knowledge you’d like to see if your boss brought you someone new and told you ”he’s going to be learning with you”?

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

#170

Earlier quoted context omitted.

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.

But you did teach yourself the fundamentals to do your job. So this isn't a good argument against the practicalities of applying CS knowledge in software engineering?

Everything you've listed - communication, organization, and self-management - are qualities of a strong student. These are skills from college that last. I don't know a single successful student who got by on his own or did so without being extremely disciplined. Outside of the homework/exam grind, college was far more social than work life ever was.

Post reply on HN