The Worst Programmer I Know (2023)

520 rbanffy 370 3/23/2025, 1:08:45 PM dannorth.net ↗

Comments (370)

morsecodist · 81d ago
The idea of measuring individual developer productivity is kind of absurd to me. I'm not saying that what we do is magic, there are just so many variables.

Measuring story points or lines of code is kind of the opposite of productivity. This encourages developers to do as much meaningless work as possible. I'd want a developer to make a task simpler or use an existing tool which means less time writing code. The value of them saving that work from knowing another way is high but hard to measure.

What you want is measuring business outcomes but those are hard to attribute to a particular developer.

I think unfortunately we're left with our subjective judgement here. I think we'd do better admitting to ourselves that we can't measure this than to pretend we have some sort of science here.

OnionBlender · 81d ago
I had a director that was obsessed with github enterprise stats. He forbid people from squashing commits and told people to commit every day, even if you're in the middle of something. This was so that he could see who was writing the most code.

One of our interns was close to the end of his term and this director wanted to hire him. He thought the intern was amazing based on the amount of code he wrote. The problem was that this intern was bad, so we had him write unit tests. However, he was also bad at writing unit tests. He would run the code and then write tests that enforced the current results, instead of considering that the current behaviour might be incorrect. Thankfully we didn't hire him after myself and others explained why the intern had so many commits and lines of code written.

hi_hi · 81d ago
Reminds me of an old joke about a policeman who pulls over a poor driver. The driver complain "But I haven't been in a single accident", the reply from the policeman, "Yes, but you've caused dozens".

Some people are just oblivious to the trail of destruction left in their wake.

linsomniac · 81d ago
“Almost every software development organization has at least one developer who takes tactical programming to the extreme: a tactical tornado. The tactical tornado is a prolific programmer who pumps out code far faster than others but works in a totally tactical fashion. When it comes to implementing a quick feature, nobody gets it done faster than the tactical tornado. In some organizations, management treats tactical tornadoes as heroes. However, tactical tornadoes leave behind a wake of destruction. They are rarely considered heroes by the engineers who must work with their code in the future. Typically, other engineers must clean up the messes left behind by the tactical tornado, which makes it appear that those engineers (who are the real heroes) are making slower progress than the tactical tornado.” ― John Ousterhout, A Philosophy of Software Design
JohnMakin · 80d ago
Have had multiple roles running behind these guys cleaning up their messes. If I’m now ever in a position to just let them flail around (not always possible as these guys are often leads) I try to do so, if they are abusive about it, I’ll just quit. this is a major cause of burnout.
lo_zamoyski · 81d ago
In other words, the "10x programmer".
ignoramous · 81d ago
Not really; as a 10x programmer, to some, improves outcomes by 10x regardless of the team members and project status, but LLM and agents built on it, may soon qualify.
dartos · 81d ago
The only thing more wild than thinking 10x devs is more than corporate speak is thinking that LLMs could be 10x devs.
ignoramous · 80d ago
LLM and agents may soon qualify as "tactical tornadoes".

> The only thing more wild

That's not my point, which was, to some a 10x dev != 10x code monkey.

dartos · 80d ago
I hear what you’re saying and was intentionally making a tangential joke about how “10x dev” is meaningless corporate speak and anyone who thinks otherwise is a little too lost in the sauce.
paradox460 · 81d ago
Reminds me of a manager and a QA I once knew. QA was a nice guy, but a terrible QA. Would fail stories on the most arbitrary guidelines. Story is about changing the font size on the home page? He'd fail it because he wasn't able to log in (he tested while the auth service was undergoing planned maintenance).

Manager loved this guy, and pushed him through several promotions. Eventually other employees got tired of being skipped for promotions and left the company, creating a minor staffing crisis

Aeolun · 81d ago
We kinda have this, but… At least we have a dedicated QA team. That spends their whole day literally just confirming that the shit we write is up to spec. We spend a lot of time resolving discrepancies between implementation, spec and test, but when things roll out the other end, they work.
j-bos · 81d ago
yeah a good qa team is peace of mind.
renewedrebecca · 81d ago
I think just about everybody has had to deal with one or several of these guys.
asdf6969 · 81d ago
> Story is about changing the font size on the home page? He'd fail it because he wasn't able to log in (he tested while the auth service was undergoing planned maintenance).

Average offshore QA team.

paradox460 · 78d ago
This guy had offshore mentally but sat 3 desks away from me
paradox460 · 81d ago
Much as cancer arises and grows from natural cellular processes gone awry, this seems to be an organizational cancer, present in any company of a large enough size.
epolanski · 81d ago
Then the other employees found that this is how the world works: don't promote people that deliver results or you may have to replace them.
rvba · 81d ago
Well, I seen a fair share of "blind" programmers who just did their (very limited) scope, perhaps they did it well... yet the whole tool just didnt work and nobody cared.

I imagine that if the guy pointed out things like this - he wasnt popular with the developmemt team, but popular with management and users.

red-iron-pine · 80d ago
people get promoted based upon their ability to conform to management culture, and their ability to deliver outcomes; in most places the former is far more important than the latter but not always
xdavidliu · 80d ago
the former is often easier to measure than the latter, and the latter is often only measurable when superficial.
lisper · 81d ago
> who was writing the most code

There's yer problem right there. Code quantity is not correlated with value. In fact, it can be negatively correlated with value if it's buggy and laden with technical debt. Measuring productivity by lines of code produced actively discourages writing clean, maintainable, bug-free code.

jimbokun · 81d ago
I’m getting a similar sense from many of the AI “success” stories we’ve been hearing. There’s amazement about how many lines of code the AI produces in a short amount of time.

But not so much about maintaining and debugging all those lines of code once they’re created.

giantrobot · 81d ago
But the code runs great, over a hundred transactions per minute! All on just a $750 a day AWS instance! Saved so much money on those expensive developers! /s

Math left as an exercise for the reader.

fakedang · 81d ago
Well 750 a day times 365 comes out to 275k, which is still lower than a couple of Bay Area devs' salaries.

That being said, I've found AI to be quite powerful given that I already know what infra I'm planning to use and restricting it to use only those tools and services.

psychoslave · 81d ago
Turning a 100+ lines function of 5+ intertwined control flow mess into a single expression using a combination of method chaining of just a few lines is always a delighting experience to my mind.
lodovic · 81d ago
Until a coworker needs to debug a specific edge case that was too specific for the single expression, and it all has to be rewritten back to long form. Dense code is not always better and sometimes makes a code base incomprehensable.
LandR · 81d ago
I've experienced this watching a coworker debugging that sort of code, he had initially written it all as a long chained statements, then had to undo it all to allow him to debug. Once it was extracted it could be debugged and step through it, great!

Once he was done debugging it he put it all back to how it was originally...

The mind boggles.

dormento · 81d ago
Ahh, the fabled "write-only" code.
psychoslave · 80d ago
Looks like a limited debugger unable to let inspect what's happening in each chained function. Or is that something else?

I mean, it looks like the same level as adding explicit temporary variable because the debugger won't give provide values of the different part of an expression assigned to a third variable. That's a way to circumvent the tool limitation, just as you can add a tap or map in a middle of a chain if the debugger is too rudimentary to provide more conveniency.

rightbyte · 81d ago
Single use long functions are great for debuggability and following the code path.

Injection or whatever fancy term used for passing function pointers around is ofent write only.

psychoslave · 80d ago
If the function is long, accumulate variable along the way, and open intertwined control flow every three lines, no a single function is not at all a scalable way to expose a construction involving many transformations and sources and debugging will be as hard as the control follow depth times number of stacked variable so far as it's stepped through.

With method chaining at each step you have only the complexity of the current method inputs to deal with: that's a far better noise/signal ratio.

psychoslave · 80d ago
No, with chained methods it's just as easy to move step by step in each method, and even in bodies of anonymous functions that you might pass as parameter. At least with a decent contemporary IDE and debugger.

The reason code is terser is because it forces to streamline the process to a single output at a time, rather than an unrestricted number of variable control flow and return combined in a way that is easy to accumulate but all the more complicated to grasp later on.

thesuperbigfrog · 81d ago
> Code quantity is not correlated with value. In fact, it can be negatively correlated with value if it's buggy and laden with technical debt.

** "No Code" or Nihilist Software Engineering **

No code runs faster than no code.

No code has fewer bugs than no code.

No code uses less memory than no code.

No code is easier to understand than no code.

No code is the best way to have secure and reliable applications. Write nothing; deploy nowhere.

One of my most productive days was throwing away 1,000 lines of code. -- Ken Thompson

The cheapest, fastest, and most reliable components are those that aren’t there. -- Gordon Bell

Deleted code is debugged code. -- Jeff Sickel

Measuring programming progress by lines of code is like measuring aircraft building progress by weight. -- Bill Gates

* Master Foo and the Ten Thousand Lines *

Master Foo once said to a visiting programmer: “There is more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer, who was very proud of his mastery of C, said: “How can this be? C is the language in which the very kernel of Unix is implemented!”

Master Foo replied: “That is so. Nevertheless, there is more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer grew distressed. “But through the C language we experience the enlightenment of the Patriarch Ritchie! We become as one with the operating system and the machine, reaping matchless performance!”

Master Foo replied: “All that you say is true. But there is still more Unix-nature in one line of shell script than there is in ten thousand lines of C.”

The programmer scoffed at Master Foo and rose to depart. But Master Foo nodded to his student Nubi, who wrote a line of shell script on a nearby whiteboard, and said: “Master programmer, consider this pipeline. Implemented in pure C, would it not span ten thousand lines?”

The programmer muttered through his beard, contemplating what Nubi had written. Finally he agreed that it was so.

“And how many hours would you require to implement and debug that C program?” asked Nubi.

“Many,” admitted the visiting programmer. “But only a fool would spend the time to do that when so many more worthy tasks await him.”

“And who better understands the Unix-nature?” Master Foo asked. “Is it he who writes the ten thousand lines, or he who, perceiving the emptiness of the task, gains merit by not coding?”

Upon hearing this, the programmer was enlightened.

Source: http://www.catb.org/~esr/writings/unix-koans/ten-thousand.ht...

btilly · 81d ago
The author of the shell script was probably Doug McIlroy. See www.leancrew.com/all-this/2011/12/more-shell-less-egg/ for more.
musicale · 81d ago
Unix-nature loves malicious argument and code injection vulnerabilities, while C brings its own set of issues such as buffer overflows.
gowld · 80d ago
Are you referring to bash when you say Unix-nature?

Bash and C are both old and flawed early implementations that brought great ideas.

Bash can be replaced by a much safer language that retains its shell nature (easily able to weave together many Unix programs).

musicale · 80d ago
I was replying to GP.

You could certainly replace bash and traditional Unix shells with something else. My favorite attempt is scsh (though mainly for the "acknowledgements" section of its reference manual.)

But I'm in favor of a Unix/Linux command shell and scripting language that has type and taint checking for command arguments, and which differentiates between code and data. Typed data pipes could be nice as well.

However, Unix/Linux isn't (yet) designed for those features. For example exec() doesn't type check command arguments.

trelane · 81d ago
This is an amazing collection. Thanks for it.

It's is exactly what I was needing for this slide deck on I'm writing how to improve our code.

slowtrek · 81d ago
a) Would make a great coffee table book.

b) Would make a great poster.

vezcha · 81d ago
code is liability for both the business and the thinker at the end of the day. It's worth it to spend as much time as possible figuring out how to avoid writing it and keep it minimalized.
rottc0dd · 81d ago
https://yosefk.com/blog/engineers-vs-managers-economics-vs-b...

> ...It's a common story and an interesting angle, but the "best vs good enough" formulation misses something. It sounds as if there's a road towards "the best" – towards the 100%. Engineers want to keep going until they actually reach 100%. And managers force them to quit at 70%:

> > There comes a time in the life of every project where the right thing to do is shoot the engineers and ship the fucker.

> However, frequently the road towards "the best" looks completely different from the road to "the good enough" from the very beginning. The different goals of engineers and managers make their thinking work in different directions. A simple example will illustrate this difference.

> Suppose there's a bunch of computers where people can run stuff. Some system is needed to decide who runs what, when and where. What to do?

> * An engineer will want to keep as many computers occupied at every moment as possible – otherwise they're wasted.

> * A manager will want to give each team as few computers as absolutely necessary – otherwise they're wasted.

> These directions aren't just opposite – "as many as possible" vs "as few as necessary". They focus on different things. The engineer imagines idle machines longing for work, and he wants to feed them with tasks. The manager thinks of irate users longing for machines, and he wants to feed them with enough machines to be quiet. Their definitions of "success" are barely related, as are their definitions of "waste".

> The "good enough" is not 70% of "the best" – it's not even in the same direction. In fact, it's more like -20%: once the "good enough" solution is deployed, the road towards "the best" gets harder. You restrict access to machines, and you get people used to the ssh session interface, which "the best" solution will not provide.

arealaccount · 81d ago
Probably not the point but committing every day is one methodology for TBD and it’s great for generating productivity. Not so much useful for measuring productivity though.

I can’t imagine how miserable it would be to try to measure dev productivity by quantifying commits on a daily basis. What a waste.

oasisaimlessly · 81d ago
TBD = trunk-based development
jimbokun · 81d ago
This story tracks pretty closely with the Dilbert cartoon in the article. Except unintentionally.
mx_03 · 81d ago
> The problem was that this intern was bad, so we had him write unit tests.

Please tell me you assigned this person a "increase code coverage" task and not "I wrote a new feature, write the unit tests for it" task

OnionBlender · 80d ago
Yes, it was an "increase code coverage" task. The same director wanted 100% code coverage so I had the intern write tests for existing code that didn't have many tests.
suzzer99 · 81d ago
Dev productivity is like quantum mechanics. The second you try to measure it, the wave function collapses, and you've fundamentally altered the thing you were trying to measure.

That said, at every place I've worked you could get a starting point idea of who the top devs were by looking at overall code commits. This Tim sensei situation may be more common than I think, but I've never run into it.

lolinder · 81d ago
> at every place I've worked you could get a starting point idea of who the top devs were by looking at overall code commits.

This works for Junior through Senior level roles, but it falls apart quickly when you have Staff+ roles in your company. Engineers in those roles still code, but they write a fraction of what they used to and that is by design—you want these people engineering entire initiatives, integrations, and migrations. This kind of work is essential and should be done by your top devs, but it will lead to many fewer commits than you get out of people who are working on single features.

With a few exceptions for projects with a high degree of source-level complexity, a Staff+ engineer who's committing as much as your Senior engineers is probably either misleveled or misused.

suzzer99 · 81d ago
Yeah, I've always worked at non-tech companies with pretty small teams and no roles like that. But it seems like any place with Staff+ engineers should know better than to try to stack them up against more junior devs based on some metric.
philjohn · 81d ago
Case in point, I worked with a Staff software engineer (I was also the same level) who consistently, half over half, had zero diffs to their name.

Because they were leaning more into a product archetype - which it turns out they were very suited to.

Aeolun · 81d ago
I have a decent number of commits as a staff engineer, but barely any are on ‘features’ as measured by story points.

We’re building the things that other people use to deliver features better and faster.

gopher_space · 81d ago
I've worked on projects where every single ounce of enthusiasm is coming out of one mediocre developer. Nobody pays attention to team dynamics like this, but they're all over the place.
winwang · 81d ago
With my minor dabbling in game theory, I've considered funny angles like secret-ish internal metrics and punish those who simply game the incentives. Example: bot detections and banwaves in MMOs. Instead of instantly banning plausible bots, the company has to hide its (ever-changing) internal algo and ban in waves instead.

Basically, treating (non-)productivity like bot detection, lol.

closeparen · 81d ago
A few years ago we started tracking both office attendance and PR count. Management swore up and down that they understood the nuances, and these metrics would only be used to follow up on outliers.

But then one middle manager sets a target. His peers, not to be outdone, set more ambitious targets. And their underlings follow up aggressively with whomever is below target. For a few months there was an implicit "no vacations" policy in much of the company, until they updated the attendance dashboard to account for PTO. And now an engineer's position in the stack rank is presumed to be her position in the PR count rank barring very strong evidence to the contrary.

The approach you outline is probably optimal, but I don't think middle management as a culture would be capable of pulling it off. You give them a KPI in a dashboard, they're going to compete on it, in a very open and simple way. Metrics are hard to argue with, and nuance requires constant vigilance to maintain.

__turbobrew__ · 81d ago
> That said, at every place I've worked you could get a starting point idea of who the top devs were by looking at overall code commits

Yea, in the current place I work at we do not measure coding performance metrics, but if you look at the top commiters to the repo — by number of commits — you will see all of the people who bring the most value to the company. Even at staff eng the best engineers are still the ones who crank out code, albeit maybe as not as much as a senior engineer. Staff engineers who only commit 1 a month are usually the ones who don’t bring value to the company, especially given their high pay.

hamburglar · 81d ago
At my last gig I spent the last year and a half as staff engineer and made almost no commits because I was constantly writing proposals, defending them to execs, doing architecture reviews, doing design consultations, and planning long term responses to large incidents. I know for a fact that I brought a ton of value to the company but it was very uncoupled to commits. I didn’t really like it because I need to code, so I’ve moved on to a role where I commit like a maniac again. :)
__turbobrew__ · 81d ago
Yea it is dependent on your company.

