Live data from Hacker News

Software development is a loser’s game

thehosk.medium.com

91–100 of 159 posts

Re: Software development is a loser’s game

#91
post #72

> Amateur software developers dislike (...) I think that's wrong way to put it. I think the difference between pro and amateur might be, even if both dislike something, pro will understand he needs to do it properly anyway and why. For example, I dislike writing unit tests. In many years there has not been a single time the unit test saved me from anything. I tend to be very pedantic when writing code extremely caref…

> In many years there has not been a single time the unit test saved me from anything.

You've never even made a typo that a unit test has helped you spot? You've never, ever, had a unit test show you that one of the assumptions was wrong that you made about the behaviour of a piece of third party code?

That seems mighty unusual to me...

Re: Software development is a loser’s game

#92

> If we invert software development, the goal isn’t then to write code that works, it’s spending time on avoiding writing poor quality code and bugs. This line is packaged to sound really insightful, but is it? The goal of software development is to create software in support of some greater mission. That mission might be to make someone's life easier, to make money, to advance human knowledge, or many other things.…

I think you're right, but I also think the author isn't necessarily wrong.

Using his tennis analogy, each chunk of code written is like swinging at the tennis ball. You don't have to have the perfect curve-ball, you just have to NOT screw it up.

I've too often seen developers try to attack the ball with the perfect swing and the most force possible, only to have it go straight into the net. If they just focused on getting it over the net as simply as possible, the end result usually means less code that's easier to understand.

Example: junior dev needs to write a data transformation pipeline. They write a microservice and deploy it in Docker on Kubernetes. They do a lot of hand-wringing about reactive design and non-blocking I/O. They end up wrestling with the deploy and getting it done on time. All it needed to be was a simple single-threaded command line utility.

In 15 years, I've seen this story play out tons of times... I'm basically watching devs trip over themselves. I'm not saying I'm perfect either, this has happened to me too.

Re: Software development is a loser’s game

#93
post #62
post #11

Because long-term maintenance isn't the concern. Most devs switch jobs in 2-5 years (or at least that's the common advice given). So the incentive is to play musical chairs, and hope that you've moved on by the time the music stops. Software has also been such a new field that it was the startup that moved fast and broke things that got the prize rather than the slow but stable company. I think this is changing (lowe…

I think the heart of this isn't devs changing jobs. It's execs. I know plenty of devs who will be "irrational" about quality in that they build for sustainabilty and longevity far beyond their personal economic incentives. But when those same devs go up the chain to improve practices or clean up tech debt, they rarely end up happy. I think that's because executive turnover is also fast and the rewards for underinvest…

Being irrational about quality does not lead to easier to maintain software. You need to be rational about it and the distinction matters a lot.

You can go all petty on minor idioms and force everyone to use all the sonar rules and all it will create is a lot of busywork with zero improvement on maintainability. And I have seen this dynamic to happen more then once.

Re: Software development is a loser’s game

#94
post #43

Earlier quoted context omitted.

There's very much almost a meme of those programmers who tell us all how everyone else is doing it wrong ... but their whole idea about who is doing it wrong seems to be entirely driven by how often they're inconvenienced by other people's code, but never account for how often others are inconvenienced by their code. I get inconvenienced by other people's code all the time, but it's so easy to assume when you're look…

One of the best experiences I had that humbled me was getting irritated by the inconvenient/obscure code I was dealing with. It was clever as hell, but impossible to understand and even harder to work on. It wasn't buggy but we needed to add a new feature and it clearly didn't anticipate that. I spent hours cursing the bastard who wrote it. Finally after I was done and checked in the changes, I looked to see who had…

Oh yeah, I’ve done that one a few times. However! I’ve also had a couple of cases where I was really happy with whoever had written something only to find out it was also me. Very rewarding.

Re: Software development is a loser’s game

#95

An ask of anyone reading this article: Please don’t let yourself become a smug or cynical programmer. Too many programmers read articles like this and assume that they are the 20% of good programmers while everyone who disagrees with them is the 80% of amateur developers: > I have worked in software development for 20 years, worked on many projects with many software developers. I estimate 80 percent of software deve…

> developers forget that the goal is to ship software and instead focus on doing everything the most correct I'm far, far more frustrated by developers who focus only on shipping software and making dates by cutting corners wherever they can and leave everybody else to deal with their gigantic mess later.

That is squarely and fully leadership issues. I means this 100%. The way to avoid this are fully in management and leadership hands.

Re: Software development is a loser’s game

#96
post #36
post #11

Because long-term maintenance isn't the concern. Most devs switch jobs in 2-5 years (or at least that's the common advice given). So the incentive is to play musical chairs, and hope that you've moved on by the time the music stops. Software has also been such a new field that it was the startup that moved fast and broke things that got the prize rather than the slow but stable company. I think this is changing (lowe…

Also there can be other real life business constraints. Sometimes the project need more devs but there aren't any to add. Sometimes the deadline is truly set in stone and if you miss it you are truly fucked. In times like these you have to cut corners and these are the easiest corners to cut for short term speed. "Amaterur vs professional" feels "Good vs Bad" for me but real life is never as simple as that.

The fun starts when you later get blamed for cutting those corners in response to that true business requirement.

Re: Software development is a loser’s game

#97
post #3
post #2

Lists some things that allegedly "amateurs" dislike without providing an ounce of evidence.

Proving those points wasn't the goal of the article. His audience was people who already accept them.

Judging from HN discussion, his audience was offputted by article.

Re: Software development is a loser’s game

#98

> If we invert software development, the goal isn’t then to write code that works, it’s spending time on avoiding writing poor quality code and bugs. This line is packaged to sound really insightful, but is it? The goal of software development is to create software in support of some greater mission. That mission might be to make someone's life easier, to make money, to advance human knowledge, or many other things.…

I think you're right, but I also think the author isn't necessarily wrong. Using his tennis analogy, each chunk of code written is like swinging at the tennis ball. You don't have to have the perfect curve-ball, you just have to NOT screw it up. I've too often seen developers try to attack the ball with the perfect swing and the most force possible, only to have it go straight into the net. If they just focused on ge…

This is the type of practical experienced based advice that was missing from the original post.

I completely agree with you.

Re: Software development is a loser’s game

#99

> Unit testing In the game development, videogames are primarily tested by humans. Games are highly interactive pieces of software often running on a variety of hardware with complex agent-based simulations. Are all game developers "amateurs"? I don't think so.

Videogames overall are primary tested by humans, but smaller components inside them do have unit tests. Unit test and integration testing are two different things.

Re: Software development is a loser’s game

#100
The title is a little clickbaity. In my engineering management experience I instill the following values to decent success.

* Write tests for almost all code. * Code review with peers. * Deploy frequently with roll-backs. * Reward each other when things go well. * Help each other when things go wrong.

This leads to high test coverage, good knowledge sharing, progressional changes, and a healthy work culture.

Post reply on HN