Live data from Hacker News

Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

news.ycombinator.com

41–50 of 167 posts

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#42
post #41

I had an interview the other day and they asked a question on Big O notation to which I didn't really know the answer so guessed it. In 10 years of web dev, backend engineering work I've never needed to use it.

You have, you just don’t call it that. You probably know that accessing an array list is faster than a linked list, and a binary tree search is faster than an array list search. What you may not remember is the specific big O notation for those, but that’s not the important thing anyways. The important thing is being able to reason over relative complexities of various operations. When I interview people, I ask the question, but don’t penalize them for not knowing. I penalize them for not being able to re-derive them after reasoning through the algorithm.

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#43
post #21

I find the most useful thing about CS knowledge (and especially algorithms & data structures) is having a hunch for the shape of a problem and knowing what to google for. It can save a lot of thinking and stave off performance problems before they occur. But you’re there to deliver business value and it’s only right that those concerns should dominate. That doesn’t mean you won’t have “this database is completely unm…

Exactly what I am doing. The job is still technical but not so academic

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#44
As you progress in your software engineering career, the level of abstraction of the knowledge you use on a daily basis gets higher and higher. The academic CS concepts underpin everything, but rarely do you need to go below a few levels of abstraction to solve problems in the real-world (at least in most non-cutting edge jobs).

For example, to build a web app the level of abstraction your job requires is probably on the level of web frameworks and API's. Now and then you'd need to understand the web protocols. Rarely would you need to write software involving the low level transport mechanisms. Rarely would you inspect packets yourself and perform verification and decoding through pen and paper. Even rarer still would you need to use maths to design the signaling procedures between hardware components. Point being that it's normal to now know off-hand all the lower level CS stuff, but you recognize the patterns, and in the rare occasion you need to actually access all that information you wouldn't be at a complete loss.

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#45
post #41

I had an interview the other day and they asked a question on Big O notation to which I didn't really know the answer so guessed it. In 10 years of web dev, backend engineering work I've never needed to use it.

You have, you just don’t call it that. You probably know that accessing an array list is faster than a linked list, and a binary tree search is faster than an array list search. What you may not remember is the specific big O notation for those, but that’s not the important thing anyways. The important thing is being able to reason over relative complexities of various operations. When I interview people, I ask the q…

After working for years, you will have gut feeling on whether an implementation is slow or fast. This is done with testing on large N dataset

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#47
post #34

Earlier quoted context omitted.

I don't think it's a waste. Some people going into web development, some into compiler design, some into database optimisation, some into IT management, some into AI, some into 3d game development etc etc. CS is a broad subject. It's pretty much like studying general science in college.

Then why do we not study debugging, naming, maintenance, reading code etc... specifically?

No post body was provided.

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#48

It's normal. And the point weren't to always recall those specific pieces of knowledge, it was to get you to understand those concepts once. Once you did, understanding similar concepts will be easier, you will be able to spot more intricate patterns. Your intuition will be better in situations, where you spot or create things seemingly out of nowhere.

Exactly. I can not remember all of the isolation levels for each type of database engine but I know what can go wrong and that my application has to be somewhat aware of them. I have to research each particular engines' isolation level against my application requirements every time. Yet, I manage to forget the behavior of the common ones readily despite having studied them in-depth numerous times.

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#49
post #34

Earlier quoted context omitted.

Then why do we not study debugging, naming, maintenance, reading code etc... specifically?

Because those are all closely tied to the specific programming language, editor, complier etc that you use, which will change repeatedly over your career.

No post body was provided.

Re: Ask HN: Working as a software engineer for 5 years, I've forgotten all CS stuff

#50

Earlier quoted context omitted.

As a CS prof of mine once said, studying CS to be a programmer is like studying architecture to be a house builder...

Poor comparison, imo.

Apt comparison, if you've ever worked in construction: platform home designs use re-usable elements that are requirements- / market-driven, with designers and structural engineers as part of the process. All architecture programs mix engineering and design / aesthetics tracks, both of which are covered on the ARE exams (loosely speaking).

Discussions regarding PE-style certification for software development often get stuck in the mud, but I'd wager that we'll see something emerge in this generation for general development (as it already exists for safety-intensive applications). And crypto may actually increase the demand for formal proofs and other deep CS concepts.

Your CS prof may have made the remark with some degree of disdain, though there are quite a few programmers / developers out there making better money than a college prof (excluding those working in private consultation).

Post reply on HN