Top
Best
New

Posted by SerCe 6 hours ago

208 points | commentspage 2
phyzix5761 2 hours ago|
I realized a long time ago that you don't get promoted or recognized for the things you don't do. And many times not doing something is the best option of all.
Jean-Papoulos 2 hours ago||
I disagree with this, being able to take something and surprise your management with how few dependencies it has and how fast you set it up makes them want to work with you more, not less. The engineer making a new abstraction layer has management groaning at the idea of having to onboard everyone to it.
litchinn 4 hours ago||
I think there are several reasons for this.

Firstly, simple design places higher demands on developers than complex design. You need sufficient experience and a deep understanding of the business to create a design that is just right. Otherwise, after several iterations, your code is likely to become bloated—for example, a single file exceeding 2,000 lines or a function stretching over 500 lines.

Secondly, I strongly agree with a statement I once read (though I can’t recall the exact source): "Good code isn’t written perfectly from the start—it’s shaped through continuous refactoring. You need to refactor it at the right time." However, most companies simply don’t allocate time for such refactoring, as new requirements keep pouring in.

Under these constraints, it becomes clear that most companies tend to favor complex design as an engineering trade-off. We have a range of tools for complex design, such as SOLID principles, design patterns, and DDD. But there’s little guidance on simplifying design. I rarely see blogs discussing how developers should judge whether a design is over-engineered or what constitutes a just-right design. In such cases, having some design is better than having none at all—after all, many companies truly operate without any design, relying solely on copying existing solutions.

tabs_or_spaces 4 hours ago||
I think the advice is good but maybe the title could be improved.

> But for Engineer A’s work, there’s almost nothing to say. “Implemented feature X.” Three words.

To me, this is the main problem. Engineer A is unable to describe the impact of their work, how the work affected the business. Your manager isn't responsible for promoting your own work, you are.

> Engineer B’s work practically writes itself into a promotion packet: “Designed and implemented a scalable event-driven architecture, introduced a reusable abstraction layer adopted by multiple teams, and built a configuration framework enabling future extensibility.” That practically screams Staff+.

Maybe it's just the narrow of the article, but if promotion only looks at complexity and not quality of delivery and impact on the business then this isn't a good engineering team to be in.

There are many cases where simplicity is celebrated and recognized. It's up to the engineer to know what the impact of their work is, if they can't do that then that's on them.

deathanatos 3 hours ago|
> It's up to the engineer to know what the impact of their work is, if they can't do that then that's on them.

… the impact of my work is more often than not opaque to me, the person doing the work. More often than not I'm not the one setting the priorities, and way more often than not the real world impacts like "we brought in $X M with that feature you wrote" is quite simply not visible to me because "that's not what engineers do".

I would love to know these things, I'd love to have that level of visibility, but finance at tech companies is nearly always a black box. Best I get as an engineer is that I know how much cloud compute costs, so I can figure out the expense side of stuff.

If anything, I usually have to go for far more intangibles: "this internal manager was happy", "this adjacent team had all their wishes and desires fulfilled", etc.

Otherwise, stuff feels like it plays out like the bits you quoted from TFA.

Duanemclemore 4 hours ago||
Great article. Where my mind goes as a counterpoint that proves the point is the famous Bill Atkinson lore about -2000 lines of code[0].

As a practicing architect (of buildings) I had a special fondness of working on minimalist projects. Buildings are a complex problem space. You typically can't design out unnecessary complexity entirely. So you have to work backward from goals (the finished condition) to infrastructure (the building structure) to figure out how to make the end product look like almost nothing (Mies's "beinahe nichts").

That's all to say that "complexity impresses" as the article says, but the discerning understand that simplicity can be even more impressive.

It also puts me in the frame of mind of another famous one - Fred Brooks's "No Silver Bullet" [1] and the idea of essential vs. accidental complexity. Or as I like to think of it in a slightly more nuanced way - not necessarily "accidental" but at least "incidental."