When I think of highly functioning staff engineers Im thinking of people like Jeff Dean and Mitchell Hashimoto. Similarly at companies I have been at, even the highest level principal super staff++ engineers still code. They do the high level strategy and design, but they are still writing PRs at least every week or two. If you are spending 100% of your time on politics and architecture as a staff eng I think that shows a somewhat dysfunctional organization.

jimbokun · 81d ago
Just check all of your proposals and design documents into source control, and you’ll still have plenty of commits!
milesrout · 81d ago
Writing proposals, doing architecture reviews and doing design consultations sounds to me largely like busywork and bureaucracy rather than real and productive work.

Maybe in a business where the cost of iteration is very high, it makes sense to do this. But in a good business you should not be doing architecture reviews and writing proposals, you should be doing refactoring and creating prototypes, respectively.

pnut · 81d ago
Funny, I've evolved the opposite attitude over time.

Solving business problems using bespoke software solutions surely is the absolute most expensive option on the table, and should be aggressively avoided unless no other options are available, AND the problem is in a domain which is a core competency and market differentiator for your business.

The process of figuring out what your company needs, and how best to solve that problem long term, is dramatically more valuable to a business than software/technology implementation.

mierz00 · 78d ago
Software doesn’t live in a bubble.

Architecture reviews ensure that there is some strategy on how things are being solved at an organisational level.

elevatedastalt · 81d ago
Thanks to Goodhart's law, it's true for any measure that becomes a target.
xdavidliu · 80d ago
> The second you try to measure it, the wave function collapses, and you've fundamentally altered the thing you were trying to measure.

Related to Goodhart's law: "When a measure becomes a target, it ceases to be a good measure".

I'm wondering if this is only true if the act of measurement is transparent (so that the people being measured can game them). If the act is opaque enough such that the form of the metric cannot easily be guessed SEO-style, then maybe wave function collapse can still be avoided?

closeparen · 81d ago
You probably can't do it observationally. You could give several developers the same project, and probably see pretty big differences in timeline and quality. But no one is going to put in the work to run that kind of assessment at scale with the level of realism and time duration (probably several weeks) to make it meaningful.
nijave · 81d ago
I like looking at lines removed and, in context with, lines added or PR count. Someone more experienced will be refactoring and removing old stuff while adding new stuff and will have some balance (barring vendoring or moving file trees between repos)
suzzer99 · 81d ago
Lines removed should count like 5x lines added. I don't trust any developer who doesn't get a thrill out of removing code.
naikrovek · 80d ago
razeh · 81d ago
This is true for more than dev productivity.
bob1029 · 81d ago
> What you want is measuring business outcomes but those are hard to attribute to a particular developer.

I think we could solve this by eliminating some middle tiers and putting the developers on the actual customer calls every week. Each senior developer owns at least one customer. That sort of thing.

It's a completely different ball game when you are a developer on some B2B/SaaS and you are answering directly to the customer regarding your work. There's no one to hide behind - your teammates are now aside you and can only render supplemental aid. Once you have developers answering directly to the customers, you have a simple, ~boolean, qualitative metric that virtually any manager/investor can get behind: Is the customer happy?

If the developers are keeping the customers happy, then they are performing. If the customer is unhappy, then there is a performance issue. Whether or not most or all of it can be attributed to blockers on the customer's side is irrelevant at the senior levels of play. Developers should be helping the customers get unblocked. Offer meetings & screen share time. Generally, make yourself as available as possible. If you do this correctly, the customer is likely to take note and provide you with some amount of cover (i.e., not be in a raging fit when they call your CEO).

There is no reality in which you can inject more middle management or process to get developers to take more accountability. The only thing that works is to get them out of the bullshit matrix and in front of the customers. They need to experience how it feels to work directly with a happy customer and then realize how important it is to keep them that way.

This path also happens to solve a whole host of other maladies in technology business, most notably shiny rabbit chases. When you have the fear of god in you regarding the client, you aren't going to be as inclined to play in traffic with a NuSQL engine on their watch.

eek2121 · 81d ago
lol no, I have worked with companies that do that. Many developers have very specific personality types, and they also think in technical terms rather than customer terms. It isn’t a bad thing, it is why they are good at what they do.

The most successful companies I have worked with have a good product manager that can take customer input and work with a technical manager to balance priorities/effort. The technical manager consults the team before making decisions (such as SCRUM meetings if using that)

Issues come into play when folks start distrusting developers. When we say it will take 4 weeks or 8 weeks to implement something, there is a reason for that. We know the code. We know how much of a PITA it is to work with, and we aren’t being misleading. On the flip side, we have been trained to give conservative estimates thanks to crap management and unexpected pitfalls, so we try to understand promise and over deliver. If management could recognize this, everyone would be happy, provided they recognize that 8-week timeline is fine and they don’t promise something different to the client and trust devs to do their thing.

EDIT: Managers also tend to forget that we aren't a machine in a factory. We have good days, bad days, and everything in between. We excel with using our brains, however our brains suffer from anything between lack of sleep, depression, and other nonsense due to just plain having a bad day. I feel like it is more noticeable with us because we rely on our brains so much more than other folks in other professions do. Shoot, even random noise in an office, whether working at home or at an office, can hurt productivity.

Now I have myself missing dev work. Hoping to go back soon. Currently unemployed.

carlosjobim · 81d ago
Farming would be extremely effective if the crops would be plowed down into the ground when they're ripe, instead of bothering with all the work of harvesting, refining, packaging and distributing to customers.

But fortunately, software developers are not involved in architecting farming.

What I'm saying is that developing for developments sake is completely pointless. The purpose of software is to help in the real world. And every developer should understand that connection, no matter how shy or antisocial.

slowtrek · 81d ago
Could a company keep a subjective poor performer on for the lifespan of the company? As in, what is the plus or minus in overall revenue or profit from this charity? What if all companies did that? Could we distribute the "burden" of the charity across all companies for a better society? My point is, I don't even know if metrics are good or bad, we may need to look at why we see each other like this. Is it so offensive to the mind of the captain of a ship that they may have a few of not the best sailors? It's a chance for them to be on a ship, go on a journey. The concept of a "free ride" appears to be a serious moral hazard for us, but I can't figure out why.
kragen · 81d ago
Sure, as long as they don't have any responsibilities. I've been a great performer at some companies and a poor performer at others, including one that kept me around without letting me have any responsibilities. It was not good for me. But I have been through worse.

A better alternative I've seen is to help the poor performer hunt for a new job.

ch33zer · 81d ago
This is what Japan does. Employment is presumed to be for life. There are games companies play to get out very poor performers but most people get approximately lifetime employment.
slowtrek · 81d ago
How was that society taught this? Or how did they come to know this?
hadlock · 81d ago
What are you asking
neverokay · 80d ago
I’m not asking you if you read carefully. This is not to be mean, I asked the GP specifically because they demonstrated that they understand the spirit of what I am talking about. Your own confusion is stemming from something else, not my question (you don’t even recognize my question, as evidenced).

For example, who raised you? See, that’s a question you might not understand but it’s the spirit of my original question.

So what am I asking?

ch33zer · 79d ago
I still have absolutely no idea
ponector · 81d ago
Are you going to accept such free rider in your team? You will eventually do both your and his tasks but for the same or worse pay. Given you have a fixed budget for the team - do you want to split it more ways?

Where can I send a CV?

slowtrek · 81d ago
If we were to do this, we wouldn't just pick someone so out of the range of what's needed. So basically, if you reframe your question, would I hire a 70 average student on a team of 90 average students? Yes. We would not pick the 50 average students. This is all possible within reason, the kind of stuff being discussed in this thread is to purge people who are 80 average students (free riders in a 95 average class).

Will we need to tutor and support the 70 average student? Yes. Why would we do this? It's good for the soul. The stuff I'm talking about has no place in business, as far as we care to understand as a society at the moment.

rpmisms · 81d ago
My dangerous opinion is that the purpose of a company is to provide a living for its employees.
slowtrek · 81d ago
As in, if you are on the ship, we can absolutely find something for you to do. Here, color the fucking map, clean the sails. Why would we throw them off the ship?
rpmisms · 81d ago
That's another angle of what I mean, but absolutely. Stop expecting everyone to be above average, use your human resources intelligently, put people where they're productive and happy, and stop chasing nonstop growth. Mostly the last one. If we recalibrate our expectations about growth, I think we could tame the boom/bust cycle.
slowtrek · 81d ago
We need to start blogging about this, because it's been a torrent of utter filth advice being marketed to businesses.
milesrout · 81d ago
That isn't dangerous, just ignorant.
rpmisms · 80d ago
It's not ignorant, it's a different perspective on priorities that is outside your orthodoxy.
milesrout · 80d ago
It is ignorant of history, law, politics and logic. Companies do not exist for that purpose. It isn't why they arose as a concept. It isn't why they are created today. It isn't why the law of companies exists today. It just has nothing to do with reality.

If you said that businesses should exist for the benefit of their staff as much as for the benefit of their proprietors it might make some sense as an opinion. But you said that companies (a specific type of legal structure) do in fact exist for the benefit of their employees (a specific class of contractual relationship), which is simply false.

If you want to make statements about how you think the world ought to be, then be my guest. If you want to lie about the state that the world is actually in, then you should be relieved when someone interprets your lie as mere ignorance.

tbossanova · 81d ago
This reminds me a bit of how VCs bet on a bunch of startups in full knowledge that many will fail. The failures in some sense get a “free ride”. Why not the same with people?
jasonkester · 81d ago
This is why I like working on my own stuff. All that nonsense goes away and I’m left with just the two numbers that matter to me:

- how much money did it bring in this month, and

- how many hours did I have to work to make that happen.

The goal is to make the first number as big as possible while keeping the other as close to zero as possible.

BobbyTables2 · 81d ago
Where I work, the CI pipelines measure changes in code coverage.

If I refactor repetitive code into something more concise and maintainable —- code coverage goes DOWN! (Now the proportion of untested code is larger!)

Yeah, measurement is hard…

fsndz · 81d ago
the worst programmer nowadays is the vibe coder. vibe coding is so overrated imo https://www.lycee.ai/blog/why-vibe-coding-is-overrated
bitwize · 81d ago
Vibe coding is now a skill requirement for real, actual jobs but, thankfully I guess, no place I want to work (yet). The other day I saw a YC24 company in the "financial services industry" with a "vibe coder position". A prerequisite for the position was at least 50% of your current code being generated by AI; vibe-coding experience was "non-negotiable". Traditional programmers need not apply. And you'd better be ready to grind, 12 hours a day up to 7 days a week. It pays up to $120,000 a year plus squat for equity and relocation to San Francisco is required. That's like, McDonald's money in San Francisco, so guess they figure running a vibe-coding sweatshop is a huge savings for them.

Oh, and the cherry on top? The "financial service" this startup provides? Automated robocalls demanding money from debtors on behalf of debt collectors.

https://www.ycombinator.com/companies/domu-technology-inc/jo...

YC has entered its villain arc.

dragonwriter · 81d ago
“Your onboarding will be making collection calls.”

So, your AI debt collection startup onboards engineers by...having them work as human call-center debt collectors?

Is there really AI at all?

Oh, but after passing through the onboarding, your vibe-coding engineers will be be focussed on building product by vibe coding, right?

“(what you will be doing...) Onboard customers, talk to them and travel to visit them.”

So, a traveling sales rep. Your onboarding is pretending to be the product, and after that you are a traveling sales rep who vibe codes on the side?

stickfigure · 81d ago
This must be satire. It is a stretch even for Poe's Law. Someone is punking YC.
LandR · 81d ago
Nothing about this job description sounds appealing, it has to be a joke.
siva7 · 81d ago
No it's not.
ykonstant · 81d ago
Fortunately, vibe coding skills are easy to demonstrate through vibe statements of such; recruiters should be skilled in judging the vibe of the statement claiming vibe coding skills and accepting or rejecting it accordingly.

If, however, you are having trouble doing that as a recruiter, I am offering professional vibe-rating services as well as a full-blown software solution, the first of its kind, Job Market Vibe-Rater™.

bitwize · 80d ago
I was gonna say, the maintainer of Buttplug.io would be a perfect candidate, as he knows a lot about coding vibes...
fsndz · 81d ago
it's just a marketing stunt like prompt engineer with 200K salary back in the day. And the fact that you are talking about it and sharing the link to the company's profile means the stunt is working.
godelski · 81d ago

  > +3 years of experience.
Ummmm..... what?

This seems like it was written by someone who loves Dystopian Sci-Fi. Loves in the way that it is the future they want to live in.

gabrieledarrigo · 80d ago
I honestly call this a scam position:

- Vibe coding "non negotiable" - 3 years of experience (of what, exactly? if the "Vibe coding" term was coined just the other day...) - 12 to 15 hours a day

No thanks...

sanex · 81d ago
I've been writing code professionally for a decade but I've never written so much code in my free time because I can just vibe code it all. I wouldn't do it at work and I probably wouldn't trust a juniors vibes as much as my own but no tools have made me feel quite so powerful.
yodsanklai · 81d ago
I never tried vibe code as described in this article, but I could see where it breaks. Initially, code works. Eventually, there's a bug, and the LLM isn't able to fix it. At that stage, you're on your own with a potentially large codebase which is totally new to you.

Even on small projects, sometimes I'm tired, I just try to get the LLM do some refactoring for me or write a couple of tests. First, whatever the LLM writes, it's going to code review and I'm not submitting code that I haven't read and understood just to have colleagues complaining. Second, if the code doesn't work, it gets frustrating. For LLMs to help, I like to have a pretty clear idea of what I want, how the "right" code looks like so I can give more indications.

mrheosuper · 81d ago
The idea is "Rewriting is faster than debugging", so if something breaks, you ask LLM to rewrite it

Not a fan of it.

sanex · 81d ago
Yeah it's totally a situation where obviously I can write it myself if I had the time so I just correct it as it goes. I also give it lots of guidelines on what I'm looking for but after some setup I can just watch TV and check on it every couple minutes.
android521 · 81d ago
Vibe coding works for experienced developers who give very detailed instructions including edge cases and potential issues or solutions. It is almost code already as it has already included all important code business logic (leaving the simple parts for Ai to fill in ). It is a maintenance disaster for junior developers or non-coders.
fsndz · 81d ago
it's definitely nice for prototypes, but nothing more complex.
eclipxe · 81d ago
I used to feel that way but my perspective over the last 6 months has changed greatly. You can absolutely build very complex things in this style
Yoric · 81d ago
That's actually not a contradiction.

As far as I can tell, you can build very complex prototypes. But unless these prototypes can be both trusted and maintained, that's all they are.

NitpickLawyer · 81d ago
> As far as I can tell, you can build very complex prototypes.

I think GP was saying you can do more than prototypes. I agree, but it's not (yet) universal on where you can apply it. The best case for my projects has been in trivial but tedious "3rd party integrations". Say you have a mature product but client x wants integration with product z. We are now at a point where we can say "this is our internal model {json dump}, this is the 3rd party integration docs / example {code dump}, write interfaces for this". And it works most times. For things that are a bit more complicated, /architect first and then "now write it" w/ some things from the architect session in context also works.

YMMV but don't dismiss it out of habit. Things are moving very fast in this space, and I choose to focus on what works now, not on what doesn't. I'm well aware not everything works, but when it does it saves a lot of time.

Yoric · 81d ago
We're talking about vibe coding, not just AI-assisted coding. Do you put this in production without review?
NitpickLawyer · 81d ago
Oh, my bad, and TIL. I thought vibe coding is the trendy way of saying you're using LLM based code in tools like aider/cline/cursor/windsurf...

edit:

So I did a quick google, apparently it's this:

> Vibe coding is an AI-dependent programming technique where a person describes a problem in a few sentences as a prompt to a large language model (LLM) tuned for coding. The LLM generates software, shifting the programmer’s role from manual coding to guiding, testing, and refining the AI-generated source code.[1][2][3] Vibe coding is claimed by its advocates to allow even amateur programmers to produce software without the extensive training and skills previously required for software engineering.[4] The term was introduced by Andrej Karpathy in February 2025[5][2][4][1] and listed in the Merriam-Webster Dictionary the following month as a "slang & trending" noun.[6] (from wiki)

So ... now I'm confused again. I don't see the no testing / reviewing part in here. Is vibe coding the new AGI, where everyone has a different definition?

Yoric · 80d ago
Well, when Karpathy introduced it, I seem to recall he claimed that he didn't look at the code, just put it in production.

But it's entirely possible that there may be several definitions around by now.

siva7 · 81d ago
I wouldn't trust vibe coding to a junior. This would be a recipe for desaster. It's a skill best paired with a very senior dev who can correctly assess the output of the AI.
fsndz · 81d ago
show me an example of such a complex thing obtained after just writing prompts
godelski · 81d ago
Sometimes you enter a codebase and it looks like there's some obscure attempt to summon a Lovecraftian entity made of spaghetti and duct tape. Those codebases are both the shitiest and most complex stuff I've ever seen. They sure don't work well and I'm not even sure do a good job at summoning the old ones. I don't find LLM code significantly differing from that kind of monstrosity. It sure is complex.
smokel · 81d ago
Perhaps give it some time before judging too harshly?
fsndz · 81d ago
vibe coding has been in the scene since the emergence of ChatGPT perhaps...
vincenthwt · 81d ago
Much earlier. Ever since Google, I’ve been 'vibe' coding—just a different buzzword, I guess.
mrbadguy · 81d ago
Well said. There’s a noticeable lack of judgement in many places these days; people think they can abdicate it to metrics and data but this is mistaken.
WalterBright · 81d ago
Everyone on a programming team knows who the good and not-so-good programmers are.
dilyevsky · 81d ago
Kind of meaningless statement though. Even if they do, which Im not sure is true in general case because you have to be good yourself to know who’s really good, they are not telling you anyway.
WalterBright · 81d ago
In every organization I've worked in, everyone knew who the productive and non-productive people were.

