The postoffice horizon scandal in the UK has put the spotlight on the coding practices of Fujitsu.

With the publishing of some code snippets, several people who have looked at it have replied "Wow, are they paid by the line of code?"

Which, while often meant as a joke, has some basis in history, and it opens up the discussion, of how do you incentivise programmers and how do you judge their achievements for the basis of bonues?

It's thread time.

1/n

Follow

In the past shortly after programming went from being considered women's work, to being considered men's work (see my thread about thread, and how weaving changed from women's to men's work). Management found themselves with the problem of how to judge the performance of their programmers. You can judge a brick layers performance by the number of bricks layed, a rivet maker by the number of rivets. What's the output of a programmer? It's line's of code.

2/n

· · Web · 2 · 2 · 8

So for a short time you'd get people paid based on the number of lines of code written. Thus rather than a one line for loop such as for(i=0; i<10; i++) dosomething();, you right out do something() ten times, thus your lines of code output is higher, your pay higher. Everyone's happy. Right?

Ye gods no, you end up with write once code that's a fucking nightmare to debug.

Fortunately such practices didn't last very long. Generally.

But the problem remains. How do you judge performance?

3/n

With the modern age of version control systems and the like, we see managers using things like number of commits to git. Or new features added. Etc...

Which on the face of it sounds great. Except you encourage people with your bonus structure to write more, to add to the code base. This doesn't make for the best quality of code base.

To quote the bankers after 2008. "The incentives were wrong".

4/n

With these metrics, you discourage the sort of user who spends 3 weeks fixing a bug that's been in the code base for 3 years. In the end they removed one line, to fix the bug. By the metrics: -1 line. 1 Commit. Clearly they aren't doing as well as the person who added 1000 new lines of code... across 15 commits.

I have genuinely spent 3 days on one bug, and fixed it by removing one character.

Deleting code is often one of the best things a programmer can do.

But it's disincentivised.

5/n

In the modern age of agile with sprints and stories etc... it's easy to setup a bonus structure of complete x stories, finish x sprints, do x commits. But to do so is Just Bad Practice™.

I'd like to say I'm able to give you an easy system for how to incentivise your programmers, how to make sure they have a bonus to work towards. But there's no easy solution here.

Personally I dislike bonus structures and incentives that are solely based on my performance. I work as part of a team.

6/n

The bonuses should be based on the whole team. Or ideally, the whole company. This allows you to concentrate on the quality of the product you produce, not simply hitting numbers for actions taken in the code base. We've seen disasters of projects where the programmers are burning themselves out in crunch before a release date that was always unrealistic. All that guarantees is a bug fix release a few weeks later. Late is better than buggy in most cases.

7/n

There's a lot of problems in the software industry. From poor working conditions, to poor software development practices. But most of them stem from poor management. Pushing the wrong incentives, pushing the wrong goals. This is how we end up with a simple mobile app that's 300 meg to install. Or a code base with 4000 dependencies noone fully understands.

So if you manage a group of programmers. Stop. Step back.

8/n

Step back and have a think about what you are doing to make sure that what you produce is the best quality it can be. Often this will mean freezing new features. Letting your staff fix those bugs that they've wanted to fix for years, but not been able to. Stop chasing metrics on commits and features added. You'll make a better quality product, and your customers will be happier. But more importantly so will your staff.

9/n

Burnout is a major problem in the IT industry, not just in software development. Insane on call rotas, poor management practices. They are incredibly widespread. Even in the poster child MAAAD companies. Especially at MAAAD.

You've all seen the joke. "What's the difference between a programmer and a lightbulb? The lightbulb stops working when it's burntout". But it cuts really really deep. I see so many people in this industry who are almost destroyed by burnout.

10/n

I have the big fear that in the case of Fujitsu, and the post office horizon program. The people who are going to be up against the wall. Maybe even see the inside of a prison cell. Won't be the management, or prosecutors. It's gonna be some poor programmer, who was at the start of her career. Who was just trying to keep their job by meeting the ridiculous goals set by their poor management. They won't be able to hide behind "just following orders" cos they will be too inexperienced to...

11/n

... have kept the evidence necessary to cover their arse. The same way that in the volkswagen emissions scandel. The only person who saw a prison cell in the whole VW fuckup, which increased pollution and harmed us all. Is one engineer. Noone in management. Noone who set the goals for the project. And I fear it will be the same for Fujitsu.

