Live data from Hacker News

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

simplethread.com

21–30 of 745 posts

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

#21

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 reached quite the opposite conclusion: the purpose of software is to make a computer do work. Then again, I purposely refrain from writing end-user software and focus on backend automation. It is a deliberate choice.

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

#22
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 openly admit mistakes, try to learn from them, and put systemic fixes in place to address them, or do they punish people for mistakes?

If the latter, you end up with nobody admitting to mistakes and a terrible culture, it's not about the people, it's about the situation you have put them in and the incentives given to them.

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

#23
> 13. Your data is the most important part of your system

+1. Most (including me) internalise, if at all, this lesson the hard way through trial and error.

I wish this is was taught in colleges. Software is mostly about manipulating data and it's a pity that not much is taught in a structured manner about building systems around data.

I expected Domain Driven Design (DDD) would address this but it doesn't.

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

#24
post #21

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 reached quite the opposite conclusion: the purpose of software is to make a computer do work. Then again, I purposely refrain from writing end-user software and focus on backend automation. It is a deliberate choice.

For whom does the computer do work?

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

#25
post #15

Earlier quoted context omitted.

Software is whatever you want it to be. I can write software that is not for other humans. That's the most fun part of software engineering to me, when you don't care about the users and just do it just for the fun of doing it.

And, as the article says, your advice and the GP’s are contextual. If you’re interested in creating software that makes people happy, solves their problems, gets cherished and recommended - then work hard to not lose sight of that goal in the thick of crafting a massive code edifice. If you’re interested in pushing the limits of your own creativity, and building a technical structure capable of handling domain comple…

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

Hopefully.

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

#26
post #12

Earlier quoted context omitted.

Isn’t this true of basically any job?

Sure, but that doesn't make it any less useful as a fact - especially when you are working with other developers who choose to try to ignore/avoid it as a maxim. Please don't tell me you've never met such a developer ..

I am such a developer.

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

#27
post #5

Amazingly, I agree with every single point. >> Nobody asks “why” enough This point is the most important IMO. It's so common for people to do things without asking themselves why they're doing it. Every line of code should fulfill a clear purpose. You want to avoid writing code which is difficult to explain to a non-technical person. >> People don’t really want innovation... If you believe in what you’re doing, and k…

Mmm, in my experience, it’s more that people don’t believe that something truly valuable to them comes packaged in your arrogance, brilliance, or effortlessness.

They’re so accustomed to those things being signs of assholes, or reasons to feel inadequate, that they resist looking at what’s being delivered.

The OP’s point about bracing for a long battle means that truly persuading others is not just about making the amazing thing. It’s about having the humility to weather their resistance and care harder than they do about the merits of the way. And patiently, tenaciously demonstrating the value instead of doing anything that seems like boasting about it. Then they’ll stop ignoring you, and you’ll both win.

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

#28
post #8
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…

-1x programmers also exist, in a variety of guises. From the dev with long cv of projects he’s contributed nothing to and been sidelined from, but who manages to keep getting hired because of his cv, to the dev who crowbars in new tech where it’s not needed and causes a ton of problems.

Presumably a 1x programmer is an average programmer. The type who does his job acceptably. He doesn't create huge problems, nor solve them. He is a fine team player and team member, but not a leader. Nobody despairs when he leaves, and he will be forgotten after a few months.

Basically, the majority of programmers.

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

#29
post #15

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

Software is whatever you want it to be. I can write software that is not for other humans. That's the most fun part of software engineering to me, when you don't care about the users and just do it just for the fun of doing it.

So you write code in machine language? Or are you writing in a language that tries to be readable by English speaking humans?

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

#30
post #21

Earlier quoted context omitted.

I reached quite the opposite conclusion: the purpose of software is to make a computer do work. Then again, I purposely refrain from writing end-user software and focus on backend automation. It is a deliberate choice.

For whom does the computer do work?

Other computers
Post reply on HN