Just like in school. Everyone knew who the good teachers were, and who the good students were.

I don't fathom how you can work with other people and not be aware of it.

dambi0 · 81d ago
Have you ever found your opinions of things, including people’s relative worth changing over time? Perhaps as you had time to understand the context, or as time revealed the benefit of an action that wasn’t so clear initially?
WalterBright · 80d ago
Definitely.
dilyevsky · 81d ago
Frankly, I think you might be confusing "productive" with "smart" or "easy to work with". I've had several past team mates at several companies gush to me about staff eng Bob and while I agreed Bob was a cool guy (or just talked good game) I also knew his last few projects were a failure, it was 100% his fault, and management took notice. It happened in the other direction too but not as often. Alternatively you might be underestimating how oblivious some (most?) people are of those things.
WalterBright · 81d ago
> I think you might be confusing "productive" with "smart" or "easy to work with".

Working in teams for most of my career, and especially when I make or lose money depending on how the team performs, I am not confusing them.

At work, I am not really interested in how smart they are or how easy to work with they are, or how nice a person they are. At work I'm interested in results. I've had workers come to me and complain about "Bob" who has annoying habits and an abrasive personality. I defend the ones that produce results.

Outside of work, I value smart people who are good friends. I've had several friends who were laid off for poor performance, yet we continued as friends.

(Being somewhat on the spectrum myself, I recognize that in others and give them a lot of slack.)

> you might be underestimating how oblivious some (most?) people are of those things.

The oblivious ones were the ones who got laid off. They honestly believed they were god's gift to the company. Frankly, it was tragic. The ones I kept in contact with would ruefully admit to me years later that the company was right in laying them off.

saagarjha · 81d ago
> At work, I am not really interested in how smart they are or how easy to work with they are, or how nice a person they are. At work I'm interested in results. I've had workers come to me and complain about "Bob" who has annoying habits and an abrasive personality. I defend the ones that produce results.

And what if "Bob" makes it so that "Alice" who is almost as smart as him can't work effectively?

WalterBright · 80d ago
That's why being a manager is not a trivial job.

Amusing story: one day, I got a call from "Bob" who complained that our receptionist "Alice" refused to forward his phone messages to him. Apparently, this was because "Alice" didn't like "Bob". What was this, high school? So "Alice" was informed that she was taking messages for the company, and "Bob" needed those messages to perform his job. She got the message.

saagarjha · 80d ago
Sounds like Alice was the one who was difficult to work with in this case?
milesrout · 81d ago
You mean what if Alice is intolerant? Bob would have to be pretty egregious to make it so Alice cannot work effectively, and that is when HR gets involved. But if Bob is just not the easiest to work with, then it is up to Alice and Bob to work together. You can't expect everyone else to always adjust to what you want.
saagarjha · 81d ago
No, I don't mean that. You assume that this is a logical conclusion but the problem is that "Bob would have to be pretty egregious to make it so Alice cannot work effectively" is not actually true. Bob, being the slightly better coder, could make Alice's life miserable without, like, doing a harassment that HR would be interested in. Constantly changing APIs that Alice relies on ("they're better now, why are you complaining?"), being overly nitpicky in reviews ("I'm not wrong, aren't I?"), or just outright taking the more interesting work ("I think I would do it faster than Alice") are all ways Bob could reduce Alice's productivity. If Alice is 0.9 of Bob, then instead of getting 1.9 Bobs you might get 1.2, while Alice plus Carl–who is just merely half a Bob–might be able to outperform that.
milesrout · 80d ago
And if Bob doesn't get to do that he will leave. If Bob has to put up with low quality code because Alice can't get the basics right but he also isn't allowed to point out basic mistakes in code review, he will leave.

There is no such thing as being "overly nitpicky in reviews". This sentiment reminds me of an old coworker of mine that would basically throw a tantrum when I asked him not to add new lines to a file, which was indented consistently with tabs, with spaces. He needed to be reminded of this every commit. This is the sort of crap that distracts from the substantive code review, yes. But the solution is not to do what Alice wants and ignore minor details. It is for Alice to get the basics right the first time so that Bob can focus on more substantive things.

This isn't just true in software development either. In law, the first thing a new graduate joining the profession is told is that whatever you do, the work you produce should be spelt correctly and your grammar should be right. The formatting should be consistent too. Why? Because inconsistency and error in those aspects is distracting to someone reviewing the substance of the work, and the basics are so easy to get right.

To put it concisely: if you got the basics right the first time, which you should, then you wouldn't get nitpicky comments.

There are obviously many ways that people might be less productive in combination than the sum of their individual productivities, but in my experience some unfortunate people make no effort to adjust the way they work so that they combine well with others, and some people blend in very naturally with others' working styles. Some people are worth having even if they're difficult. Some people are only worth having if they play nicely. Either be a star or play nicely. Mediocre performers that are also difficult to work with don't ever last very long.

saagarjha · 80d ago
> And if Bob doesn't get to do that he will leave.

Maybe he should.

> If Bob has to put up with low quality code because Alice can't get the basics right but he also isn't allowed to point out basic mistakes in code review, he will leave.

There's a difference between nitpicks and "gets basic things wrong" or "doesn't format their code". Remember that Alice is 0.9 of Bob: she's not there fighting with him on formatting (everyone has CI do this anyway, lol) or getting basic things wrong. She's getting comments like "hmm, this API you use could be a bit better, could you also refactor that while you're at it?" or "can you make this more general to support this use case that we don't actually need right now, but could potentially need later?" I guarantee you, regardless of how smart you are, there are a multitude of ways I could tie up your review for a long time. And this happens all the time in projects with very smart people working on it.

vraylle · 80d ago
This is the key. Ask all the developers for a ranked top-3 list of who they would most prefer to go to for help with a programming problem. Put that data together and you know who your best are.

Before the inevitable protest: I believe the ability and willingness to communicate with other developers is a vital skill in this business.

nijave · 81d ago
I don't think productivity itself is absurd but it's definitely a hard thing to do, especially in small time intervals.

I think it's important to measure employee performance and you can definitely can a macro look and say "what have you accomplished in the last year" which might be measured of delivery of "t-shirt" sized projects

jckahn · 81d ago
I don’t think it’s that we _can’t_ accurately measure developer value/productivity, it’s that doing so isn’t feasible with any methodology we currently have. As you said, we’re not doing magic, therefore our value is measurable. Measuring just requires an impractical degree of time and energy.
Grimblewald · 80d ago
but also, the reason we come together to work as groups is so that we can achieve more than we would as the sum of the parts. The same is true for horses, two horses that work well together put out more power than two individual horses. So the problem becomes when you identify one of your horses has 1.5x the output of the other, and think firing the weaker horse will lead to minimal productivity gains, you end up with egg on your face when you realise you are not left with a horse that works 1.5x, but rather a horse now working at 0.5x what what it was in a team. The exact same thing is true for team work, team sports, etc. There is no one person 'holding it all together' if there is, then that person needs way better support and realistically, should get the entire departments pay when the remaining department is let go.
godelski · 81d ago

  > The idea of measuring individual developer productivity is kind of absurd to me.
It is absurd to do in a lot of settings. The other day we had a similar story with the measurement of "value" just the other day[0]. I think there's been a big bureaucratic takeover where people are measuring for the sake of measuring rather than recognizing that these things are proxies and you need to be careful to ensure your proxy is properly aligned with the actual thing you want to measure.

You see this in research and academia by trying to measure by number of papers/citations/venue/novelty. You see this in the workforce with things like lines of code, story points, and any of that other bullshit. You see this with how people think about money. Like just think what a million dollars a month would mean what you __*couldn't*__ do wit that money.

The problem is that we've created scoring systems and people see the ultimate goal as maximizing their scores. This doesn't matter if the score is actually meaningful or not, but we'll sure as hell passionately argue that they do. I'll refer to my comment to [0] for more[1].

I've been calling this concept: Goodhart's Hell

The truth is that every system has noise in it. I completely understand wanting to remove all possible noise from the system, but after a certain point, attempts to remove noise are actually ignoring noise. Maybe the problem is that people don't recognize that randomness is itself a measurement of uncertainty. There is no measuring device that is without uncertainty. Embrace the noise. Remove as much as you can, but you need to embrace what is impossible to remove. You create more noise by ignoring the noise.

[0] https://news.ycombinator.com/item?id=43447616

[1] https://news.ycombinator.com/item?id=43448860

naikrovek · 80d ago
> The idea of measuring individual developer productivity is kind of absurd to me.

that idea is very attractive to every manager on planet earth. they seem to quickly lose their ability to maintain contact with reality and they start using metrics to track everything, rewarding those who game the metrics best.

Sparkyte · 81d ago
If you are not committing any code that is a problem. But software development is more than just code. It is also more than just the individual.
empiko · 81d ago
It is not absurd. From manager's point of view, when they are deciding to let someone go or promote them, they often need some arguments. And since software is invisible, it is often hard to just say straight away who is over/underperforming and why you think so apart from a "vibe" you are having. Measuring some relevant metrics can strengthen your argument and/or your overview of the situation.

I don't think that the blog makes a compelling argument why measuring productivity is bad per se. It makes a compelling argument that metrics should not be interpreted blindly, but the metrics in this case identified a guy that was doing something unusual, and the managers managed to interpret why this is the case. But if it was an IC that is supposed to deliver, or if you did not want "Tim" to spend his time coaching people, this could still have been valuable info.

morsecodist · 81d ago
I don't think it is absurd to reason about individual contributions, just to focus on measuring them with metrics. I have been on the management side as well though I admit I am much more of an IC. But the way I think that should go is laddering up to business value by describing what the person did and why that contribution was important.

So for example I would say something like: X deserves a promotion because their work was important to delivering project A on time. Project A was difficult but worthwhile because it allowed us as a business to meet goals 1 and 2.

That said I mostly work in smaller orgs. I have never been in a situation where a manager would be so removed from a team they would need a sort of proxy metric to direct them where to focus their attention to understand what the people on their team are doing day to day. I can see how this would get more difficult as a company grows.

JohnMakin · 81d ago
Used to be bitten by stuff like this until I figured out something Tim and this author apparently didn’t - the problem is trivially fixed by management by attaching tim’s name to any tickets he may have helped out on. he can ask his teammates to do this and they gladly will, or, nice teammates will usually throw a “figured this out with the help of @Tim” in the ticket. goes a long way to keep “tim” on your team against obtuse velocity metrics like this.

productivity metrics aren’t entirely worthless. if I come into a team, for instance, and I see they have 1 PR mapped to roughly every 1 jira ticket, and I see a guy on a 3 person team that’s got 70% of the PR’s in a year, that isn’t a clueless piece of info. he’s probably the lead. not always, and people game stuff like this, but it is a data point you can make note of.

motorest · 81d ago
> the problem is trivially fixed by management by attaching tim’s name to any tickets he may have helped out on.

I don't think this comes even close to solving the problem. This in fact makes the problem worse, because a) you admit the metric is shit and does not reflect work, b) you opt to keep the bullshit metric but instead try to manipulate it to bump the score under some scenario. That's not desirable outcome by any metric.

In the end you're building up a system where everyone participating in it knows it's a fraude but just keep gaming it because they become too heavily invested in it.

bberenberg · 81d ago
I don’t think anyone is saying it’s a good solution. It’s one amongst many bad ones that are used because that’s what we have. For example, I’ve been running a remote team for 8ish years now and I keep begging people to have conversations in public channels. One of the reasons is to see who’s spending a lot of time lending a hand. Guess what, devs refuse to do that. So what am I supposed to do?

I have a person who I highly suspect isn’t doing much work, and is basically rotating through other team members to help him get unstuck. Not a bad guy, but probably not up to our standards. Just ask people you say? Many cultures don’t allow for someone to say bad things about their coworker even if it would help to improve the team.

I’m not arguing for any one solution because I don’t know of any magical solution. If you have better metrics or management skills than what everyone in the world has figured out, myself and many others would gladly adopt these approaches.

metric10 · 81d ago
Sounds like both a lack of trust and communication between you and the team.

> If you have better metrics or management skills than what everyone in the world has figured out, myself and many others would gladly adopt these approaches.

Oh boy...

edit: One issue might be they fear that bad news will lead to a knee jerk reaction that gets them or their teammates fired. They should feel comfortable to encounter problems and openly discuss them in the open with out fear of repercussions. In fact, I would argue this is one of the major advantages of a team; pooling collective knowledge and abilities. If people fear honest communication then the performance of the team is impacted. The manager has the greatest ability to fix this, IMHO...

hansmayer · 81d ago
First off - please do not be offended by the following comment, there is zero bad intent in it and is only meant as a way of nudging you into a correct mindset about the problem you described. Based on your public profile, you seem to not have much in the way of hands-on technical background and I suspect you manage your team based on some set of scrum/agile techniques. It can work purely for project delivery I suppose. However for the deeper analysis of your team productivity, the problem is you don´t have the necessary competence to validate your suspicion about one of them not getting work done, coasting off of others etc. There is only two ways to go about it. Either you hire (or promote) a technical lead in your team, who can then actually make that call, or you learn programming yourself, accrue at least a year of real technical experience and then try to evaluate. I am saying this because I have seen people with background similar to yours usually struggle, because they try to infer something about engineer productivity based on various proxy measures, such as who talks the most in the chat, who has most commits or even based on activity in Confluence. The way I would recommend any scrum master/PO/agile coach/MBA to think this dilemma is: you would not be able to judge the quality of work of a medical doctor, lawyer or a mechanical engineer, without having a similar background, experience and competence. So what makes you think you can evaluate software engineers without the same preconditions?
bberenberg · 81d ago
I think lots of the other comments are making wild assumptions leading to responses that don’t align with reality. Yours is actually the absolutely correct one. I agree with the solution wholeheartedly. The only difference is I have been trying to promote the tech lead from within vs hiring externally. I want the team to know that we value their contributions and that we’re going to do everything we can to promote internally. I have various challenges with this internally related to seniority, language skills, etc but I’m working to resolve that.

But in the meantime, I still have a team to manage.

rvba · 81d ago
One of the members of the team is barely doing anything and survives by constantly asking others to help with doing the job. This reducea productivity of other employees.

A known archetype in many jobs, not only programming.

Yet we get comments like this:

> you don´t have the necessary competence to validate your suspicion about one of them not getting work done, coasting off of others

Wow.

In any other job, a manager ir HR will just read your chats, emails + demand to document calls - and guess what. It can be found. In a very not very subtle way.

Also the problem above is like managememt 101? For all the talk about "no technical competence" you dont seem to have any managerial competence.

Also the agile idea that developers keep each other to professional standars is a nice fairy tale (like whole agile in general).

hansmayer · 81d ago
Sorry but what is your point? I feel like you got offended by identifying yourself in it, but did not really understand it. My point being, as a non-engineering manager, you can be great at 1) approving holidays 2) doing a bit of project management 3) doing formal 1:1s . But it does not mean much because you don´t understand the work being done and you are just doing performative actions, e.g. busywork. Or we just say, f*ck it, let MBAs and scrum masters keep running our critical engineering businesses and at the end of the day the doors fall off of Boeing airplanes and astronauts end up spending 9 months instead of 9 days in space.
rvba · 79d ago
Only an engineer with 30 years of experience can tell that a Mustang is better than a Model T /s
hansmayer · 79d ago
Why the /s? You're mixing apples and oranges I am afraid. Being a consumer of some product, is not the same as engineering the product. So you have the latest iPhone, good for you - still does not make you an engineer, nor do you have a clue what goes into designing, conceptualising and building a product. And yes, those of us with a bit more experience in the field, remember the times when engineering was done by people who had passion for it, not people desperate to make a career and income upgrade through bullshitting in meetings. For engineering a great product, as we can see with the great entshittification of pretty much everything today, Boeing being the most dangerous example, it's not just that the performative workers are being a drag on productivity and profitability, they are now also endangering everyone. I sure hope some idiot MBA does not come up with an idea of a medical PO or scrum master.
rvba · 78d ago
One does not need 20 years of programming experience to identify and fire a shitty employee that coasts by constantly asking others for help with their job. There are tons of bad programmers just like there are tons of people bad at other jobs. Those employees are often a net negative for the team by constantly wasting someone elses' time.

On a side note, your constant whining about "MBAs" and "scrum masters"... it does not make you sound like a professional or reasonable person. This black-white view of world, that "all MBAs are bad". Whoa.

(Just because I know where you will take it: (sadly?) I dont have an MBA. I am also not a scrum master)