[0] https://www.folklore.org/Negative_2000_Lines_Of_Code.html

[1] https://worrydream.com/refs/Brooks_1986_-_No_Silver_Bullet.p...

ChadMoran 4 hours ago||
I launched a technical feature on Amazon's retail platform that is responsible for 9 figures worth of revenue. When I launched it, it had no infrastructure. It was a collection of small changes across every core platform (Detail Page, Cart, Checkout, etc).

At first people were like "Well, you didn't do much" but when they saw the value things changed drastically. It's a bit of marketing you have to do to help bring people along.

Often perceived impact is correlated with complexity, sadly.

pinkmuffinere 4 hours ago||
Coincidentally similar story, but with a different end -- I eliminated a test station from the final assembly line for Astro (Amazon's home robot), because there were no unique failure modes that the test station could catch (we collected ideas, and then went through and analyzed every failure mode suggested, they would all be detected by other stations). I think we estimated that was ~$1 million savings, in addition to simplifying the workflow and reducing time spent to do final testing. I brought this up with my manager when pushing for a promo, but he told me "somebody else made that value, you just stopped it from being thrown away", lol. Maybe I should have pushed harder, but I definitely felt underappreciated, and am still not sure if I could have gotten better recognition for it.

Don't feel sorry for me though, they still paid me well enough, and I'm happily doing my own stuff now :)

jtbaker 4 hours ago||
How do you ascribe a revenue number like that based on one collection of changes in a huge system? Presumably there were a bunch of other features being released around the same time as it. Was there a lot of A/B testing around it?
tonyedgecombe 3 hours ago||
Doesn’t matter, @ChadMoran is already on the fast track whilst you are on a pip.
scuff3d 4 hours ago||
"Identified and implemented a streamlined solution that delivered the required functionality in approximately 50 lines of code, prioritizing clarity, maintainability, and operational efficiency. Proactively evaluated alternative approaches and intentionally avoided unnecessary architectural complexity, reducing long-term maintenance overhead and accelerating delivery timelines. Demonstrated strong engineering judgment by aligning implementation scope with business needs while preserving flexibility for future iteration."

This isn't an engineering problem, it's a sales problem.

Also, you don't even have to be good at this stuff anymore. Any management nitwit would eat that up on a performance eval, and I had GPT write it for me.

Prompt: "Write up the most corporate self eval possible for someone who identified a simple solution in only 50 lines of code, instead of creating an over architecture mess. Keep it to just three sentences"

manojbajaj95 2 hours ago||
Early in my carrier, i saw code written by people both junior and senior. Every single time i saw a great code, it made me feel like its so simple. heck, i could have written it. It was completely opposite for junior-mid folks.
p0w3n3d 2 hours ago||

  If you have 10 teams working on the same product, you probably need service boundaries.
Recently I started thinking that monolith or at least monorepo is better for AI development, because the context and the contract are in one place...
nosefurhairdo 2 hours ago|
I give my agents read permissions to all repos related to a given repo. Add a bit of context to AGENTS.md or equivalent and they do just fine with understanding service boundaries.

Another concept I like is that we should optimize for next year's AI. Don't migrate to a monorepo if your only motivation is the performance of today's agents, because a year from now this may be a non-issue. Of course other motivations may still be valid.

shevy-java 5 hours ago|
Simplicity is great but it is orthogonal to features. One could add many simple features and combine them e. g. the UNIX pipe philosophy, but it still adds a cognitive load. I failed to memorise awk, so I worked around it by simply using ruby as surrogate. And I still add "actionable-code" to do specific tasks, all in an attempt to avoid having to burden my weak brain with hard-to-memorize tokens and sigils. I kind of think in terms of the computer as a DSL wrapper, but with a more flexible syntax than the traditional bash/shell script syntax (or awk or perl or sed; I do actually use sed since it is so convenient but I am not the biggest fan of it either).
More comments...