A computer science study plan to become a software engineer
211–220 of 220 posts
Re: A computer science study plan to become a software engineer
#212This 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…
...otherwise known as the vast, vast majority of work in "most software engineering roles", as the parent commenter mentioned.
They didn't say CS knowledge was unimportant. They said it wasn't directly used in most SWE work. That's entirely accurate. They did not comment on whether the products of computer science are involved in most software engineering (of course they are, but I don't need to remember A* to use a graph database). They did not comment on (rare) roles in which that knowledge is required to make groundbreaking advancements.
Re: A computer science study plan to become a software engineer
#213This 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…
Engineering is about learning how to learn. It's a skill you should use every day. If all someone knows is plumbing API and rote memorized glue code, don't expect much. If someone went through CS, expect to see a different caliber of work for the same task. Believe me, it's night and day and a lot of orgs have no clue what real engineering talent looks like: they never had any to begin with!
I disagree. See: hordes of new CS graduates that feel they are completely unprepared for an entry-level software engineering job, or their interviewers.
Re: A computer science study plan to become a software engineer
#214Earlier quoted context omitted.
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 solutio…
A particular example I remember was a poorly architected system that was essentially two systems connected like queues in sequence. The first one was fast and lightweight, basically a gateway/hydrator for the second one, and could handle a very large backup with no ill effects. The second one was very slow and fell over quickly if too many items accumulated in the queue during a load spike. An easy short-term fix to make the system stable in production was to introduce artificial slowness in the first queue to buffer load spikes and prevent backups in the second queue. Little's Law points straight to this solution, but people who didn't have queueing theory in their mental toolkit had not considered fixing the system by slowing part of it down. It looked like a big leap of imagination for them, even if they found it intuitive to understand after it was pointed out.
Re: A computer science study plan to become a software engineer
#215Re: A computer science study plan to become a software engineer
#216Earlier quoted context omitted.
I also don't have a CS degree and am self-taught. And I very much agree with you that many CS concepts have quite a practical impact. Some of them more on the side of approach and selecting the right tech/solution, but some have a more hands-on practical use. - State machines: completely agree. I use them especially in the context of user facing stuff, like GUIs, animations and so on. In fact I would even argue that…
> Relational algebra Seriously? Currently working through my second databases course, I still can't help translating all of the relational algebra nonsense into proto-SQL in order to make sense of it. I was already working on large-ish business applications and databases for a few years before the first course and I didn't even know RA existed. Now it just gets in the way. Not to mention relational expressions or wha…
Re: A computer science study plan to become a software engineer
#217Earlier quoted context omitted.
Engineering is about learning how to learn. It's a skill you should use every day. If all someone knows is plumbing API and rote memorized glue code, don't expect much. If someone went through CS, expect to see a different caliber of work for the same task. Believe me, it's night and day and a lot of orgs have no clue what real engineering talent looks like: they never had any to begin with!
> If someone went through CS, expect to see a different caliber of work for the same task. I disagree. See: hordes of new CS graduates that feel they are completely unprepared for an entry-level software engineering job, or their interviewers.
The employer really expects devs to be productive on day one and not have any training to do. Often they whine that a CS education isn't more like a bootcamp. But that's not how it works.
Re: A computer science study plan to become a software engineer
#218Earlier 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 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
#219Software engineering is all about making that domain knowledge useful. So sometimes you can just be lazy and "import" the knowledge.
Re: A computer science study plan to become a software engineer
#220Earlier quoted context omitted.
Big N for all N in Facebook, Amazon, Apple, Netflix, Google ...
I don't think Netflix actually belongs in there, it's just that if it weren't the acronym would be FAAG, and if you say you want to work for a FAAG company people will assume you're talking about Grindr or Mozilla or something.