hansmayer · 78d ago
No, please, instead of pointing out everything that is wrong in your reasoning: Please read a referent book about managing software development teams. For example "Peopleware", or "Dynamics of Software Development". Both a bit older, but valuable classics. The second one actually written by a relatively less technical author, a product manager at Microsoft. Maybe then you'll understand a bit more. By the way - I am not the only one complaining about the MBAs. Remember when that plane door fell off? US Congress was holding a hearing about that. And a number of US Congressmen (or were they senators?), people who literally never have the discussions that you and are having, kept asking one simple question: "How come the CEO of Boeing is not an ENGINEER"? It's so natural, that even those disconnected politicians made the obvious connection. Look it up in the archives.
rvba · 77d ago
Well, since you cant point out anything, you point out some random books.

I will point out something else: get tested for schizophrenia.

hansmayer · 77d ago
Random books, schizophrenia? I am the one not pointing out anything? Perhaps read your own replies slowly and reflect again :) I won´t dispute your medical competence, as I don´t have any and you seem to be an expert obviously, but for your own good, the two books are classics in their category, which you´d know if you approached your managerial duties with a tiny bit of sense of responsibility towards self-development.
whatshisface · 81d ago
It sounds like your employees believe that talking to you or amongst each other, where you can read it, will get their friends laid off or bad decisions made without advice. You might want to put a layer of management between you and them, if you can find someone with the skill of trust and relationship building.
hansmayer · 81d ago
I think a competent technical lead would do wonders in this case too ;)
marcosdumay · 81d ago
Formalizing a productivity metric won't help you with any of that. And I'm sure that one guy you mentioned will learn to game the metric faster than the other developers will learn to fit it.
bonesss · 81d ago
> "I keep begging people to have conversations in public channels... Guess what, devs refuse to do that."

So, stop begging. Managerial directives come as orders, not pretty-please requests. Also, stop letting your subordinates refuse you. They are your reports, you are approving their money, that can change if they aren't doing their jobs. Fire one for ignoring policy, and their attitudes will change.

On the tech side, clarify that you want all project comms logged and searchable for onboarding and auto-generating documentation as well as identifying technical hotspots where investments in refactoring can save the team time. Whatever. What gets measured gets done, if you are trying to spy on everyone, this is a bad way. Do it if it has value.

> "Many cultures don’t allow for someone to say bad things about their coworker"

Managers in any culture, and especially across cultures, are tasked with learning those cultural sensitivities and then working around them pragmatically. You have identified a problem. That is the start of solutions, not the end of them.

> "If you have better metrics or management skills than what everyone in the world has figured out"

This kind of attitude isn't productive at finding genuine answers, and might be obfuscating the problem.

Lots of people have figured out better metrics and management skills than the local application suggests. It's not the advanced esoteric stuff that is missing, it's the basics.

ModernMech · 81d ago
> Fire one for ignoring policy, and their attitudes will change.

Yeah, the next day they'll start updating their resumes and sending out feelers to their network.

riehwvfbk · 81d ago
With this attitude you will grow a very specific kind of team. They will be very productive according to your metrics, fiercely loyal, and lethal to anyone who doesn't fit in. However, $diety help you if you ever need to innovate.
rvba · 81d ago
It's sad that you get downvoted for providing solutions.
giantrobot · 81d ago
> For example, I’ve been running a remote team for 8ish years now and I keep begging people to have conversations in public channels.

No one does this because it's a bunch of bullshit noise in a channel disrupting everyone. It also opens a conversation up to bikeshedding which drags down the entire discussion.

Small ad-hoc groups can be very effective at solving problems.

1. The more intimate the group the less friction there is in conversation. There's less need/desire to put everything in "business speak" so no one gets their feelings hurt.

2. Small groups don't need to dumb down conversations for less technical participants if there's no non-technical participants.

3. Private chats mean no one is hovering over the conversation demanding some useless status update. A problem is either solved and committed or the group is still working.

bornfreddy · 81d ago
No offense, but it sounds like you have jumped to a conclusion (which you can't even prove) and are trying to change the process so that you could nail the poor guy.

What is your purpose? Making the team perform great, I hope. Will you achieve that by picking on someone? Hell no. Others will protect him, because they know they will be next in line. Do you think the "underperformer" (if he really is that, even) is doing that because he is lazy? It is more difficult to ask for help all the time than just to do something.

How about you try to find a way to help him achieve the level that others are at? THAT is what should be your goal. Instead of spying on them, award team members who help others, so that they won't feel the need to hide. And make weak members feel safe. Currently it sounds like the environment is pretty toxic with regards to admitting to any problems.

If, after all the genuine effort, you still fail and need to let go of the guy, because he is really bringing productivity of the team down and you can't motivate him to change, then you should know that this is still primarily your own failure. Which is ok, everyone is allowed to fail from time to time. But it is a signal that you should try harder.

(speaking as someone who had to let someone go because I wasn't good enough to make them better... on two separate occasions... so I'm not judging)

hnlmorg · 81d ago
I have managed a team in an organisation that used Jira heavily to measure velocity and having all contributors record time on tickets, even if they were just supporting, did actually help lots:

1. It allows for more accurate estimations (ie this is not a multi-day task but it is a multi-person task)

2. It showed where knowledge transferring was happing

3. It showed that people were busy so that it meant we were making accurate estimates to begin with.

I do think Agile can get overly prescriptive. But if you do happen to work in a company that operates that way, pushing back might be impossible. So having multiple participants record their effort against the same ticket then allows a more organic way for the team to operate despite the rigid structure of a stricter scrum dynamic.

Or in other words: sometimes you cannot change the system entirely so you’re next best option is to tweak it so it at least better works for you. And that’s what the GPs suggest achieves.

throwaway7783 · 81d ago
While a number measuring productivity may not work, I read the GP as simply recording contributions.

I like that approach. Now you can not only have peer recommendations, but also tangible records.

JohnMakin · 81d ago
In large org, i saw people quietly move up the ladder this way by being visibly effective even if their outright contributions may have been difficult for nontechnical or understaffed management teams can see. it’s an essential survival skill, not making any case whether or not it’s right to begin with - I often navigate these systems because I have to.

you will of course have people gaming the system but peers tend to realize what is happening there, and that’s a management problem IMHO

Izkata · 81d ago
More like bug/case tracking is crap on this. All the ones I've ever used only support one assignee, so even in equal pair programming you have to choose who officially gets the case.

They're suggesting working around the case tracker, not around the metric.

cyberax · 81d ago
> This in fact makes the problem worse, because a) you admit the metric is shit and does not reflect work

It's just like in physics: "all models are wrong, some are useful". All metrics are wrong, but some are useful when they are correctly applied.

TZubiri · 81d ago
In a company or any business you need to deliver something, if you are being paid X amount of money, the payer needs to know they are getting something in return, and it's not a management problem that they ask what was done this week.
johnnyanmac · 81d ago
GP is orking off the assumedly common premise of peopel raising complaints of metrics and getting shrugs from management or Product. Who have their own incentives to keep them up.

if you can't throw out the game you may as well adjust the rules.

dedup · 81d ago
That's how you get individuals who insist that you attach their name to your ticket (or better yet, do it themselves) after they helpfully inform you about an automated test failure in your commit. "Relentlessly mentoring team members on culture of quality" et cetera.
compiler-guy · 81d ago
Exactly. If you don’t consider how people might game the system, you are in trouble. Little fixes like this open other possibilities for gamesmanship and now people fight over whether their contribution was good enough to be included in the ticket.
johnnyanmac · 81d ago
I mean, all of this is gamable by those who want to minmax. But this is a workplace and those kinds of abuses can be solved with a slap on the wrist 80% of the time.
Clubber · 81d ago
You're absolutely right, but some people just refuse to play silly games. It's odd that the manager isn't ever in the room with the team and doesn't understand his team's dynamics. Giving the benefit of the doubt, he must have been new, but any manager worth his salt will ask people on their team what the team dynamics are.
BigGreenJorts · 81d ago
My understanding is that metricizing like this is a tangible way for managers to defend "underperforming" team members to upper management. Your manager can always say you're a valuable member of the team and that will certainly go quite a way, but it's even more powerful if your manager can say, XYZ is an I valuable team member, if you need evidence of that, they provide a lot of value in supportive roles like on these tickets. [Listing tickets].
throwaway7783 · 81d ago
Agree on silly games, but this is simply acknowledging others' contributions. I think this should be encouraged in general, metrics or not
Clubber · 81d ago
I agree. I think it's pretty absurd that the manager was all set to fire him just based on metrics. There's a quote that I'm going to horribly paraphrase that goes like, "when you can measure something, that ends up being the only thing that matters."

At least he asked the author his opinion first.

Having said all that, if he took it upon himself to be a mentor to other developers and didn't do any tickets himself, that seems a bit odd, unless it was explicitly decided/communicated that would be his role. I would think roles like that are half time mentoring and half time doing tickets, but I don't know enough about the team to judge it. Like I said, I'm assuming the manager was new to the team.

ryandrake · 81d ago
I'm actually shocked that Tim, himself, knowing the metric exists and was going to be used in firing decisions, did not attach himself to all these tickets in the first place. Talk about a lack of self-preservation. Everywhere I've seen that measures performance by some metric, everyone instinctively tries to pump that metric all by themselves. No other motivation required.
neilv · 81d ago
Not everyone will play the metrics games.

Some people will just find the metrics dumb and depressing, and avoid them. (As might've happened in the article.)

Some assume it will go away in time, or that their manager will cover for them. (As eventually happened in the article.)

Some have behind-the-scenes talks with managers+execs+HR, to end bad metrics.

Some will melt the metrics with the intensity of their look of disapproval. (Management ProTip: this level of will is better harnessed to solve business and engineering problems.)

ModernMech · 81d ago
Yup, I didn't play the metrics game, and I got burned because my metrics don't look as good against the co-worker who plays the game. The cost is having to remind everyone how much work you actually get done and how much you actually support the team when those "your metrics tell us you're not doing enough" talks come up.
ryandrake · 81d ago
I've resigned myself to the reality that every employer is basically the same in this regard. You need to be spending 25-50% of your time doing your actual work and 50-75% of the time doing all that political and self-promotion and metrics-chasing work so that you can "show your impact" or whatever the hell your company calls it. This has been the case at literally every job I've ever had. If you just go in as an expert and do the technical work you were hired to do 100%, you're going to have a bad time career-wise.
ninalanyon · 81d ago
> every employer is basically the same in this regard.

This really isn't true. At least it's not true of companies I have worked for in Europe.

jofer · 81d ago
That's a very personality and culture related phenomenon. A lot of folks will, but also a lot of folks won't.

Pointedly not playing the game when you have the political power to do so is often the most effective way to point out issues in the system that folks are being evaluated under. It can be a very wise move in some cases, as well.

hyperhello · 81d ago
Tim probably realizes that if he tries to get on tickets he’s helped with, he’ll probably end up on maybe 30-50%. If he never asks for credit, and yet is seen constantly working, people will inflate the zero to hallucinatory levels of productivity.
mystified5016 · 80d ago
I consider myself a Tim here. My value is not primarily in my individual contributions, but how I eleveate the rest of the team.

If my manager demanded this type of bean counting, I'd just take my talents elsewhere. I'm not interested in that kind of game. I'd take the severance and go find a new team to make better.

taberiand · 81d ago
Sounds like Tim's in a position where he knows he's appreciated by his team and enjoys his work, and is more than skilled enough to jump ship the second upper management decides to upend that. He has no reason to play the silly metrics games
johnnyanmac · 81d ago
Yeah, Tim would be poached in days if he leaves for whatever reason. People with that kind of genuine talent or passion to just help make everyone around them be a better version of themselves don't worry about being out of work long.
franktankbank · 81d ago
Play the game and any number of management fuckends will prop themselves upon your shoulder. Unless youre into that sort of thing.. no judgment..
TheRealPomax · 81d ago
Both "trivially" and "fixed" are doing an incredible amount of heavy lifting here.
JTbane · 81d ago
That doesn't work with automated metrics, whomever is assigned the work item gets all the points.
natnatenathan · 80d ago
Tim's problem is that he has a bad manager. One of a manager's core jobs is to communicate upwards the value that each team member is providing (or not providing). His job was to ensure that Tim's contribution were reflected and visible.
stronglikedan · 80d ago
According to TFA, that's exactly what the manager did.
MarcusE1W · 81d ago
In football you track not only the goal scorers but also the assist (the person who passed the ball to he goal scorer). That still does not cover all contributions, but maybe that's a way to create more transparency for Tims case ?
mrweasel · 81d ago
That's an intersting point. I don't recall ever seeing a ticketing system where you could assign a ticket to multiple people.
dedup · 81d ago
In one of the systems I worked with each ticket had an "assignee" (who did most of the work), a "tech lead" (who knew what's going on and could provide status and guidance), and an "executive owner" (the person you'd escalate to if needed). I suspect those were custom fields and schema could be extended further if desired.
thr0waway001 · 81d ago
Ah, the "Quentin Tarantino presents" pattern. Nice.
NalNezumi · 81d ago
Glad to hear that Tim stayed and author managed to steer the entire process towards the right direction. Which requires a listening manager.

I experienced the "bad ending" of this productivity metric trickle down: OKR. This startup wanted not just team-based 3-month review Objective Key Result but also individual one, and on top of it, tied stock option to OKR. It was a robotics startup so very cross-domain teams (Software, Hardware, Embedded, DevOps, HW design, HW testing, HW maintenance etc etc).

The result? Developers became lonely islands. There were no "Tim" anymore. When I (Software Integrator) encountered an issue, that I just couldn't figure out but had a hunch it must be a deep-rooted issue, went to the expert (control/kinematics) for feedback. The answer I got was "I'm sorry I really want to help you but my OKR deadline is very close, and I simply don't have time". He could've probably fixed it in a day or less, but it ended up taking 2 weeks.

The problem turned out to be quite deep: inside layer upon layer of C++ mega monorepo, I found that boost library and a custom kinematics library had implicit struct copy and the different libraries (more than two) used different order for representing translation & rotation (xyz, rpy, Euler, Quaternion) and all of the ordering of each components were different. Somehow over 2 years of operation nobody got troubled by this until our new team had to use it.

Afaik I reported it to the Software team, but again, because OKR, nothing was done about it.

bipson · 81d ago
I think just because this startup botched OKRs they still make a lot of sense.

Intel and Google apparently relied on them heavily in their formative years. But:

- they should be cascading (so conflicting OKRs between departments should not happen)

- you should never, ever tie them to individual performance results/compensation/rewards

YZF · 81d ago
My sense was OKRs came later for both Intel and Google. Do you know around what year/size they started?

I worked with some ex-Google person who tried to get us to use OKRs. That totally didn't work. Larger company.

Like many things I don't think they're necessarily a bad idea it's just that good ideas always lose to culture. With the right culture/leadership it's not the process that matters. I.e. OKRs aren't going to fix an organization that isn't aligned and conversely there are infinite other ways to align an organization with the right culture and leadership. So in practice, like other things, it just ends up making things worse because it's never a real fix.

dilyevsky · 81d ago
Google started using okrs at under 50 people because one of the board members was intel veteran. Not sure about the early years since i wasn’t there for that regrettably but in 2011 when i joined my impression of okr process was that it’s complete and utter bs and giant waste of everyone’s time. iirc google+ hit their okrs swimmingly…
jrs235 · 81d ago
100% this. Want to sacrifice team output? Have team members be concerned about individual goals. Team alignment and synchronization will be off affecting the efficiency and effectiveness of that team's performance.
crazygringo · 81d ago
I agree with a couple other comments here -- this is a bizarre model where one programmer does no individual work and does all the helping.

A much healthier situation, to me, is one where Tim does stories like everybody else, and when people need help they ask the group and whoever is the best at that thing helps them -- or whoever hasn't helped in a while.

Surely there are easier stories for those who need the most help, and Tim should be taking on the hardest stories by himself?

Or if you really do have an insanely lopsided team where everyone is straight out of school with no experience, and a single super-senior dev, then... shouldn't they just be a special kind of team lead who is expected to mentor full-time and not be subject to metrics?

The post here is not a good example at all of metrics failing to capture work. In reality, it is surfacing the fact that either Tim's job title and metric are totally wrong for him individually, or else that Tim is failing to contribute the hardest code, and the team is failing to distribute the "helping" workload. In both cases, the metric is working as intended, and it is surfacing something very important than needs to be fixed. (Remember, "fire Tim" is not the only possible action you can take because of a metric.)

move-on-by · 81d ago
> when people need help they ask the group and whoever is the best at that thing helps them -- or whoever hasn't helped in a while.

I agree this would be healthy for an organization, but I don’t think that is often possible. In this example, the organization is clearly NOT tracking mentor activity. So, anyone who helps someone else, is getting zero recognition for it.

I work with a lot of people where ‘ruthless prioritization’ is considered a good quality. That means no one gets any help. All taking. No giving. Pure selfishness really.

Back to the example. Tim is stepping up and filling in a major gap for the company. People need help. He has decided to go against the grain and help. However, instead of doing it with the help of leadership, he is just doing what needs to be done and it almost cost him his job.

Frankly, I identify with Tim. I love helping people figure out problems. Be it build env issues, failing tests, or some design gap. I help people all the time on top of my other work. While my immediate manager knows that and is good with it, upper leadership doesn’t care and just wants everyone to act like what they are working on is more important then what their peers are working on. Ruthless prioritizing is a seed of toxicity.

I got a bit off topic… How to encourage helping peers and juniors when helping isn’t tracked and isn’t rewarded or encouraged? How do you maintain a healthy culture despite all the metrics?

crazygringo · 81d ago
> So, anyone who helps someone else, is getting zero recognition for it.

Where I've worked, this is what 360 peer review during performance reviews is.

If your colleagues all say you're super-helpful, that's part of what it takes to get promoted.

If your colleagues all say you're selfish and never help out, this is something that needs to be addressed immediately.

It's a metric like any other, it's just collected twice a year rather than bimonthly, and it's qualitative rather than quantitative. But it's analyzed at the same time and given lots of weight when it comes to promotions.

johnnyanmac · 81d ago
>this is a bizarre model where one programmer does no individual work and does all the helping.

Sounds like a lead or manager. He definitely works like a lead in spirit. Cheaper for the company to delineate it like this.

>Surely there are easier stories for those who need the most help, and Tim should be taking on the hardest stories by himself?

difficulties don't signify priorities. Maybe all the hard stories are low priority. Maybe the energy is focused on onboarding newer hires. Maybe there was a semi-looming headline and getting others' tasks done was more important than his individual module (or perhaps he was ahead of pace already).

I can see a dozen of scenarios this comes up in organically. I experienced a few of these firsthand.

wavemode · 81d ago
> shouldn't they just be a special kind of team lead who is expected to mentor full-time and not be subject to metrics?

It sounds like this was precisely the situation, and the author's company did indeed take this very action, in response to seeing the data. So, what is your complaint?

crazygringo · 81d ago
No they didn't. They dropped the metrics for everyone entirely, and Tim's job title is unchanged. The article is arguing metrics are bad and shouldn't be used; I'm arguing metrics are a valuable signal and Tim should have been given a different formal role of mentor.
lapcat · 81d ago
Was Tim hired as a teacher or trainer? What I find strange is that it sounds like Tim was not doing any individual work.

As a very experienced programmer, I'm sure that I could increase the productivity of other programmers by pairing with them all day. However, is that actually the best and most productive use of my time? In my estimation, I think that overall team productivity would be maximized if I spent approximately 20% of my time pairing with others and 80% on individual contributions. (That's a rough estimate; it could be 25/75 or 30/70.) The article said that Tim was "patient", but perhaps he was too patient, wasting a lot of his time that could be spent accomplishing other things.

