Live data from Hacker News

Things I’ve learned in my 20 years as a software engineer

simplethread.com

181–190 of 745 posts

Re: Things I’ve learned in my 20 years as a software engineer

#181

40+ years of experience here, and I'll tell you the #1 thing I've learned: * Software is a social service. Its for other humans. Incredibly, it doesn't matter how educated the developer, they still seem to have to learn this lesson themselves, over and over, until it sinks in...

I fully agree with this.

Re: Things I’ve learned in my 20 years as a software engineer

#182
post #59

Earlier quoted context omitted.

With that argument you could say that everything humans ever did was for humans. So either it is a platitude or it is wrong.

You could say that, but my cat thinks you'd be wrong. However, I'm yet to see my cat boot up the computer.

My cat would often turn the computer on or the tv off, and I swear he did it on purpose because that's when he was complaining he didn't got enough attention.

Re: Things I’ve learned in my 20 years as a software engineer

#183
post #32

Earlier quoted context omitted.

Even if YOU are the only user, you're still writing software for a human. Hopefully.

Well, you could create software as art. Basically to create it for the fun of creating it, not to use it. But yeah, the end result is useless then, and can be thrown out.

Or, like some art, of variable degrees of folks caring about it based on other interesting properties - and made for some purpose other than maintainability.

Demoscene, obfuscated coding contests, etc. seem to fall under that category.

Uselessness in the eye of the beholder or something like that.

Re: Things I’ve learned in my 20 years as a software engineer

#184

40+ years of experience here, and I'll tell you the #1 thing I've learned: * Software is a social service. Its for other humans. Incredibly, it doesn't matter how educated the developer, they still seem to have to learn this lesson themselves, over and over, until it sinks in...

I do a lot of dev work with non-profits and such. About a year ago I was working on an extremely difficult project as a volunteer where I was insistent that a specific part was vitally important to getting the project to move forward (generalizing tables extraction from scanned OCR docs) and I was spending a lot of time on it. One of the devs I worked with, with 40+ years of experience, basically told me this exact thing. He argued that what I as working on was a waste of time and that I shouldn't work on "code golf" problems, because of the likelihood of failure and that ultimately I should consider the human side of the problem. He said it was best to work on other things instead.

Fast forward a month later, I managed to actually do it, and it worked almost flawlessly, across about 100k scanned PDFs. Multiple long-term projects spawned off from the extracted information, including some projects from the dev who told me to stop.

My point being -- sometimes it seems like that line is used as an excuse to not tackle hard problems if they seem likely to fail. I agree with the line, and it's the exact reason I worked on it as hard as I did, but the dev failed to consider that I understood the social part of the problem, on experienced principle.

Re: Things I’ve learned in my 20 years as a software engineer

#185
post #6

This is a very insightful list. But there is one thing I'd quibble with: while it's inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the "can support a company by themselves" sense and the "mad lone genius" sense. Not all the 10x programmers are good at working with other people or on other people's ideas. 0.1x programmers are often lost or afraid, although they may just be uni…

Saying 10x programmers are a myth because it's crazy that someone could do in 1 day what another could do in 1 week makes the assumption that both programmers in the example have the same amount of context, background understanding, and experience. The benefit of talented engineers comes from the fact that they avoid costly pitfalls - not that they pump out more code per hour worked. I feel this "10x programmers are…

Realistically, I’ve always found it a weird sentiment more because issues caused by software developers are not of the “this person is 1/10 as productive as this other person” type. A bad developer isn’t a low positive effect on a project, but an active negative effect. As such, you can put literally any Y for a (Y)X programmer, since the scale of how inefficient a programmer can be goes up to infinite.

I think the pushback against 10X programmers comes primarily from the fact that many programmers who look good to managers (constantly push out new features) are in actuality an albatross around the necks of the other programmers who constantly have to fix the messes they create (in reality, a negative on team-wide production). What matters more to me in a teammate than how productive they are is to ensure that they are on the positive side of the scale at all, which the perceived 10X programmer is often actually a failure at.

Though I’ve definitely met people who just have such a wide knowledge base and think so quickly that they are in fact 10X as effective as a standard productive programmer, so I do understand where the idea comes from.

Re: Things I’ve learned in my 20 years as a software engineer

#186
post #41

Earlier quoted context omitted.

