Hacker News new | ask | show | jobs
by gglitch 2380 days ago
I think that all else being equal, simplicity is to be preferred over complexity. You're pointing out that all else is never equal; ok, cool; but it's hard to imagine anyone finding value in deliberately complicating things. Simplicity seems to be an inherently valuable trait in system design/maintenance. Can you oversimplify? Sure. Does that justify not striving to reduce to the simplest functionally complete, scalable, and maintainable design? In my opinion, no.
4 comments

My points are:

1. Even software with no "accidental" complexity is necessarily complex (in fact, that's why it's useful).

2. If the manifesto's point is that we should stop over-complicating things, then wouldn't it better to first examine whether, and if so why, things are overcomplicated now, given that the previous generation also went on a crusade to abolish (over)complication? If the point is to declare "don't overcomplicate!" then, if you believe things are overcomplicated now, why is that declaration useful if it's clearly not effective?

Yep, now that we have lots of version controls histories publically available there is no excuse for this.
I'll try to make a parallel that in my opinion explains the thought behind the OPs argument.

In the early days people usually lived close to water bodies (rivers, lakes, etc.) because the closer you lived to the water the better your society thrived (water being essential for live, agriculture, transportation, etc). But there is a limit where if you go too far (i.e. into the water) the benefits evaporate possibly reversing the benefits (building houses into the water adds complexity, flooding, etc).

So there is probably a (global?) optimum that is neither too complex nor too simplistic

The parents point is that there is a baseline of complexity which can’t be factored out due to the social and economic conditions under which software is designed and constructed.
> but it's hard to imagine anyone finding value in deliberately complicating things

Except for that special guru who writes The Framework for the company, because why not a Forth-based DSL for everyone to work in? Overblown, I know, but there are kitchen sink types, or those who just don't know that there's an easier way, and other reasons to wind up with too many tools or layers or libraries.

(I've been guilty of not knowing easier ways, so...)

even if this is true (and it definitely can be) this would fall into the accidental category of complexity and be a magnitude less impactful than the essential fact that "building software is hard because it is".