grayhatter · 81d ago
I've been the TL for a team of effectively 5 new grads before. Effectively all of my time was spent teaching them how to solve problems, fixing (preventing) bugs in their code from getting committed, and writing boilerplate, or infra code that would never be listed on whatever a story point is. But constrained their responsabilities into a format and structure that would play well with each other's so they would stop constantly rewriting each other's code every other week.

I enjoy teaching so that was a much more enjoyable way for me to spend my day, than drinking caffeine and cranking code the rest of the team couldn't understand. I joined that team because they were constantly missing deadlines. When I left that team they were finally ahead of schedule, but much more importantly they had a code base they all understood. That wouldn't have been true if I'd just written all the code myself. I like to tell myself I could have gotten the team ahead of schedule as a solo endeavor writing 80% of the code myself. But true or not, when I left I would have no confidence the team could continue without me.

Could I have spent more time writing code? Probably, but what delivered the most businesses value? I was hired as a glorified software engineer but instead of delivering code, I delivered a team that could produce code. Their manager was *never* gonna do that. So should I have prioritized doing what my job title said? Or doing what's in the best interests of the long term mission? Every situation is gonna be different, if teaching is soul crushing for you, or more importantly, the team refuses to be taught, I would suggest just deliver code. In this case, everyone wanted to learn, so that was the easiest path forward.

lapcat · 81d ago
> a team of effectively 5 new grads

> they were constantly missing deadlines

Gee, go figure.

> I like to tell myself I could have gotten the team ahead of schedule as a solo endeavor writing 80% of the code myself.

> what delivered the most businesses value?

What the company should have done is hire you and one new grad (rather than five), who you could mentor without spending all of your time mentoring, and get the same amount of work done with two people for less money.

throwanem · 81d ago
Advice from the world where things always go as well as they could is of limited value in this one.
bee_rider · 81d ago
It seems hard for us to say, from the outside, how the deal ended up for them. They spent the experienced programmer’s time setting up a team of five. If they’d had GP train one person and work on code as well, they’d have one good new engineer and some code. Now they have five good new engineers.

I mean, it depends on how long it took, how much code GP could have produced in the meantime, and how sticky the lessons were. There’s certainly room to believe GP is right and it was a good trade for the company.

grayhatter · 81d ago
this particular company paid way below market rate with the promise of interesting work. It without a doubt incentivizes hiring new grads where you roll the dice and hope the good ones will stay because they enjoy the job. It's very hard for them to attract experts at the salary that they're offering.
bee_rider · 81d ago
Yah. I also just wanted to make the meta point or whatever—this is your anecdote, technically there’s room for you to be wrong or right, but we don’t have any connection to the underlying reality to argue against your interpretation… so why not just go along with your story?
grayhatter · 81d ago
yeah, what the company should have done, is only hire experts! Hiring new grads is definitely a mistake they're making!

...except then I never would have been willing to work there. I won't work for an MBA bean counter. I want to work for a company that's willing to invest in people. One that doesn't treat life as a zero sum game, where someone else has to lose so the company can make money.

I get it; for most people the line on the graph must go up! And it must keep going up, forever! But I reject that meme as the direct cause of the enshittification of reality, and refuse to play any negative sum game. "The only winning move...." and all that.

BTW, that project would have died with just a team of two because I did eventually leave that company. So that suggestion would have killed that project. System resilience matters too.

edit:

> Gee, go figure.

This isn't a given. If their manager was as good at teaching and understanding code as I was, they shouldn't have been missing deadlines. Proven by the fact that I admit I didn't contribute a significant number of lines of code. So what is this trying to say? New grads are bad?

lapcat · 81d ago
> yeah, what the company should have done, is only hire experts!

I did not say that, and you know it: "What the company should have done is hire you and one new grad (rather than five)".

> I won't work for an MBA bean counter. I want to work for a company that's willing to invest in people.

Um, IMO someone who hired a team of 5 new grads sounds like an MBA bean counter and not someone that's willing to invest in people. It sounds like they brought in an experienced programmer (you) only because the preexisting pathological team was (predictably) failing.

> BTW, that project would have died with just a team of two because I did eventually leave that company. So that suggestion would have killed that project. System resilience matters too.

And you could not be replaced because.. why? People leave, other people are hired. Life goes on. The new grads may leave too.

grayhatter · 81d ago
> Um, IMO someone who hired a team of 5 new grads sounds like an MBA bean counter and not someone that's willing to invest in people. It sounds like they brought in an experienced programmer (you) only because the preexisting pathological team was (predictably) failing.

Nah, this was a pet project of my skip level, and I joined after he asked my boss for solutions to the delay. The manager who owned the project had all of his experienced eng working on direct contracts.

This company had a lot of contracts in where the number of engineering hours allocated are specified. This was an internal project, without a hard cap on number of hours, and they were assigned because it would have been malpractice otherwise. This was very much a team built out of the resources available, rather than intentionally selecting only new grads.

I couldn't be replaced because it being an internal project, it would have been killed once it had no active development. And I suspect internal politics would have prevented it getting restarted after the first delay/failure. Turns out stuff is way more complicated than the easy assumptions people like to make.

> sounds like they brought in an experienced programmer (you) only because the preexisting pathological team was (predictably) failing.

It's easier to predict failure than success. That's that same zero or negative sum game though. Usually a cheap way to feel superior instead of doing the harder things. My previous edit already addresses that though. Failure wasn't actually a given like you want to predict.

edit:

> I did not say that, and you know it: "What the company should have done is hire you and one new grad (rather than five)".

Right, of course I know you didn't say that, nor do I think you'd actually advocate for it. But taking something to the extreme to see where it fails is a useful rhetorical tool. The point being, that only hiring experts is obviously bad, for the same reason that only hiring new grads is bad.

I think we agree that there is a balance to be struck?

I think 5 noobs to 1 expert is fine, just like 5 to zero is bad, just like 1 to 1 is bad. The point being, there's no magic line where one is right, the other wrong. This team had no problem once the missing puzzle piece was added. And it was able to be successful in ways that 1 and 1 wouldn't have been. There is no reasonable way to say "what you should have done" when describing a puzzle where you can't see most of the pieces.

lapcat · 81d ago
> they were assigned because it would have been malpractice otherwise.

I don't know understand this means.

> This was very much a team built out of the resources available, rather than intentionally selecting only new grads.

Yet your other comment says, "this particular company paid way below market rate with the promise of interesting work. It without a doubt incentivizes hiring new grads where you roll the dice and hope the good ones will stay because they enjoy the job. It's very hard for them to attract experts at the salary that they're offering." https://news.ycombinator.com/item?id=43453700

> it being an internal project, it would have been killed once it had no active development.

I'm having a hard time understanding why this project needed to exist at all.

> But taking something to the extreme to see where it fails is a useful rhetorical tool.

I disagree, and it only created unnecessary argument in this case. You ended up having to retract and clarify anyway:

> I think 5 noobs to 1 expert is fine, just like 5 to zero is bad

But the team was 5 to zero.

> just like 1 to 1 is bad.

Why?

grayhatter · 81d ago
> I don't know understand this means.

It means, this team was very much a team built out of the resources available, because the existing experts in the company who could have been mentoring new grads were already working full time doing something with a direct contractual obligation to the company. I would have been negligent to pull them from an existing inprogress contract to mentor newbies, and the contracts had a hard limit on number of hours, (not years of experience), so placing a new grad on one of these contracts, replacing an experienced engineer would have degraded the success of the contract.

> Yet your other comment says, "this particular company paid way below market rate with the promise of interesting work. It without a doubt incentivizes hiring new grads where you roll the dice and hope the good ones will stay because they enjoy the job. It's very hard for them to attract experts at the salary that they're offering." https://news.ycombinator.com/item?id=43453700

Right, they're not conflicting statements. The company would hire a pool of engineers that can do engineering, then a different part of the company would sign contracts to complete work, than a middle part would place the engineers in the company onto contracts.

> I'm having a hard time understanding why this project needed to exist at all.

Well, because it was a really cool project that the company did end up marketing and selling to it's various clients. It was also a perfect project to put a bunch of new grads who otherwise wouldn't have been doing any work at all given the projects had contracts that stated they couldn't accept more engineers.

> I disagree, and it only created unnecessary argument in this case. You ended up having to retract and clarify anyway:

I didn't retract anything? Are arguments bad? I actually enjoy being able to arguing interesting points and topics. If you're willing to be wrong, you can learn things. As an example I didn't think my previous examples were so controversial. Nor did I remember that contract based engineering work isn't a common thing the most people already have intuition for.

> [just like 5 to zero is bad...] But the team was 5 to zero.

The team you called pathological? Yeah, it was bad. Missing deadlines is bad. I don't understand where you're confused.

> [just like 1 to 1 is bad...] Why?

I already answered. Because of politics a project that small would have died with a team with just a single new grad. It also would have been boring as fuck. So if I left, I'm sure the new grad would have also left. Which means the company who hired us both, would then have to hire two new people. This was years ago, but I assume some of those original new grads are still there. In part because that team was actually fun to work with. They were good people, and the team was just fun to be around. A team of just 2 is boring... I know because I've also been on that team with me doing all of the work, and it was soul crushing, and contributed to why I left.

lapcat · 81d ago
>> But the team was 5 to zero.

> The team you called pathological? Yeah, it was bad. Missing deadlines is bad. I don't understand where you're confused.

>> [just like 1 to 1 is bad...] Why?

> I already answered. Because of politics a project

I was confused because I thought you were trying to make general points, but apparently you're mired in the minute details of one company and its extremely specific projects and politics.

I'm getting the impression that there were so many idiosyncratic constraints on the project that it simply couldn't have gone any other way, and thus there's no real way to critically evaluate whether things would have gone better with a different arrangement. Be that as it may, I'm not sure what kind of general conclusion we're supposed to draw from such a constrained example? Going back to the linked article, the case of Tim didn't appear to be so constrained:

1) They were thinking of getting rid of Tim, which presumably wouldn't have killed the project entirely.

2) They expected Tim to make more individual contributions, which presumably wouldn't have killed the project entirely either.

3) The team already had a mix of junior and senior engineers, not simply Tim and a bunch of new grads.

motorest · 81d ago
> Was Tim hired as a teacher or trainer?

Do you think that's any relevant? Software development engineers in general are hired to work on projects as part of small teams, and their goal is to deliver projects. It's not story points, it's not burn down charts, it's not PRs, it's not LoCs touched. It's how many projects are delivered, and keep everything and everyone problem free. This means that if you are struggling, your team will struggle as well until you unblock yourself. If you can unblock yourself by having a team member sit besides you and walk through a problem, that team member will be helping the team.

lapcat · 81d ago
> If you can unblock yourself by having a team member sit besides you and walk through a problem, that team member will be helping the team.

I don't dispute that; hence the 20-30% pairing. But if it's the case that all day, every day there's at least one person on the team who is blocked, then you don't need a "Tim", what you really need is a new team, because that's an unacceptable level of blockage.

motorest · 81d ago
> But if it's the case that all day, every day there's at least one person on the team who is blocked, then you don't need a "Tim", what you really need is a new team, because that's an unacceptable level of blockage.

I don't think your opinion is educated, or based on any experience working on a functioning team, let alone a high-functioning one. Any team working on non-trivial projects does stumble upon critical bugs that are hard to catch or features that are faster to roll out if a subject matter expert sits down with someone to show them the ropes. If you care about performance and time to market, this is your baseline already. You are not better off with a dozen cowboy developers who wouldn't even piss on a team member if they were on fire.

lapcat · 81d ago
> I don't think your opinion is educated, or based on any experience working on a functioning team, let alone a high-functioning one.

That's an incredible assumption about me. What is your empirical justification for such an insulting claim?

> Any team working on non-trivial projects does stumble upon critical bugs that are hard to catch or features that are faster to roll out if a subject matter expert sits down with someone to show them the ropes.

Again you're arguing something that I never disagreed with. Indeed I explicitly advocated spending some % of time pairing.

motorest · 80d ago
> That's an incredible assumption about me.

Not really. You introduce yourself to the world by the statements and opinions you express. Advocating for firing everyone in a hypothetical team because of a hypothetical scenario where hypothetical team members help each other out is a business card of your level of experience, expertise and awareness.

lapcat · 80d ago
> Advocating for firing everyone in a hypothetical team because of a hypothetical scenario where hypothetical team members help each other out

That's not the hypothetical scenario described. Rather, the hypothetical scenario is that all of the other engineers are in constant need of babysitting by the one adult in the room, Tim. There was no indication given that, other than Tim, team members are helping out "each other", or that anyone else is helping Tim. If the team members are peers, then why is Tim disproportionately pairing, 100% of his time?

inetknght · 81d ago
> because that's an unacceptable level of blockage.

You shound like a manager. Let me know when you identify and quickly solve all the reasons that the team frequently gets blocked. Until then, we have Tim.

throwanem · 81d ago
> You sound like a manager.

Yeah, I think that's a good read.

Give management credit for being smart. They mostly do manage only to promote the most egregiously avid Taylorites from among us.

motorest · 81d ago
> Give management credit for being smart.

Respectfully, this is being the exact opposite of smart. Pay attention to the fact that by all accounts the Tim role is actually a force multiplier and output booster for the team. Pay also attention to the fact that you're arguing that Tim should be fired as should the whole team just because... Your Jira metrics are off? This is not what I would call being smart, by far.

throwanem · 81d ago
You assume management optimizes poorly for desiderata you share.

You also assume by "smart" I intend no pejoration.

Were you to hear me speak these words, rather than read them as here typed, the latter point at least would need no clarification. Unfortunately, text like this is salt without savor.

bee_rider · 81d ago
Is a Taylorite a known expression or are you riffing off the idea of a Taylor series? Haha.
marcosdumay · 81d ago
Taylor is a famous management researcher, that created an entirely new school of management, which by its turn evolved even before his death to become something completely different from the theories held by Taylor himself.

Just to point out in reference to the sibling comment, Taylorism is not a pejorative term, it's the correct name of a school of management. Any pejorative implication on that name is a perfectly deserved result of the quality of the ideas in it.

throwanem · 81d ago
It's a reference to "scientific management" aka Taylorism, the pejorative name by which that now-universal practice was rightly known the last time labor had something resembling the power we deserve in this country.
rsynnott · 81d ago
Depends what they’re doing, and how junior the team is. For something relatively involved, with a few new-ish grads, or people inexperienced with the problem domain, on the team, it wouldn’t be surprising. Shows up particularly often in rapidly-growing companies, where by necessity teams are often mostly new-ish.

Now, ideally you do not lean on a single Tim to make this work; that’s kind of a failure mode (I’ve occasionally been a sort of a temporary Tim, but the goal would always be to move the team more towards self-sufficiency to avoid becoming a perma-Tim.) A part-time Tim, who consistently spends part of their time unblocking others, is IME a fairly common phenomenon, and probably necessary.

Vampiero · 81d ago
It's cheaper to hire 5 juniors and to give Tim a mental breakdown than it is to hire 5 Tims.

Realistically though, if you really did hire 5 Tims you would deliver in 1/5th of the time and the software would actually be decent on the first iteration.

It seems to me that consultancy companies actually want inexperienced developers because they can bill their inexperience to the client as they train them to become useful. Awful and, as stated, a major source of mental breakdowns for the Tims who have to put up with their bullshit. And also for the juniors who are always running from fire to fire as they try to fix the clusterfucks they created.