My go-to examples of 10x developers are benevolent dictators like antirez (of Redis), evanw (of esbuild + Figma CTO), youyuxi (of Vue), Carmack, etc. Both qualitatively and quantitatively, their output is at least 10x of a typical developer at a typical company, not even counting everything these people do besides writing code. Many more are not famous but are in the same league of impact/productivity - I'm genuinely…

To pose it another way: for general software Dev (not some niche use case that only one guy understands), let’s say building websites in Vue or React, the idea of a 10x developer is that they can work in January and another, average, programmer can then spend February, March, April, May, June, July, August, and Sept… and the average guy won’t get more done? Or they come in only every other Monday and contribute as mu…

That definition is too narrow. How about this one: can someone work for 1 year and (consistently) produce 10x more value for their organization than the median engineer? This seems transparently true if you've worked in any large organization.

Re: Things I’ve learned in my 20 years as a software engineer

#187
post #142

Earlier quoted context omitted.

I've met a lot of people who are writing code to satisfy requirements and collect a paycheck. They're good people, but just don't automatically think about the end user. They stop when the requirements are met, instead of when the user will be happy. That's what they're supposed to learn from that, IMO.

> They stop when the requirements are met, instead of when the user will be happy. that's because they are doing software "for other humans" - aka, their manager and PM, who gave them the requirements. So the problem is not the software engineer, but the person who creates those requirements to be fulfilled.

I think what the parent may have been complaining about is essentially myopia in interpreting things - ‘well, this technically checks the box of what they ask for’ while willingly avoiding thinking about the larger context of what is being attempted or trying to understand requirements that don’t make much sense.

Don’t get me wrong - it has it’s place, and if everyone always tried to understand everything, there are a lot of organizations and situations it would be crushing - but it’s also very frustrating in many situations for those who want high quality products.

It’s the ‘not my job’ syndrome, essentially.

Re: Things I’ve learned in my 20 years as a software engineer

#188

> 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be I found that another thing which separates a junior from a senior is tendency to give up and cut corners. Stuck a wall making that integration test work? get back to it after the current task, don't settle on manual testing. But maybe that's a trait of bad developers, rat…

I really disagree with point 11. I've seen and worked with so many "senior" engineers who had wretched opinions about everything. One thing in particular is what I like to call "perl behavior". The structure and logic makes perfect sense to the developer but is borderline gibberish to anyone else. Eventually senior software engineers enforce their view as the baseline(which is over flooded with anti patterns) to junior developers and they too end up pouring buckets of the same gibberish everywhere. For example custom built linters which partially follow some standard, and partially doing the complete opposite of what the standard says. But you know... The senior engineers enforce it and 2 years down the line when the junior jumps into another job, it's back to the basics all over again. Anyone with X number of years of experience has strong opinions, that does not make anyone "senior". To my mind, point 11 should be the ability to consider, shift or change your strong opinions when presented with an alternative.

Re: Things I’ve learned in my 20 years as a software engineer

#189
post #6

This is a very insightful list. But there is one thing I'd quibble with: while it's inherently a super-subjective metric, I would say that 10x programmers do exist. Both in the "can support a company by themselves" sense and the "mad lone genius" sense. Not all the 10x programmers are good at working with other people or on other people's ideas. 0.1x programmers are often lost or afraid, although they may just be uni…

People are often willing to sacrifice any amount of development velocity to avoid being seen to make mistakes. IMO that attitude never makes sense - it can make sense to avoid certain mistakes at all costs (self-driving car), but it never makes sense to try to avoid blame for them (company refuses to admit their car isn't good enough). This is a problem of culture, not individuals. Does the culture at a company openl…

No, it's also a matter of personality. One manager used to urge me to do things in half the time at 90% of quality, and stop chasing the remaining 10% at such high opportunity cost. To this day, I try, but it's hard to overcome a natural, obsessive tendency.

Re: Things I’ve learned in my 20 years as a software engineer

#190

> 11. ..... > Nothing worries me more than a senior engineer that has no opinion of their tools or how to approach building software. The more you learn the more you realise you were wrong. Having an opinion has often come to mean one is a fan boy of something and will have it no other way. I have heard team leads say "this python code is bad because it uses no classes" or "we need to use EMR so we can process all cu…

> I have heard team leads say "this python code is bad because it uses no classes" And they'll say it's "best practice". "best practice" has basically come to mean "whatever that particular developer knows/likes"

Just to be fair: in Python, there are "best practices". They're in PEP-8.

If someone is making a claim about anything outside PEP-8 (like whether to use classes) or worse, AGAINST PEP-8...that's when you know there's a problem.

Post reply on HN