And all of it. From the top, to the bottom of the program comes down to one simple problem.

The incentives were wrong.
12/12.

@RustyCrab @quixoticgeek ya i know mint's instance also has that character limit, @iamtakingiteasy anytime you want you can up it too so i can for once post chud.exe in its entirety
@lina @RustyCrab @iamtakingiteasy @quixoticgeek do you want a cookie or are you trying to offer helpfulservices to other users of this network/? Hmm? Do you have an answer? DO YOU HAVE AN ANSWER!?
@diurnalfreak666 @RustyCrab @iamtakingiteasy @quixoticgeek only if the cookie is tasty, then i want a cookie
hey actually, could you get me that big pink cookie from the valve snack bar interview? i wouldn't mind trying it, it's probably strawberry flavor
@lina @RustyCrab @iamtakingiteasy @quixoticgeek I'm not sure what you're asking I'm going to break open my mind vault in a bench vice wait and see
@lina @RustyCrab @quixoticgeek That would be just mean. Let's not inconvenience everyone indiscriminately just for the sake of it.
@quixoticgeek the only incentive I have not to murder you is that I have compassion for all living things for I am a boddhisvata of the dirt

@quixoticgeek I cant prove this, but the inhumane treatment of engineers is a feature not a bug in the computer games industry. Burnout as a technique to deter worker negotiation power.

Elsewhere, especially in tech, the labor market has been tight for a most of the last two decades has at least provided incentives to retain.

With the mass layoffs as the investor subsidized and low interest rate fueled ride comes to a halt, retention may be deprioritized.

@quixoticgeek very much so. These things often originate after a change of management where they don’t know what’s going on, and pick up these recycled ideas from passing mgmt consultants.
Any metric with an silently gameable feedback is bad.

@quixoticgeek Decided to add this becomes an institutionally bad idea when this sort of fraud takes so long to uncover that all the main beneficiaries have moved on (leaving one or two minor peripherals as the only available scapegoats)

Plenty of examples just now …

@quixoticgeek I just plain won't work anywhere where I have to be given bonuses to get what I think I'm worth. I prefer to be paid well, not get bonuses, and if the boss thinks I'm not performing well enough he can fire me.

@quixoticgeek
I used to work at a place with a profit-sharing bonus. It was honestly run, AFAIK, and everyone had reason to help everyone else succeed.

New upper management came in and decided that program “rewarded freeloaders.” They replaced it with a competitive bonus system.

If my pay depends on “performing better” than you, I have no financial incentive to help you do your job. I have incentive to hoard information, hog credit, shift blame, see you fail.

@quixoticgeek

(They also pulled the “unlimited PTO” scam. I got out of there.)

@caracabe Yep. I have turned round to a colleague and said "I have this list of tasks I must complete to get a bonus, I don't have time for your request, go talk to my boss and get him to swap things round"

We changed the bonus system the next year.

@quixoticgeek I definitely feel this immediately after spending two very late nights deciding my own code and fixing a number of significant bugs, most of whose fixes were just a few characters. Ref: blog.kamens.us/2024/01/26/ramb

@quixoticgeek As someone currently involved in systems analysis (processes rather than code), I call that incentive perversion. Like a requirement to sign off something within X number of days drives people to sign it off before it has been adequately resolved. Happens everywhere, like sticking a cone on a pothole and closing off the report because people won't drive into it now, right?

@quixoticgeek

Also, instead of using a DB for the zip codes, store them as variables, so you have one or more line for every town.

@quixoticgeek

There's an old documentary from 96 called Triumph Of The Nerds (time has not been kind to it but it's interesting) in which Steve Ballmer is talking about the "dancing with IBM" days and their company culture being obsessed with "kLOCs" or "kiloLinesOfCode," so they'd ask each other how many kLOCs their project is in much the same way boys might measure their johnsons at camp.

"If I can do in one kLOC what your code needs five kLOCs for, what then?" asked Steve-o.

@quixoticgeek Great thread , and very generalizable as the "lines of code/ n of commits" equivalent are rather pervasive. Ask how your doctors are incentivized for example and why they too (like everyone else) is being burned out.

Sign in to participate in the conversation
(void *) social site

(void*)