This is not how you should do stuff, but it's how everyone does it. At some point it's just the blind leading the blind, because Tim also has other shit to attend to and can't review every LOC on every PR by himself.

I didn't become a senior by being mentored by other people, btw. I became one because I've always loved doing what I do, and nothing more. The internet and physical books mentored me impersonally. So I'm sure that they can mentor other people just fine, and I don't see why I should waste my time just because my boss is stingy and can only hire a couple of people with my experience or drive to learn outside of work.

And let's be clear -- mentoring and being taught something are two very different things. I'm not anal about the latter. I'm anal because I want to write code, I don't want to tell people that they should learn to fucking read the error messages and google them every 5 seconds.

Though right now I'm being very brutally honest. I'm actually nice and friendly to them in person, and I'm very patient. But that causes me to break every once in a while because I secretly loathe it!

johnnyanmac · 81d ago
>if you really did hire 5 Tims you would deliver in 1/5th of the time and the software would actually be decent on the first iteration.

depends on how the tims mesh. Every company thinks that hiring only experts leads to a superior product, despite software being a collaboarative effort.

>I didn't become a senior by being mentored by other people, btw. I became one because I've always loved doing what I do, and nothing more.

The good mentors I had definitely helped. If anything, they reeled me in to realizing that being a good SWE is not about solo diving into problems and expecting to come out with solutions everytime. It's to understand who owns what and who to consult when landmines inevitably come up. Even if I could solve it all by myself it just wastes time compared to a quick Slack message or a 15 minute meeting.

kcoddington · 81d ago
Why is it unacceptable? And wouldn't the time/productivity loss from on-boarding an entirely new team completely outweigh the time/productivity loss of the 100% pairing with a Tim?
infinghxsg · 81d ago
Yes, obviously it’s relevant you have a fundamental misunderstanding about what software engineers do. We don’t “build systems” we diffuse risk for the managers. If someone is “helping build something” they can spend their own money doing that. This is business, the less work you do the more money you make.
UK-AL · 81d ago
In a lot of companies the definition of senior engineer helping others develop technical skills.
throwanem · 81d ago
In a few of those companies, so also is the job.
rsynnott · 81d ago
I think that’s overly cynical. It should always be part of the job (except in places where title inflation has hit the level that it really doesn’t mean anything at all) and usually is.
throwanem · 67d ago
I agree that it's cynical. Excessively so? You see a hell of a lot in twenty-plus years.
sally_glance · 81d ago
Very interesting topic and as you say the ratio should very much depend on what his designated role in the team was.

For tech leads, I think the ratio should be heavily skewed towards enabling other team members (by pairing or working on cross-cutting concerns, usually devops/infra). Something like 20/80, where the 20% individual contributions are only the toughest nuts which can't be done in a reasonable timeframe by anyone else.

For senior developers, I'd say it depends on team composition. If there is one senior and 3 juniors, training them should be his primary concern. If there are 5 heavily specialized seniors, I'd say the ratio should lean towards individual contributions.

dmoy · 81d ago
Yea the best teams I've ever been on have always had someone like Tim.

The best best teams I've been on, Tim's helpfulness osmoses onto other people, and instead of Tim always being the one, the process goes like this:

1. Dev gets stuck

2. Dev attempts to unstick self for appropriate amount of time given problem and probability of self-unsticking given resources (e.g. some stuff is easier to search for internally, or dismantle and go piece by piece)

3. Dev announces "hey I'm blocked on XYZ thing"

4. Whoever knows the most about that topic (not always Tim, but often Tim) puts that as like their highest priority thing, and almost always jumps in right away to help (unless they're like ignoring chat cus they're in the zone)

Works great especially if you do #4 at some break time (like say lunch or standup), and everyone has enough things to work on that they can do their own internal CPU pipelining and work on other stuff until someone has time to help unstick them

Atotalnoob · 81d ago
Problem on a lot of teams is people skip over #2 in my experience.

Good devs always do #2, bad devs skip it.

nedt · 81d ago
That's easy to solve. When they ask me it might take an hour or two until I come back to them. If they were just trying to us me as a rubber duck the problem will have been solved by then. And it's not only devs. Also PMs have this behaviour. Sitting it out before asking what they need makes most question vanish.
ChrisGammell · 81d ago
Extra points for the ones that sit down at step 4 and lay out all the things they've already tried so the context on the problem is clear
iamleppert · 81d ago
Counterexample: Not everything needs to be a group activity or social. If a developer of average skill can't manage to deliver a feature without the constant help from a "Tim", it says something about your code, processes, team. I've worked at places where they used pairing as a signal the team was working well together, when the reality was the code was so brittle and full of hacks it took the combined help (usually moral support) of a Tim to help support through every little change.

Every team is different, but software development needs the time and space for individual work just as much as group work. A small team who needs a dedicated person for pairing, who also doesn't (or won't) do any IC work, is a huge red flag.

nijave · 81d ago
Don't forget about the type of software. Something really specialized or algorithm heavy (science or math heavy) might be harder to do solo than a CRUD app.
YZF · 81d ago
My experience is the opposite. Easy stuff is simpler to pair up. Really hard stuff is solo. E.g. I expect Ph.D. work to be mostly a solo project.

Not that it's impossible to do hard work collaboratively but I think a lot of heavy thinking is solo (Einstein, Newton e.g.) and it's hard to keep other people synchronized.

johnnyanmac · 81d ago
Most of us work in decade+ legacy code made from a lot of people who are no longer at the company. So most of the code is brittle by default. That's simply the trend that emerged from a workforce that stopped incetivizing retention.

As such, I'd argue that 80+% of your problem solving for the first few years (AKA the only years before you hop or get laid off) is in fact asking other people what the quirks of the code-base are. Maybe that is bad, but it doesn't seem like the retention culture is shifting anytime soon.

Waterluvian · 81d ago
When you look at damage per second graphs and conclude that all your healers need to be kicked from the raid.

It’s so difficult to quantify the value of “support” but they’re indispensable. I have yet to really find a sensible way to quantify it. It’s ultimately just something that you need to trust leaders to get right.

bsindcatr · 81d ago
Some things that don’t measure whether a developer is “good”:

- # LoC added, changed, removed

- number of points earned in a sprint, when those points aren’t quantitatively indicative of business value, and they never are

- number of on or off-the-clock hours schmoozing with others to solidify relationships with the business and “play the game”

- number of times they “sound like good developers / intelligent people” in meetings or presentations

- number of weeks they spent on really complex problems they worked to solve when they could have provided more incremental value earlier much more quickly

- number of solutions they provided the company quickly while leaving many times more LoC to maintain

- number of hours they spent honing code, formatting, updating to the latest versions but doing so for their own edification and preferences rather than focusing on the team and the business and what would help them

and so many more...

khazhoux · 81d ago
> Some things that don’t measure whether a developer is “good”:

> # LoC added, changed, removed

Everyone loves to say this, and yet at every company I've worked at, the top developers just cranked out code. High quality, performant code.

And at every company I've worked at, the lowest performers would take a week to write 100 lines of basic python.

"Oh, but khazhoux, those 100 lines were really very complex!" No, not actually.

"But won't people just pad their code with comments to increase their LOC?" 1) I've never seen anyone bother, 2) I'm not saying "managers should count LOC"... I'm saying managers should look to see how much code each developer is actually committing to the codebase. If someone isn't committing much code, but talks like they're writing a lot of code, then you may have a problem.

Honestly, somewhere along the way people seem to forget that software is made from code.

I would never suggest a manager stack-rank their team by LOC, but the notion that the code people write means nothing, is preposterous.

bsindcatr · 81d ago
You can make massive LoC changes by reformatting everything or just adding superfluous code or changes.

You can rip out a lot of code rewriting it to simplify and then losing a ton of business functionality that was used, or causing the need for a lot of business changes in process that might not be for the business’s benefit.

You can, on your own or with AI, write many LoC, and maybe it provides business value, which seems to align with being a “good developer”, but someone has to maintain those LoC, so then you have to weigh the business value to the end user and the team. Is it ok to the team to have all the extra LoC to maintain? How often will those changes eventually result in valid further changes to get that code to work? Will other devs just rewrite it and are their changes good?

So in the end, no, LoC added/changed/removed is not a good indicator of added overall business value when weighing both the business value to the user and the ongoing maintenance time that ensues, even though “good developers” along with “average developers” and even “bad developers” may have high LoC added/changed/removed counts.

During what some come to think as their peak years, they still don’t think of things this way. But as we get older and more experienced, we realize that sometimes new or old crappy code is ok, sometimes we should do a better job if it makes sense for the business and team, that many can contribute in their own way if those are the people and resources we have, things may change, and overall there is a limited amount that humans can do.

If you base performance on LoC and alter the team accordingly, you may lose great developers. You may also introduce volatility and risk later having a codebase that is higher cost to the business.

But embracing change and working fast and loose may also be important, so it depends.

khazhoux · 80d ago
You're arguing a different point. I never said a manager should simply count the number of LOC changes as a productivity metric.

I said that good developers write a lot of code. And I'm not talking about senior developers who now do mostly advising/review/architecture work (and don't code much anymore). And sure, sometimes someone takes a long time for a critical few-line change, but that does not happen every day.

I find it exhausting, frankly, how much pushback this simple concept gets around here. It seems to be a reflection of the gigantic team sizes that are common these days, and the modern tolerance for low-output (but still highly paid!) developers. Maybe the popularization of 2-week sprints 15-20 years ago corrupted everyone into thinking that everything should take that long, minimum.

People are shockingly ok with taking 3 days to add an argparse block to a python script, or half-week to implement a single HTTP call. It's nuts!

andix · 81d ago
The title should be: Why measuring developer productivity by story points is bad.

I was once part of a team that had a zero-storypoints developer too, let's call him Zero. He always refused to get any stories assigned during planning, his goal was always zero. He felt responsible for delivering all the planned stories and helped the people who struggled. He often came to me and told me to help someone on a specific task, because it was too much for him to help everyone.

This was well understood by management though. Zero took a 4-6 week vacation every year, and management always pushed important releases back if Zero was not there. The team could've done it without him, and it might've been better for the team not to have Zero around for all important releases. But management was scared something could go terribly wrong without him.

snapetom · 81d ago
Wouldn't Zero be a hero in disguise, then?

When I hear stories about Tim or Zero, it makes sense... with the caveat of whether they are actually transferring knowledge to teammates, and whether the other team members are capable of taking over the function of Tim/Zero. If not, then Zero is just covering for low performers, and your bus factor is still a liability.

johnnyanmac · 81d ago
In Zero's case, it sounds more like there is knowledge transfer but there's this cult of personality from management's perspective. Almost the opposite of Tim.

It can be scary, but you gotta pass the torch at some point and accept there will be turbulence compared to Zero smoothing out the landing. That's how you get future Zeros/Tims who very likely had their own turbulence to handle.

croes · 81d ago
So the real metric is the manager who knows their team and what each member brings in.
peterldowns · 81d ago
Yes, absolutely — and can effectively communicate that to their manager.
mjburgess · 81d ago
I've had some thoughts on programming practice somewhat related to Tim's role, and some on language design this morning.

I write code for others to read a lot, to explicitly teach them how to do something. This code has always been overly verbose, "decompressed" and teaches people the thought process behind a solution above being a "neat" solution. I was dragged a little reluctantly into this style, by being forced to anticipate all the ways the code may be misunderstood ahead of time -- by all the ways it was misunderstood previously. Its much less work for me to be verbose up-front, than fix misunderstandings later.

After watching and looking at some of the best systems programming code/coders -- I've come to think this is just the best way to program in general.

The latest program I wrote this way, and the quality of code is vastly higher. No abbreviations, any unusual coding practice (eg., conditional imports, using classes as namespaces rather than object templates, etc.) I noted briefly in comments to highlight it's unexpected. Any functions which are domain/app-specific have execessively long names which fully describe that step/asepct of the solution. Extensive design comments where my thinking is noted. etc.

Programs which teach their readers how to think about the solution, rather than how to understand the code -- and teach it to a "smart junior" rather than to an expert. I think this is different than literate programming, and of the maxim "code is read more than written" -- it's a specific "educational ethic": code isnt clean, or literate, or readable -- its educational.

If this is the best way for "programming in the large", then a property of programming languages follows: languages which enable the programmer to "decompress" their thoughts over many lines are preferable to ones which hinder this. This I think then explains something about the uptake of functional languages -- which resist this decompression of thoughts over lines of code. They are often sold on their conciseness -- as if a 200 line C++ ought be reduced to a 10 line F# program. This trades the wrong sort of productivity: long-lived large programs require programmers to build mental models of them far more often than they require them to add to them at-scale. A programmer self-teaches the code base more often than they write it: this isnt about reading.

This goes somewhat to the role of Tim in OP. Perhaps the right software engineering programming practice is to write code as-if you are pairing with a new programmer in the future. To verbalise everything Tim would say, already, in the code.

catlover76 · 81d ago
Interesting, cool insight

> any unusual coding practice (eg., conditional imports, using classes as namespaces rather than object templates, etc.)

Why ever do that kind of stuff though ;__;

franktankbank · 82d ago
Sounds like Tim was the manager. What exactly was the paid for manager doing?
bluGill · 82d ago
There are different types of managers. I'd use the term technical lead for tim. Someone needs to maneage product delivery. Someone needs to manage the backlog. Someone needs to manage the training of everyone. Someone needs to ensure people are getting setup for their next job. Someone needs to ensure everyone is paid right. Someone needs to handle it when two people don't get along. The above is a small subset of the full list - I don't know everything on the full list.
franktankbank · 81d ago
Not to be a total fucking asshole... but:

> Someone needs to manage product delivery:

You mean the 2-week delivery cycle into an automated CI/CD? Good lord I hope they don't have a useless scrum master too.

> Someone needs to manage the backlog:

I'm curious what input the manager has into this besides reading through a list of engineer curated items.

> Someone needs to manage the training of everyone:

Tim seems to be handling that.

> Someone needs to ensure people are getting setup for their next job:

Tim seems to be handling that.

> Someone needs to ensure everyone is paid right:

HR has but one fuckin job as far as I can tell.

> Someone needs to handle it when two people don't get along:

Hey Tim can you id the asshole? How comfortable are you hiring/firing?

Obviously IME non-technical management has done nothing but played politics and prevented firing of shitheads who were wrongly hired.

dahart · 81d ago
Do you have experience being a tech lead and/or a manager? Tech leads and people managers are two explicitly different roles in many organizations, for good reasons, including, but not limited to them being both full time jobs. It certainly depends on the company and the size of the team and other things, but many many tech leads are not at all comfortable hiring & firing, nor with interviewing and prioritizing work and product managing and meeting with management and approving time off requests and dealing with complaints and deciding raises and promotions and dealing with equipment and managing budgets… the degree to which you’re downplaying these roles is what leads me to have to assume you might not know what’s really involved.
franktankbank · 81d ago
Man that is a whole lot of fluff to differentiate between being able to hire and fire. I wonder what Tim would do.
dahart · 81d ago
So your mind is made up that someone fictional who is not described in a blog post does not contribute to an org you know nothing about? Is your point that all management is useless? Or something else? And why are you certain, what is your experience running a team or a company? Maybe the sarcasm isn’t communicating your point effectively?

No comments yet

bluGill · 81d ago
> You mean the 2-week delivery cycle into an automated CI/CD? Good lord I hope they don't have a useless scrum master too.

If you can automation that job good for you. However some people work in a regulated industry where not getting FDA/FAA and their equivalent for every other country in the world before shipping software means someone will go to prison.

> I'm curious what input the manager has into this besides reading through a list of engineer curated items.

They better have a lot. You might call it product owner (in scrumm), or some other title. Every project I've never worked on has more great ideas than they can invest in today and so you need to figure out what the priority is. It better not be only engineering that has input to this - marketing (a very different skill from engineering) needs to have input, as does finance...

> Tim seems to be handling that. [training]

It is normal to handle more than one management task. I doubt Tim is handling harassment training. This is the main job of HR (not making sure people are paid as you seem to think)

> Hey Tim can you id the asshole? How comfortable are you hiring/firing?

probably not. As one manager of mine told me, he always knew long before the team if someone would work out. The team is close, knows that person is nice (most people are nice), and seems to be smart. If you are the first to notice someone isn't getting up to speed quick enough you are the "asshole" that needs to be removed from the team, an outside manager will be much quicker because they are removed from personal contact with the person in question.

throwanem · 81d ago
> HR has but one fuckin job as far as I can tell.

Yes. Protecting the company. As long as anyone's paycheck doesn't have a slur actually written on it, that's roughly where HR's interest ends in the matter.

Don't feel too called out. If I thought you were wrong on anything else here, I would say so.

bluGill · 81d ago
HR generally gets a secondary job of checking with other companies are paying someone for similar work. The primary job is protecting the company as you noted. (though paying someone a competitive wage protects the company from people leaving for too little, or the from paying more than they must)
simonw · 82d ago
Instead he would spend his day pairing with different teammates. With less experienced developers he would patiently let them drive whilst nudging them towards a solution.

That's not a management activity - that's the kind of coaching you would expect from a senior IC ("Individual Contributor" - I still hate that term.)

Generally I would expect a "manager" to have authority over other people in the company: run performance reviews, handle promotions and hiring and firing.

