Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I agree with the general sentiment. The article is vague on the specifics as to what counts as "added complexity" though, which I found to be the central issue.

Everyone loves a bit of abstraction that encapsulates a given complexity and make it a single simple concept. This is not: "a complex bit of technology that has pros and cons and will lock you in a particular architecture and vendor and would almost always necessitate 2 architectures because not all tasks/scenarios would be suitable for it". It is a "Lambda". So simple. Just a `handle(event) {}`, how much simpler can this be? No complex runtimes, VMs, environments, etc. It's just a `handle(event) {}` no complexity to see here. good luck.

On the other hand, sometimes people who "champion" simplicity are also the same people who don't care about the engineering part of it. The "Hey, I added a full text search. It's implemented as a:

    select * 
    from posts 
    where column1::text like $1
          or column2::text like $1
          ...
          or columnN::text like $1
Lets push it. Oh out database CPU is burning, search is so slow. What a surprise this is. I guess it validates the popularity of search. Can we optimize it? Maybe we cache the result? Maybe we add an LLM to normalize queries so we can cache results more effectively? I'm trying to keep things simple"

There is also the requirement or ask that is trying to hide a particular complexity from one side by shoving it all under a rug somewhere. Once the complexity has been sufficiently shoved under the rug, we can think of the rug as just a rug. We can move it around and use it like a rug. Surely the shit underneath will never have any impact on anyone any time.



I feel like all these articles have this issues.

The hard part is in knowing which is which and I don't think anyone real has a tried and true solution for it.

I think because its really about correctly predicting the future in a n continually evolving environment.

Those "simple" solutions can be piled on top of each other turn into an absolute monstrosity over time.

And then engineered solution can be overengineered and overly complex when it turns out the problems it solves never ended up happening.

On top of that people don't even think of simplicity in the same way. One person's simple is another's overly complex.

What seems to work for me is try give yourself outs/alternative paths.

Hedge your bets by overengineering slightly on where you think there is more risk. And keep it simple where there is less risk. Then reevaluate.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: