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...
Things I’ve learned in my 20 years as a software engineer
181–190 of 745 posts
Re: Things I’ve learned in my 20 years as a software engineer
#182Earlier 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.
Re: Things I’ve learned in my 20 years as a software engineer
#183Earlier 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.
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
#18440+ 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...
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
#185This 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…
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
#186Earlier 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…
Re: Things I’ve learned in my 20 years as a software engineer
#187Earlier 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.
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…
Re: Things I’ve learned in my 20 years as a software engineer
#189This 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…
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"
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.