Top
Best
New

Posted by aamederen 19 hours ago

Nobody gets promoted for simplicity(terriblesoftware.org)
836 points | 474 commentspage 8
nyeah 16 hours ago|
Nyeah ... but people can get promoted for consistently shipping stuff that works, on time. And people can get sidelined for consistently taking 10x as much time to provide the same business value. That may not be the rule, and it may not always be obvious in the short term who is sidelined. But it can happen.

It can even happen that the tag "very smart" gets attached to those sidelined engineers. That's not necessarily a compliment.

randusername 17 hours ago||
Whatever is going on with each 'f' in this font is breaking my brain. Feels like the drunk goggles equivalent of dyslexia.

I don't think this phenomenon is unique to programming. My plumber was explaining how he put in a manifold and centralized whole-house off valve accessible indoors and I was like, okay, thanks? I can just turn it off at the street.

Only established professionals have the status and self-confidence to show restraint. I think that explains interviews.

mauvehaus 15 hours ago|
Your plumber is probably making a good choice. Valves that don’t get exercised regularly can be all but guaranteed to be a pain in the ass when you need them to work.

We have a calendar reminder to exercise the valves in our house yearly, and the fact that they’re easy to get at helps make sure it’s a quick job, not a tedious one.

Not a plumber, but have lived in enough old houses with iffy valves to have been bitten a few times.

andresquez 13 hours ago||
I think it's simpler than that, you get noticed and then maybe promoted based on what you deliver. The ability of delivering what you were asked to, on time, or even before that.

Adding extra things can always help, specially like in the UI side of things, since higher ups will probably just notice that part.

eikenberry 11 hours ago||
Sounds like an inverse Peter Principle... the people who are best at their jobs will stay in that job while people who care enough about promotions to sabotage their work will get promoted out of a position to do damage.
phito 16 hours ago||
I keep reading this online but never encounter it in real life. People I work with and for like simple solutions that don't add complexity. It saves them time and money. I really wonder how is it that some people seem to encounter this toxic mentality so much that they assume it is universal. Is it a FAANG/US culture thing where everyone acts based on corrupted incentives?
mrkeen 15 hours ago||
It's the definition of simple that's the problem. For any definition of simplicity you might have, someone has an equal and opposite definition.

Take these two alternatives:

  class UserService {
    PostgresDatabase db;
  }

  class UserService {
    IDatabase db;
  }
There are some coworkers who will veto the first example for being too complex, because it brings Postgres (and its state and connections and exceptions and mappings) into the scope of what otherwise could have been a service concerning Users.

There are some coworkers who will veto the second example for being too complex, because Postgres is all you use for now, and if you really need to use a second database, you can change the code then (YAGNI). Also the Interface gives you a pointless indirection that breaks IntelliSense so you can't just 'click-through' to follow the code flow.

tumetab1 12 hours ago||
I agree with your comment, but I disagree a both the example opinions... complex is the discussion :D

I heard something that helps better framing those discussions, use "familiar" instead of "simple".

An highly abstract way to access a database table, with ORM for example, can be simple because everyone is expecting it and knows how to do all tasks (changing schema, troubleshooting, managing transactions, etc.).

Doing userService.pgSql("select ....") in the same way can be simple.

__turbobrew__ 14 hours ago||
I recently had a performance review at a FAANG. One engineer on my team has spent the past 3 years working on a complex infrastructure migration which involved about 20 engineers. The migration was completed last year and saved the company some opex costs.

I on the other hand spent 3 weeks optimizing our core service and reduced 2x the opex costs of the large complex 3 year migration.

In my yearly review my manager acknowledged my impact, but said I need to solve more complex problems to get to Staff Engineer. I protested saying that my 3 weeks of work had a larger impact than 20 engineers over 3 years, but he told me that is just how it works.

bluGill 17 hours ago||
Engineer B who can get that over complex solution working is the person you will turn to when complexity is required for the problem. They have experience in getting it to work, and such they really are worth more.

The real question is how do you tell engineer A who can figure out how to make the complex problems simple from engineer C who can't handle complexity and so writes simple solutions when the complex one is needed.

zozbot234 17 hours ago|
Not really, because even when complexity is required, the last thing you want is even more, unneeded complexity. There is no guarantee that the kind of complexity B brought to a problem is the exact same kind you're going to need somewhere else. It turns out that complexity is, shall we say, more complex than that.
nopurpose 14 hours ago||
Adjacent to it are PR reviews. Suggesting simpler approach in PR almost always causes friction: work is done and tested, why redo? It also doesn't make a good promotion material: keeping landscape clear of overengineered solutions is not something management recognises as a positive contribution.
Cthulhu_ 14 hours ago|
Depends on the management and whether they're involved in coding. Any engineering manager, architect, senior / lead developer etc should appreciate lower complexity.

Of course, if it's the person in charge introducing said overengineering there is a problem.

nopurpose 14 hours ago||
they can recognise on the informal level, but you can't put it into end of the year review document. What it will be? "Kept N PRs from introducing cruft into our systems?". Fixing or building things is much more visible, than just maintaining high standards.

Worse, to suggest a simpler approach checking existing products/APIs or even preparing toy prototype is required to be confident in own advice. This hidden work is left entirely unnoticed even by well meaning managers/engineers: they simply don't know if you knew or had to discover simpler solution.

gip 16 hours ago||
Assuming: simplicity === no unnecessary complexity.

In my (limited) experience as an engineer and manager, leadership (e.g., a VP) didn’t like (or reward) simplicity. Simple solutions often meant smaller teams, which wasn’t something they were pushing for, especially pre-2024. I do think this is slowly evolving, and that the best leaders now focus on removing unnecessary complexity and improving velocity.

psychoslave 16 hours ago||
Any system that make rewarding path based on individual contributions as this defect. As opposed to one insuring that the overall result benefits is evenly distributed among all the engaged parties.

The obvious outcome will be that the most skilled pretenders optimizing for their selfish profit narrow view, no matter what the consequences will be for the collectivity on large scale and at long terms.

ekjhgkejhgk 18 hours ago|
Bigger picture, when the thing you try to measure is subtle and difficult, you measure something obvious. That's what happening here.
More comments...