Live data from Hacker News

Simple Software Manifesto

arewesimpleyet.org

11–20 of 90 posts

Re: Simple Software Manifesto

#11

> There is only one correct way to do something .... so take great care in doing it right the first time. I hear this a lot, in various contexts, and I even used say it a lot. But this has actually stopped making sense for me. I don’t think I’ve ever genuinely seen a case where there is only one obvious way to do something, or that there’s a way that is obviously the “right” way. Everything non-trivial is chock full…

Completely agree. I'd change this whole line to something like: "There is never only one way to do something. You can't know which is correct, so go for the simplest option that is easy to change later"

Unless you happen to know which is correct, such as when working with a full specification.

Complete trumps simple.

(Grumble grumble when parts of protocols are ignored for not even simplicity.)

Re: Simple Software Manifesto

#13
post #9

Every new generation of programmers starts a crusade to simplify without first trying to understand why we're not "simple" despite the previous generation having done the same. Of course, one possible explanation could be that without a constant crusade for simplicity we'd be in a far worse place; the "permanent revolution" explanation. But is this the right explanation? Turing Award winning computer scientist Fred B…

The question is: is this thing inherently complex or is it more complicated than it needs to be?

In software there are many things that are more complex than they need to be.

Re: Simple Software Manifesto

#14
post #9

Every new generation of programmers starts a crusade to simplify without first trying to understand why we're not "simple" despite the previous generation having done the same. Of course, one possible explanation could be that without a constant crusade for simplicity we'd be in a far worse place; the "permanent revolution" explanation. But is this the right explanation? Turing Award winning computer scientist Fred B…

Still, I think that the kind of people who become programmers like complexity, and without a specific concern for simplicity will create over-complex systems.

Re: Simple Software Manifesto

#15
post #9

Every new generation of programmers starts a crusade to simplify without first trying to understand why we're not "simple" despite the previous generation having done the same. Of course, one possible explanation could be that without a constant crusade for simplicity we'd be in a far worse place; the "permanent revolution" explanation. But is this the right explanation? Turing Award winning computer scientist Fred B…

The universe is built out of simple things but there is complexity behind how those simple things are constructed and can interact.

Abstractions are a way to create contexts where contexts might not apparently exists and the main objective of these contexts is to provide simple models at every contextual layer to understand the infinitely complex environment where everything exists.

Re: Simple Software Manifesto

#16
Just from some discussions from the last weeks, I don't think simple is possible anymore: just Unicode and Font Rendering by themselves have a complexity which boggles the mind. If you then consider stuff like authentication/authorization, i18n and support for blind people its clear that "simple" just doesn't cut it.

Re: Simple Software Manifesto

#17

Just from some discussions from the last weeks, I don't think simple is possible anymore: just Unicode and Font Rendering by themselves have a complexity which boggles the mind. If you then consider stuff like authentication/authorization, i18n and support for blind people its clear that "simple" just doesn't cut it.

humans have a limited ability to think up complex stuff. our working memory can hold 7 parts at a time. so our systems must be hierarchically designed to be simple enough to be workable by humans. certain aspects of the "modern way of development" range from needlessly complex to batshit crazy, e.g. web development.

Re: Simple Software Manifesto

#18

Just from some discussions from the last weeks, I don't think simple is possible anymore: just Unicode and Font Rendering by themselves have a complexity which boggles the mind. If you then consider stuff like authentication/authorization, i18n and support for blind people its clear that "simple" just doesn't cut it.

A common excuse is that they target "expert users" and not everyone. While I can imagine a specific set of "expert users" that this excuse will work, not every "expert user" will agree to that.

Re: Simple Software Manifesto

#19
I have come to believe that we are dealing not with a domain specific problem but with the human condition itself. I call this my gradient theory.

Consider human learning as an optimization in the mathematical sense. Note that humans are good at learning things along a gradient. Now note that this is not just about how the learning works but also how far we go. For example, if a human thinks it is too cold, they turn the knob not where they want the temperature to be but much farther up, and then when the desired temperature is reached, they turn it back. Or consider how you find a page in a book. You overshoot and then go back. Or how you choose the speed when driving. You go as fast as you feel comfortable, and you find that by overshooting and correcting.

I think this is inherent in humans. Evolution made us this way.

The downside is that humans are bad in environments where there is no clear limit or where you can't correct after overshooting, for example driving too fast and then having an accident, or substance abuse.

Now take this thought and apply it to programming.

If you find me a way to work with complexity, for example modularization, abstracting it away, etc., it will not lead to us writing a good version of the software we had before. It will lead us to writing larger software that will then again be at the limit of what we can do with the technology available.

So far it is just a theory, but I can see in my software selection that all the programs that I consider good and simple in the sense that this manifesto describes, all of those are old programs that were written when the functionality they offer was the limit of what was achievable with technology back then. The reason they did not metastasize into something unwieldly is that a) they did but it was still comparatively small or b) they already contain all the features anyone could think of.

Try comparing two programs of your choice that do essentially the same. You will find that if there is an old and a new one, the newer one will be bigger and slower and usually work in less environments and have less features.

It also turns out that no two people have the same idea of what "simple" means. For me, with software, simple means it does all I really need it to do, and nothing else. Other people usually need it to do other things and they don't need some of the stuff I need.

Re: Simple Software Manifesto

#20
post #9

Every new generation of programmers starts a crusade to simplify without first trying to understand why we're not "simple" despite the previous generation having done the same. Of course, one possible explanation could be that without a constant crusade for simplicity we'd be in a far worse place; the "permanent revolution" explanation. But is this the right explanation? Turing Award winning computer scientist Fred B…

> Every new generation of programmers starts a crusade to simplify without first trying to understand why we're not "simple" despite the previous generation having done the same.

This 100%.

I'd also add that, often times, attempts at simplifying end up having the opposite effect and actually increase complexity because, as you say, the reasons for the current complexity haven't been explored/understood.

Post reply on HN