I think it's important for companies to provide a career structure that allows for influence, decision making and leadership roles that don't also require taking on those management tasks. Management tasks are extremely time consuming and require a substantially different set of skills from being a great team coach or force multiplier like Tim in the story.

franktankbank · 81d ago
I can't quite tell what the manager in this story should have been doing though. Where is their value add? If its just MBA fluff playing psycho games with metrics then I'd argue they can get fucked.
bee_rider · 81d ago
It could be a big company. There might be some layers of C-levels, the a layer of managers to listen to them and turn their commands into concrete things, and then a couple crumple-zone layers of management to make sure that the concrete bricks from the top don’t damage actual productivity when they hit.
jprosevear · 81d ago
I would agree, but the manager probably should be in touch enough that they could see the teaming behaviour themselves.
llamaboy · 81d ago
They did… that’s the whole premise of the article
Izkata · 81d ago
A lot of people seem to have zeroed in on "the manager's decision" and completely missed that it referred to the department manager, not the team manager, and the story is told from the perspective of the team manager.
dilyevsky · 81d ago
Not sure the story is even real but apparently that was going on long enough without his manager knowledge that the manager was dead set on making tims exit preparations
spiderfarmer · 82d ago
Clearly performing another under appreciated task: to act as a buffer for Tim, allowing the team to flourish even when they don’t adhere to company policy. And all other managerial stuff apart from coaching.
_fat_santa · 81d ago
Honest Question: Are there any metrics around developer productivity that actually work? Reading stories like this and others over the years I've come to the conclusion that you simply can't measure developers productivity on a granular level, it's just about the final product. However, I would love to be proven wrong.
tpmoney · 81d ago
I don't think there are realistically any good "individual" productivity measures that work across a broad spectrum of employees, even when all of those employees are in the same role. Every team I've ever been a part of, even before being a developer has been made up of people that all contributed to the overall project in different ways. Imagine trying to measure all workers on a car assembly line by the number of screws they insert per day, or the number of welds they make per day. Anyone who's primary job on the line isn't inserting screws or making spot welds is instantly a low performer by this metric, and yet you can't assemble a complete car with only screws and welds. And it's worse I think in something like software development, where the specific way a team member contributes might be more nebulous. Very rarely do you hire someone just for their code review skills or the design capabilities. The team member that somehow always manages to recall the tiniest of details about the system that no-one else recalls from the feature work done 5 years ago is not exactly a skill you can find on a resume or even one you could build a good metric for even if you had hand tailored metrics for all employees.

And it's a hard problem to solve. I don't envy the job of anyone in management trying to figure out how to determine who (if any) of your employees is a drag on the team. Sometimes it's obvious and there are concrete problems, but other times it's just someone "everyone knows" is a drag, but without hard metrics, you're left with awful things like having employees stack rank each other.

johnnyanmac · 81d ago
It's prone to its own biases, but I always figured the best metric was simply to ask how others on the team (or coworkers you need to work with) think of you. Your lead obviously has a bigger sway on this, but overall the idea is that you're generally doing a good job if the people around you overall see you as productive and feel more productive when working with you.

I can only really see an exception for some gnarly Principal who's off deep into some very specific problem where this evaluation would fall apart. But such an individual problably isn't one you're worried about productivity with.

rsynnott · 81d ago
See https://en.wikipedia.org/wiki/Goodhart's_law - _in general_ once you start using metrics to reward and punish people, that will break down. It’s by no means limited to software engineering.
sehyun · 82d ago
karaterobot · 81d ago
> You see, the reason that Tim’s productivity score was zero, was that he never signed up for any stories. Instead he would spend his day pairing with different teammates.

I'm very glad this essay turned out to take this position, because when I read the first couple paragraphs, I was ramping up to write a mean internet comment about how stupid measuring developer productivity through story points is.

A friend of mine is exactly like this Tim guy he talks abou: he spends time helping other people fix their problems, or takes extra time doing things the right way. His personal velocity suffers, but the team and the code base is greatly improved on net. He was put on a Performance Improvement Plan at one company, and told his job was at stake at another as a result. No question it's kept him at a Senior level when he should be higher at this point in his career. I sort of take it personally, because I worked with him at the company that gave him the PIP, and both he and I quit as a result.

When I see companies trying to measure developer productivity (and tying it to employment and advancement) I think about Seeing Like a State by James Scott, and the concept of legibility: imposing by force a set of rules on a complex, messy system to make it easier to steer from some office far away. Makes it very convenient to managers, and often leads to disaster.

gravy · 81d ago
It never occurred to me that a rebuttal to "not using lines of code or bugs solved because it can be gamed" is just to point out productivity is literally always gamed
readthenotes1 · 81d ago
They even have a fancy title, "measurement dysfunction", and a smug "if you know you know" nickname, Goodhart's Law
graemep · 81d ago
and Campbells Law, and the CObra effect.

I had not come across "measurement dysfunction" before. Useful phrase.

dilyevsky · 81d ago
A related phenomenon is McNamara Fallacy
eckesicle · 81d ago
These sort of stories seem to be dime a dozen and weirdly celebrated around HN and the software engineering community.

We’re told of the hero, who goes against their managers and executives and doesn’t deliver any stories as agreed in sprints.

We’re told of the engineer who isn’t hired by Google because he can’t invert a binary tree. Everyone else piles on and decree that, yes indeed, you cannot measure developer efficiency with a Leetcode or whiteboard problem. We’re too good for that. Another engineer chimes in: “I don’t test my candidates. The best people I worked with were hired over a beer and a chat at the local pub”

We’re told of the MBAs who destroy the organisation, by introducing evil metrics, and how that the work we do are immeasurable and that the PHBs don’t understand how great we are. 10x engineers aren’t a real thing, everyone is equally productive in our digital utopia.

Meanwhile in the real world, hordes of awful engineers deliver no story points, because they in fact, do nothing and only waste time and lowers morale.

Meanwhile in the real world, each job opportunity has thousands of applicants who can barely write a for loop. Leetcode and whiteboards filter these people out effectively every day.

Meanwhile in the real world, metrics on delivery, features and bugs drive company growth and success for those companies that employ them.

To me, all these heroes, and above process people, just strike me as difficult to work with narcissists who are poor at communication. We are not special, and we do not sit above every other department in our organisation.

add-sub-mul-div · 81d ago
> We’re told of the hero, who goes against their managers and executives and doesn’t deliver any stories

> Meanwhile in the real world, hordes of awful engineers deliver no story points

Do you think the point here is that not delivering on one specific metric is a good thing, or that not delivering one specific metric can't be assumed to be the whole picture?

eckesicle · 81d ago
It’s the latter, but my point is that’s a tired and weak argument to make.

The blog poster could’ve asked, why does the manager want me to deliver the story points? It’s because Jake is also delivering zero story points and he’s a terrible engineer and it’s a good canary metric.

dilyevsky · 81d ago
Agree in 1st and 2nd “meanwhile”. On the metrics thing though I have the opposite experience - mild distraction at best, total disaster and productivity killer at worst. Most orgs couldn’t even implement metrics fully (or at all) because in reality it is always much more work than they usually anticipate. Instead they larp as google and waste your god damn time.

Having said that i do think that there are a bunch of senior folks who think they are Tim but meanwhile they’re just hiding their laziness/incompetence by getting involved in other people’s shit

Peritract · 80d ago
> We’re told of the engineer who isn’t hired by Google because he can’t invert a binary tree.

>Meanwhile in the real world, hordes of awful engineers deliver no story points

These two seem linked; if hiring practices are bad, then you would expect to end up with many bad hired developers.

mjburgess · 81d ago
People of a revolutionary (or "innovative") temperament are those who are going to say, "this system doesnt work, these processes are broken, the wrong outcomes arise" and ignore them. In doing so they just "do the right thing" in their judgement, and in so doing, develop the next iteration on the processes that others will follow.

If these innovators are operating in a niche where innovation is required, they are solving different problems than most others and have different self-defined standards ("narcissism"), and so on.

Probably many people who visit HN have this temperament, and a significant number are in niches which need to evolve this way (eg., this applies to all startups). HN is a small sample of engineers: most don't go to websites to conceptualise their own activity, reflect, etc. These are indications of people with a desire to innovate, or to solve novel problems in their profession.

If you are in a highly stable environment, with effective processes, etc. then people of this temperament can be trouble if left entirely to their own devices: good managmenet would place them in projects/areas where there is some unknown unknowns to figure out.

In many cases however, people without this temperament (say, "it works, dont break it, conservatives") find this behaviour unsettling, arrogant, disruptive, isolating -- because it is. There isn't any thing to "communicate" when you havent figured out what the solution is -- you can air your thought process every day, but that will just unsettle more people when they see how much it changes (in response to more thkning, information, etc.). And the values by which this change takes place are not conservative, they're radical and imposed by a person who sees a route out of a predicament and so on. It's quite arrogant to place yourself in that position, or think it's yours by some invisible duty that no one else has.

In any case, if you operate in this niche, esp. eg., if you're in a start up environment -- then you arent going to care a jot about this "real world". They are acting against the real world, to improve it.

eckesicle · 81d ago
Thanks for responding. I see your point, but I think it is responding to something slightly different than the point I was making.

If I may latch on to your first paragraph, my point is that we are saying this first bit “this system is broken” and are happy to throw out the baby with the bath water and tear it all apart, on flimsy evidence and generalisations.

And yes, there’s definitely something to be said about the HN crowd having a temperament toward innovation, but I don’t think that’s in any way orthogonal to my point. In fact, this community is far more rational than most others, so I would sort of expect us to rationally look at company processes too, but for some reason we seem to have a blind spot when it comes to our managers and executives and the ‘horrors and hoops’ they make us jump through every day.

MichaelRo · 81d ago
>> To me, all these heroes, and above process people, just strike me as difficult to work with narcissists who are poor at communication. We are not special, and we do not sit above every other department in our organisation.

Exactly.

Looks to me like Tim was really good at hiding his incompetence behind other people's backs. Also looks like a problem of the others, particularly senior others of not telling him "Fuck off, Timmy" when he sat uninvited beside them to "pair program" together.

Kamq · 81d ago
So on one hand, you're kinda right. HN is filled with exaggeration (imo often justified) from people venting because they have to deal with the bad parts of this system all day. That seems natural in a dev filled space.

But I don't think your comment is fair.

> We’re told of the engineer who isn’t hired by Google because he can’t invert a binary tree. Everyone else piles on and decree that, yes indeed, you cannot measure developer efficiency with a Leetcode or whiteboard problem.

Because this is a bad way to judge engineers. Or, rather, it's a great way if they don't know how to invert a binary tree. Most of the job is to figure out something you don't know yet and do it. Giving an engineer a random wikipedia page on an obscure algorithm and having them implement it is a great interview tactic. Having them regurgitate something common is bad, there will be a function for it somewhere, and you just need to call it.

> Meanwhile in the real world, hordes of awful engineers deliver no story points, because they in fact, do nothing and only waste time and lowers morale.

I agree with you on this one. Those people need to be fired. That doesn't mean story points are a good metric, often 90% of long term value can come from the kind of people who are like Tim, and losing them can destroy projects. Just because something bad is happening, it doesn't justify killing 90% of value for a team.

The only thing I've seen that works is to give team managers more discretion and rigorously fire managers who regularly create poor preforming teams (you often have to bump manager pay for this, that's fine, good managers are worth their weight in gold).

> Meanwhile in the real world, each job opportunity has thousands of applicants who can barely write a for loop. Leetcode and whiteboards filter these people out effectively every day.

You do need to filter for people that can code. That doesn't mean filtering for inverting binary trees is a good idea. Having people submit code samples that they're proud of is a much better approach for a first filter.

> Meanwhile in the real world, metrics on delivery, features and bugs drive company growth and success for those companies that employ them.

Bullshit. Basically all companies use metrics, and most companies are garbage at delivering useful software. A company being years behind and a million over budget on a software project, and eventually delivering something people don't want is so cliche that it's expected. And these companies regularly get out competed by small teams using 1% of the resources, as long as the small teams give half of a shit. In fact, if you want my metric for team success, what percentage of the team actually cares is a good one.

You're proposing a solution with a <20% success rate. Don't act like it's a gold standard that drives business value to new heights. With the system as it is today, most companies would be better off getting out of software and having a third party do it for them.

eckesicle · 81d ago
My wider point is not that the way companies are run is perfect and that we should stop the “innovators” (to quote the sibling comment). Each of these examples speak of corporate dysfunction, but we never give any weight to the constraints that force them in place. Leetcode is bad, but it’s bad in the sense that it errs too heavily on filtering out false negatives - the cheaper of the two errors. The alternative is worse.

Giving Tim the benefit of the doubt in this story, it still holds true that for every extraordinary and invisible superstar like Tim there are 99 under-performers who are indistinguishable from him.

We need to empathise with our managers and the processes in our organisations to understand their purpose and how they came to be.

We, software engineers, keep picking out singular data points of evidence to point at a flawed and unfair world, that go against our self inflated egos.

The brew guy inverting the binary tree and Tim being great, does not invalidate the practices of whiteboards and story points as a general practice.

To your final point, the best organisations that I’ve worked with used metrics in a very effective way (mostly in start ups). The worst did too. Just because some do it poorly, does not mean that it’s bad across the board.

What is tiring, is the unfair, and low expectation of the quality of evidence demanded of the anti-establishment notions in software development, before they are taken as gospel by this community.

And, in my experience, the people who are the strongest proponents of sidestepping or dismantling these processes overlap strongly with those who also do not deliver value to their teams.

Kamq · 81d ago
> Leetcode is bad, but it’s bad in the sense that it errs too heavily on filtering out false negatives

But, it doesn't. It filters for something orthogonal to development, which is ability to obsess over clever algorithmic solutions. Ok, well my company does HackerRank instead of LeetCode, maybe LeetCode is magically better, but I'm not seeing anything that tells me someone who grinds LeetCode is actually going to be useful on my team.

Look, you want an idiot check to make sure someone is actually able to code, fine. That's probably a good idea. But the number of stories on here about people being turned away because they hadn't run into a particular tricky algorithm problem is concerning.

> Giving Tim the benefit of the doubt in this story, it still holds true that for every extraordinary and invisible superstar like Tim there are 99 under-performers who are indistinguishable from him.

But they aren't indistinguishable. The author of the blog post was perfectly able to distinguish them. That's my point. There are plenty of ways to be able to distinguish them, this metric just isn't one of them. Because it's a bad metric.

It may not be legible to the higher ups, but good lower level managers have no problem distinguishing good unconventional people, and under-performers.

> We need to empathise with our managers and the processes in our organisations to understand their purpose and how they came to be.

I do empathize with the managers, at least the lower level ones. That's why I advocated for putting them in complete control and giving them unilateral firing privileges and increasing their pay.

> the best organisations that I’ve worked with used metrics in a very effective way (mostly in start ups). The worst did too.

You're really making it sound like metrics (at least as traditionally practiced in software) are orthogonal to being a good organization. If that's true, we might want to re-think how much time we spend on them and how much money we spend capturing them.

Now, if you want to use profit, adoption, or user satisfaction as metrics, I'd love to talk about that, but I've seen nothing in my experience in the corporate world that tells me that the way we're currently using them is even net positive value.

eckesicle · 81d ago
It only appears that HackerRank/Leetcode isn’t good at filtering because you’re viewing it from your perspective, and not the perspective of the entire population that is tested. To you, the predictive power at the top tail end of the distribution is low, because you’re thinking of two strong developers Alice and Bob. Alice happens to know algorithm X and would pass the test, whereas Bob does not. But that’s not the population we’re testing. Think more along the lines of Alice and Bob and your grandmother were the test population. It’s absolutely fantastic at filtering the lower 95% of applicants because they will _never_ be able to pass. Yes, inadvertently 2.5% of “good developers” are filtered too, but that doesn’t matter to the outcome of your company. They just want someone competent, and they don’t care if it’s Alice or Bob.

The same logic sort of applies to Tim and his performance. The bias of having an imperfect metric is probably much better than the bias of letting an army of middle managers go with their cut. Besides, it doesn’t have to be a hard filtering function at this stage, but a metric to indicate that we need to look a little closer at Tim

Kamq · 81d ago
> It’s absolutely fantastic at filtering the lower 95% of applicants because they will _never_ be able to pass.

This is the part I disagree with. It hasn't been true for years. Anyone with the free version of ChatGPT can pass a hacker rank today.

> but that doesn’t matter to the outcome of your company

It does for mine, because we've hired all of the good developers that get through the process you're describing and it isn't enough. We actively moved away from what you're describing and turned the interview into a 2-3 hour pair programming session where the person completes a mini version of a ticket.

This has much more predictive power than what you're describing.

eckesicle · 80d ago
> This is the part I disagree with. It hasn't been true for years. Anyone with the free version of ChatGPT can pass a hacker rank today.

It certainly still is true today. Anybody who is sufficiently motivated to cheat can pass it. It was true prior to ChatGPT, and it still remains true today. And yet they don’t. Most people completely fail these screens

> It does for mine, because we've hired all of the good developers that get through the process you're describing and it isn't enough.

Then your industry is atypical in the type of applicants that you are getting. So to accommodate you’ve had to increase your false positives to reduce false negatives. That’s completely fine if it’s what you need to do, but it’s not the typical experience for a tech company.

