Live data from Hacker News

Nobody gets promoted for simplicity

terriblesoftware.org

331–340 of 534 posts

Re: Nobody gets promoted for simplicity

#331
post #323
post #53

Earlier quoted context omitted.

You can't measure the impact of not creating a steaming pile of complexity.

You can. GitHub is about to hit zero nines of uptime[0]. But feedback like that is far too late to be useful. Maybe (principal or senior) engineers should be the ones to judge, and be trusted by management that their foresight is worth pushing the deadline? [0]: https://mrshu.github.io/github-statuses/

You can't. You can hypothesize about the counterfactual in which you shipped a "steaming pile of complexity," but you definitionally cannot measure something that does not exist.

Re: Nobody gets promoted for simplicity

#332

There are two ways of constructing software: one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. — C. A. R. Hoare

That's cute, but pure fantasy, imo. There's no non-trivial code that's actually used and maintained that's going to be immune to obvious deficiencies that get overlooked. Look at this [0], for example. Simple as can be, obvious defect in a critical area, left out in open source for ages, a type of bug an LLM would be liable to generate in a heartbeat and a reviewer could easily miss. We are human after all. [1]

[0] https://www.theguardian.com/technology/2014/feb/25/apples-ss...

[1] https://pmc.ncbi.nlm.nih.gov/articles/PMC9436839/

Re: Nobody gets promoted for simplicity

#333
post #91

Earlier quoted context omitted.

So my cofounder was talking to Stripe about an acquihire (this was after I’d left.) As part of it, he had to do a systems design interview. He got the prompt, asked questions about throughput requirements (etc.), and said, “okay, I’d put it all in Postgres.” He was correct! Postgres could more than handle the load. He gets a call from Patrick Collison saying that he failed the interview and asking what happened. He e…

> He got the prompt, asked questions about throughput requirements (etc.), and said, “okay, I’d put it all in Postgres.” He was correct! Postgres could more than handle the load. I had this happen in a Google interview. I did back of the envelope math on data size and request volume and everything (4 million daily events, spread across a similar number of buckets) and very little was required beyond that to meet perf…

To be fair, the simple answer is not so simple within Google.

The issue is that Google achieves reliability by insisting on n+2/n+1. Globally your service is in at least 2 more data centers than is required for full load. In each region in at least 1 more data center than is required for full load.

If you're using the Google toolchain, all of the scalability and fallover problems are automatically handled by the layers that you're relying on. Which everyone expects you to use, because they are already integrated into the environment.

But if you go to use Postgres as a data storage layer, then you also need to take care of replication, failover, backup, and make sure that this is integrated with the automated systems that Google already has to detect when this is needed. Even after you've done that, people from outside of your team will need to be convinced that you've done that. Simply because you're doing things differently, you'll get extra scrutiny.

As a result, even if Postgres would have worked perfectly well, it is usually not the optimal answer for someone who is working within Google's environment. Don't think of it in terms of, "Does this do the job?" Think about it in terms of, "Can those in the broader organization easily certify that this does the job?" That certification is easier when you use standardized parts that are themselves already certified within the organization.

My guess is that your interviewer was aware of this. And was left with, "What about that question that I didn't think to ask you about?"

Re: Nobody gets promoted for simplicity

#334
post #73

I had an interview question. What would you do if two different people were emailing a spreadsheet back and forth to track something? I said I’d move them to google sheets. There was about five minutes of awkwardness after that as I was interviewing for software developer. I was supposed to talk about what kind of tool I’d build. I found it kind of eye opening but I’m still not sure what the right lesson to learn was…

Having been both the interviewer and the candidate in this kind of situation, this is really a big interviewer training failure. The general way to handle this as an interviewer is really simple: acknowledge that the interviewee gave a good answer, but ask that for the purposes of evaluating their technical design skills that you'd like for them to design a new system/code a new implementation to solve this problem.…

If I would be the interviewer in this kind of situation, I would just follow up with something like this: "that might be a good option, but let's assume you need to build a tool to replace those excel sheets, ..."