We also do a pair screen after the code test and we still reject around 80% who make it to that stage. How do you scale interviewing everyone if you don’t pre screen?

Kamq · 80d ago
> Then your industry is atypical in the type of applicants that you are getting

Based on the quality of candidates that get through at other companies, I'm guessing our problem isn't atypical. Or at least, good devs often aren't getting through their pipelines at all. It's possible that in trying to reduce the false positive rate, they screened out all of the actual positives, but that doesn't paint a good picture of the industry.

> How do you scale interviewing everyone if you don’t pre screen?

We do pre-screen. The fact that they haven't encountered a tricky algorithm before isn't a problem. For ones where the syntax is valid, a dev at my company does a code review on it.

cornel_io · 81d ago
There are a couple important things to also keep in mind:

First: just like there can be individuals who lift up an entire team but are not ticking off tasks themselves, there can be apparently individually productive team members who slow the entire team down for any of a number of reasons. In my experience it's usually either that they are a) fast but terrible, b) have really weird coding styles that might not be bad but are very difficult for others to work with (architecture astronauts and people who barely speak the language often fall here), or c) are process bullies who try to set up the entire review system to enforce their preferences in a hardline way that suits them but delays everyone but them. Each needs to be dealt with very differently, to varying degrees of success, but my honest opinion at this stage is that no matter how productive these people seem by themselves it's mostly harmful to have them on a team. Behavioral issues in senior people tend to be really tough to adjust, and take a lot of energy from a manager that is better spent helping your top performers excel; that said, if you can get them to adjust sometimes it's worth the effort.

Second: pair programming works great for some people, but it is terrible for others. I've measured this on teams by trial and error over fairly long periods, and unfortunately it's also the case that people don't segment neatly based on their preferences, so the obvious "let them choose" method isn't ideal. There are pairs of people who really love pair programming and desperately want to do it all the time who are almost fully 2x as productive when split apart instead (yes, including downstream bugs and follow-ons, meaning that they really are just having two people do the job of one), and there are people who hate pairing who see similar multiples by being forced into it even though they hate it. My rough intuition is that there are two independent variables here, a social factor that measures how much you enjoy pairing, and a style factor that determines how much benefit you derive from it, with the two not correlating much at all. There might even be a slight anticorrelation, because the more social people who love it have already naturally done as much knowledge sharing as is helpful, and the people who hate it are underinvested there and could use some more focus on the fact that they're part of a team.

PeterStuer · 81d ago
You get what you measure. If your metric is claimed completed story points, you'll get people good at claiming story points.

Every system can and will be gamed, either directly or indirectly through osmosis and attrition.

The only way to win is not to play. Put people in charge that know how the pie is made, then trust them to make the right calls.

This btw is one of the major reasons why non-technical founders/managers so often fail.

ibash · 81d ago
Maybe.

There’s also folks that pair because they’re a crutch for one or two other engineers. The other engineers never improve or are let go, but softly slow down the team.

There’s also the folks that pair because their code doesn’t make sense on its own. Or they have some config files they’ve refused to check into the repo, etc.

Pairing makes them feel valuable.

gavmor · 81d ago
> There’s... folks that pair because they’re a crutch for one or two other engineers [who] never improve.

I can imagine this happening if neither pair is all that good a communicator, and if the seniormost never employs a little Socratic dialog every now and then.

WuxiFingerHold · 81d ago
Agile methods are often applied wrong and then are a disservice. There is no one-size-fits-all method to manage people and teams. Leadership naturally buys into those method as they are promised an easier life, but there is no shortcut to management and leadership. It's always situational.

At my (very large) company Scrum and SAFe is applied to all kind of projects. Even to manage organisations with highly heterogeneous responsibilities and workloads. Think of 2 people doing dev, 2 conceptional work for various larger projects, 3 are basically consultants for other orgs, 4 are data analysts and 1 is doing some spreadsheet work all day long. Now our manager had the great idea to manage us with Scrum.

slowtrek · 81d ago
Moral of the story:

Anyone that looks for the metric to find the weakest link, is the weakest one at heart.

NightSquirrel · 81d ago
There are 4 methods of determining developer quality: Empirical metrics which can be misleading, or gammed. Team consensus which can devolve into a popularity contest. Manager "impression" which can be manipulated with strong people skills and "impression management", or letting an AI algorithm decide who is the most productive. No evaluation system is perfect and most are very flawed which is why management is both an art and a science and those that can do it well are very rare and in very high demand and therefore often deserve the compensation they receive.
kevincox · 81d ago
> an AI algorithm

In reality this is just some secret combination of the above metrics (assuming there are no "bugs", which there surely are).

ewalk153 · 81d ago
I love a good pairing ladder. While there is no absolute good measure of productivity, a suite of thoughts observation can provide at least tripwires.

One major problem with tools that ask crafters to do data entry to show their value is that best people are most likely to refuse. You really need to focus on tooling to help capture what’s going on without toil.

For example, if your folks are remote and they use software to aid in pairing (eg Tuple), script the system to log the tuple sessions and perhaps even capture the pairing in the commits made together.

This can be used as an input to bring visible to be best leaders in your org.

wwarner · 81d ago
Hm. In the agile world, non-coders don't typically sign up for stories. So maybe this person shouldn't have been expected to land stories, or possibly there wasn't room in the budget for someone to be just a peer coder. I personally like the story paradigm as a way of working out (and then sticking to) priorities, and I love it when managers and principals work on stories like everyone else. Also, in the remote work context, everyone has to work harder on figuring out the right thing to work on, and stories are a decent way to achieve that.
tracker1 · 80d ago
I was let go from a position in a similar situation... I was pressed to enter Jira tickets and get them over the line. Didn't matter I was working with my team, acting as an SMA with two other teams, participating in planning meetings 20+ hours a week. I wasn't getting enough points in Jira across the line and had to go.

Aside: I wasn't actually fired, when I went under "review" status, whatever it was called, I lined up another job and left.

ArthurStacks · 81d ago
In my company I would have told him to start doing some work and getting stories delivered or he's gone. Yes, he's being useful in assisting others but I can easily find someone who can do that and their own work at the same time. He doesnt need to be sat there with others the whole time. What is likely going on there is Tim is playing his boss, playing up his pairing role and its benefits in order to sit being idle watching others work while providing commentary.
glouwbug · 81d ago
Might it be that he’s so good everyone comes to him first and not you?
ArthurStacks · 81d ago
I would not hire him in my business regardless of how 'good' he thinks he is. I'm interested in people who can get work done.
glouwbug · 80d ago
I think you underestimate those who are both technically brilliant and empathetic. I sense you're at least brilliant
guappa · 74d ago
You still employ developers? You said AI made them irrelevant.
tasn · 81d ago
I get the point that they are trying to make, but Tim should try to find a way to ship things. It sounds like he could ship a lot and make the codebase better for everyone if he did.
umvi · 81d ago
So there wasn't a way to capture the fact that Tim was helping with so many JIRA stories in a way that makes Tim's work more visible? Like maybe pair programming stories that Tim owns and moves on the board (assuming Tim's time is best used in a mentorship capacity)?

It kind of rubs me the wrong way that Tim can just fly under the radar and do whatever he wants without any paper trail or accountability while the rest of the team has to clearly convey what they are working on

afro88 · 81d ago
You can put subtasks under stories, and Tim can have his own subtask that represents his contribution. You can also (with an extension) put time against subtasks if leadership/management want to get really pedantic. Each team member should have at least 1 assigned story/task/bug in each sprint, and Tim should have at least x hours logged against subtasks off stories in the sprint.

Or you can, you know, trust your team to deliver the stories they said they could do in a time window, as a whole. Let them figure out the how at the team level.

decGetAc · 81d ago
How did the manager not know Tim didn't have tickets slated for him ? How did Tim not even pick up some (at a lower capacity) and then still helped with the remaining time ?

I guess as someone who does a lot of the same that Tim is doing,and I bet others can resonate, I still "have to" pick up tickets and I think that's always the expectation in any job I've had as an IC. Is Tim managing his time well ?

dosinga · 81d ago
Tim would do well in these times of LLMs. They can write code faster than anybody but also need more guiding and coaching than anybody. They don't learn anything no matter how much we call it machine learning. These days what we most need is a Tim of Tims - somebody who coaches software engineers into becoming Tim.
lmm · 81d ago
I would guess at least 80% of the people who look like this Tim are contributing zero if not negative. I think there are good odds the actual Tim in the story was too. I mean I'd certainly love to do just the fun part of my job and duck out of all the scut work, if I could find a team that let me.
Beijinger · 81d ago
pipes · 81d ago
I've never worked on a team where story points aren't translated into time. I've found story points to be a completely useless level of indirection. Genuine question, has anyone here ever found them useful?
failrate · 81d ago
The worst programmer I know literally could not go a day without either checking in code that did not compile or saying something creepy and sexual in a large open plan office, and we all worked together to get them fired.
SJC_Hacker · 81d ago
The first problem can be fixed by CI/CD, and proper branching strategies. Each IC should have their own branch, then PR into appropriate branch

Have no idea on the second, other than a visit from HR.

failrate · 81d ago
I was the ci/cd guy. I am not exaggerating when I say this person's code just would not compile and they would not test locally.
SJC_Hacker · 80d ago
An intermediate state on their own branch maybe not such a big deal. But did they regularly initiate pull requests on on broken branch ?
failrate · 78d ago
P4, not git.
SJC_Hacker · 77d ago
I've never used perforce but it seems git can this problem at least
SJC_Hacker · 77d ago
Mean to say git can fix this problem
TZubiri · 81d ago
I don't think this demonstrates the whole system and premise was wrong, you can just adjust so that Tim gets some credit whenever he helps a teammate.

Measuring stories/features/issues solved seems sensible to me

m463 · 81d ago
randomNumber7 · 81d ago
Tims job seems perfect for me.

I like casually hanging around and telling people what they can do better. This usually results in me seeming unlikable, since I am so often pointing out mistakes.

hardwaresofton · 81d ago
> This usually results in me seeming unlikable, since I am so often pointing out mistakes.

"comms diff" as the kids say. Communicating is a skill, it is possible to get better at it and help people in a way that they enjoy your presence as well.

markus_zhang · 81d ago
A much easier solution is just assign a team improvement ticket to him and call it a day.

I doubt he never worked on any tasks though, so maybe something for him once for a while.

Tewboo · 81d ago
It's hard to believe, but this person's code is so convoluted, it makes my head hurt. I've seen a lot, but this takes the cake.
RKFADU_UOFCCLEL · 81d ago
Very good article, managers just want short summaries of what's going on and sometimes these summaries come in the form of bad metrics.
nawfalak · 81d ago
even though this post puts in a good word for tim, calling him out and putting his linkedin in a post with this title is crazy
casey2 · 81d ago
This just seems like you performed a social engineering attack on your boss to keep someone on the team who was objectively performing poorly but happened to be doing something that is valued in western culture.

In short you replaced one well defined metric with an adhoc one following your bias.

You are a peon. For all you know your local improvement has a negative effect on the whole company. Listen to your boss and let the company fail fast if it has an unfit system.

PartiallyTyped · 81d ago
This is an awfully bad reply. The person described in the essay is basically an L6 and an L5 moving to L6 at AWS. Our L6s don't write code, they build PoCs, work on designs, estimates, and scale through others. They use their experience and knowledge to scale out, and the L5s and L4s do the work.
Jean-Papoulos · 81d ago
It seems strange that there is zero commits from Tim. Does he do code review instead perhaps ?
darthrupert · 81d ago
Damn. Now that I read this I realize why my current team feels like nothing gets done and the reason is the team has no Tim.
ibash · 81d ago
That’s not a good excuse
darthrupert · 81d ago
It's not even an excuse.
Sparkyte · 81d ago
There is a Tim for every successful team. Sounds like a solutions architect.
EGreg · 81d ago
Hmm, I wonder what Paul Erdos was doing in mathematics

Was he the cross-pollinating bee of math?

atoav · 81d ago
Every metric bas unintended side effects. Sure capitalists tend to think the greatest stuff happens from competition, but for real competition you need redundancy -and pay multiple people for writing functionally the same code.

Competition within teams selects for the people who invest most time into looking as if they produced worked punishes those who are good team players.

On top of that, how do you compare a guy who produces 100k lines of unmaintainable boilerplate code versus a guy who in the same timeframe hunts down a particularly nasty and hard to fix race condition and changed 1 line in the end? Any programmer knows the latter is much more exhausting and provides lasting value, while the former might actively hurt the project down the line.

If you manage software development either you trust your team or you have to understand the program yourself and micromanage them. Best would be to trust and understand the program and only inject yourself when it is really needed.

j-bos · 81d ago
Real bummer the dilbert link in the story is broken, so much lost history.
noqc · 81d ago
Goodhart's law is not a joke. There is no standin for value.
aaws11 · 81d ago
rurp · 80d ago
I worked at a company with very similar performance metrics and it was as counter-productive as you would expect. The surprising thing is that the management wasn't that bad overall but they worshiped at the altar of data and metrics for everything. That works great for some things, but not everything.

The Jira-focused performance metrics led to a lot of short term work and fixes since everyone was heavily incentivized to get the immediate task done as quickly as possible without much long term thinking. This created an increasingly large amount of tech debt and caused some real messes. But hey, we could loudly proclaim our love of iterative innovation and data driven decision making processes!

I suppose one benefit was that it became pretty easy to get a stellar performance review since it was completely based on a few metrics that could be managed.

ChrisMarshallNY · 81d ago
I think this was posted here a year or so ago.

I love this story.

PartiallyTyped · 81d ago
What i like the most is how it describes the more senior engineers in my team.
hansmayer · 81d ago
I think a lot of this idiotic thinking about measuring productivity through "stories" is to pin on the "Agile" industry overselling their low value "methodologies" to the MBA-type managers, which are now unfortunately just about everywhere. Hence you have some clueless person deciding who has to go, based on how many tickets get moved on the board. As Joel Spolsky once said, no software company can succeed unless a programmer is at the helm.
easyThrowaway · 81d ago
I mean, I've worked on some companies where management would've seen what Tim was actually doing and nonetheless reply with "We're not paying him to hang out with other developers, we pay him to sit at his desk and code!"

Vox Jira, Vox Dei. Make sure you're not working in a company with such kindergarden-like approach at managing people before attempting anything like that.

readthenotes1 · 81d ago
Kinda concerned the author thinks story points correlates with biz value....
dankwizard · 81d ago
These articles are so predictable and always have a smug aura around them.

"Reports showed me the absolute worst programmer on my team. Did I fire him? No. I actually gave him a 20% raise.

Do you know why? He was the best programmer on my team (in disguise)."

tzs · 81d ago
I had a sort of similar situation. I was one of two senior developers at a company making utility software for Windows and Mac in the late '90s and early 2000's. The other senior developer was the owner and CEO of the company and had to spend most of his time doing owner/CEO things so was only able to spend maybe one day a week developing.

The way we organized most of our Windows programs is that I'd write a non-GUI core that implemented all the underlying system level stuff we needed, and then the junior developers would write a nice Windows GUI that used that core. If the product needed anything like a VxD, a filesystem hook, an LSP, or any other Windows kernel extension I'd write that too.

We were profitable and there would be profit sharing bonuses quarterly (I think...might have been monthly but that doesn't significantly change what follows). The owner was always tinkering with how to decide how much profit sharing each person got.

One scheme, which he was sure was going to be great, was to take the total amount available for profit sharing for a quarter and divide that by the number of employees. Call that amount "1 share". So if there were N employees there were N shares available.

He wanted those shares to be allocated so that 25% of the employees got 2 shares, 50% got 1 share, and 25% got 0 shares. Who is in what group would be determined by a company wide vote.

Ballots were distributed that listed all N employees in alphabetical order, and we were told to write a 2 next to N/4 names, a 1 next to N/2 names, and write a zero next to the remaining N/2 names.

For each person their numbers from all the ballots were totaled, and the 1/4 with the highest totals got 2 shares, the 1/4 with the lowest totals got 0 shares, and everyone else got 1 share.

In addition, the people with the 8 highest votes would be put on a committee that would advise the owner on the direction of the company.

The owner's expectation when he launched this was that I would be the top vote getter nearly every time, and would always be in the top 8 so be on the committee of 8 which he was planning for me to run.

I ended up not being in the the top 8. I wasn't even in the top 25%. I don't remember for sure, but it was either somewhere in the bottom half of the 1 share group or it was in the 0 share group.

The reason was simple. Although I wrote the core functionality of all our products my role was not really visible to people other than other developers. It was the junior developers who wrote the GUIs. It was the junior developers who did most of the interaction with the testers. When a test found a bug they'd report it to the junior developer who was, to the testers, the face of the project. If the bug turned out to be in code the junior developer would let me know.

So every developer put me down for 2 on their ballot, but to everyone else I was just some guy in development doing some unknown work so I didn't get many votes from anyone else.

At least the owner immediately recognized that this profit sharing scheme was flawed and dropped it. Since he reacted so quickly I didn't gloat too much over the fact that this was exactly what I told him was going to happen when he first proposed this scheme.

(Some gloating was necessary because the owner and I had been best friends since we met in college about 15 years earlier, and the obligation to rip on your best friend when they do something stupid after you told them it would not work is stronger than the rule that you shouldn't tell your boss "I told you so!").

CaffeineLD50 · 81d ago
A nice write up.

But our AI overlords will need metrics that they can use.