Re: Nobody gets promoted for simplicity

#335

I forget who said it, but it seems that AI is basically an amplifier of the talents (or lack of them) of whoever is wielding the tool. In the hands of an experienced developer/designer, AI will help them achieve a good result faster. In the hands of someone inexperienced, out of their depth, AI will just help them create a mess faster, and without the skill to assess what's been generated they may not even know it.

I am the type of engineer who prefers simplicity and I have not found a way to make AI increase the simplicity of code I'm working on. If left to its own devices, Claude absolutely loves adding more member variables, wrapper functions, type conversions, rather than, say, analyzing and eliminating redundancies. So my experience is that AI is more closely aligned with the engineer type for whom the solution is always "…

The only solution that I've found to work, somewhat, is to plan with it to design the APIs exactly how you want it, atleast the public facing ones. It still does all kinds of mess in the functions but those are easier to cleanup on the next iteration cycle. If you let it design everything, it'll definitely go overboard.

Re: Nobody gets promoted for simplicity

#336
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.

Re: Nobody gets promoted for simplicity

#337
post #325
post #223

Earlier quoted context omitted.

It's both. As a hiring manager I've had situations like this arise because there was a gap in my plan and I didn't realize it. When those come up, we thank them for their cleverness, apologize to the candidate, reframe the situation, and give them another shot. But also sometimes I leave intentional ambiguity in the plan. Part of the goal is to see if they have a degree of common sense commensurate to their level. If…

> and give them another shot Isn't this rather giving yourself another shot.

Of course, but the point is you don't fail a candidate for this. Some people do, including some of the examples to which I was replying

Re: Nobody gets promoted for simplicity

#338

Relatedly, I'm periodically thinking about the issue of people who prevent problems not being rewarded as much as those who become "heroes" for resolving avoidable situations I guess it may be important to underscore the value that simplicity provides over needless complexity or to sell people on the value of problems prevented rather than preventable catastrophes that were dealt with Maybe we could encourage a cultu…

The difference between the fire fighter and the fire safety inspector. The former puts out fires and saves lives and is of course a hero. The latter complains about things that never happen, wastes everybody's time and money and is generally annoying.

It seems like the safety inspector might be closer to a SOX compliance auditor or something... in this metaphor, the engineer who doesn't build something that "catches fire" is just the one who uses sensible materials, includes smoke alarms in the design, and chooses to use passive insulation in the walls instead of electric space heaters on a high-pile rug.

Re: Nobody gets promoted for simplicity

#339

AI coding tools are making this problem worse in a subtle way. When an agent can generate a "scalable event-driven architecture" in 5 minutes, the build cost of complexity drops to near zero. But the maintenance cost doesn't. So now you get Engineer B's output even faster, with even more impressive-sounding abstractions, and the promotion packet writes itself in minutes too. Meanwhile the actual cost - debugging, onb…

> When an agent can generate a "scalable event-driven architecture" in 5 minutes

Currently they can't. Anyone with a basic understand of sw engineering will find numerous issues with the result of such a prompt within minutes.

Re: Nobody gets promoted for simplicity

#340

I forget who said it, but it seems that AI is basically an amplifier of the talents (or lack of them) of whoever is wielding the tool. In the hands of an experienced developer/designer, AI will help them achieve a good result faster. In the hands of someone inexperienced, out of their depth, AI will just help them create a mess faster, and without the skill to assess what's been generated they may not even know it.

I am the type of engineer who prefers simplicity and I have not found a way to make AI increase the simplicity of code I'm working on. If left to its own devices, Claude absolutely loves adding more member variables, wrapper functions, type conversions, rather than, say, analyzing and eliminating redundancies. So my experience is that AI is more closely aligned with the engineer type for whom the solution is always "…

I'm extremely cautious about complexity, yet have adopted a claude-based dev flow. It comes down to watching and guiding it, and not letting it run autonomously. At a certain point your codebase will tip over into the patterns you've defined and claude will recognize and follow them. Just treat Claude as a vim editor mode and you will see a big difference, and your relationship to the tool will change.
Post reply on HN