Hacker News new | ask | show | jobs
by probablyfiction 3882 days ago
The basic idea, that software is a set of decisions, is insightful. I'm definitely going to borrow this concept when talking about software design to non-technical people.

However, a less insightful decision is to have yellow text on a purple background. I can't force myself to read the whole thing.

7 comments

As pointed out in the article's comments, this[1] is a more readable version.

[1]: http://siderea.livejournal.com/1241996.html?format=light

I just inspected the page with Chrome and changed the font and background colors, worked like a charm.
I did read the whole thing - it was a really well written and enjoyable article. I did have to slog through though, because of the yellow on purple.

My favourite bits:

Waterfall as a expression of power and hierarchy within an organisation, something like: "I tell you, lowly worker, what to do" (my words).

This characterisation of a good client: "These are people who will be a pleasure to work with: they are forward thinking, attentive to detail, serious about this project, and have some idea of what it is they want their program to do."

The idea of a cultural conflict between people who value good design and want to spend time on it, and other who hold it in in contempt. Not something I'd thought about before, beyond some idea that the market doesn't demand quality, and so worth a chew over.

Actually the "waterfall" effigy defined in various manifestos was the revolt against civil engineering project managers who entered the software engineering field and believed that "building software" was like building a bridge, a skyscraper, or a sewer system.

The correct solution space wasn't to abandon dependencies and long range planning, but to recognize that software engineering is a specific type of process engineering that involves partially or completely automated processes.

Software doesn't describe the state of a machine in so much as it describes a process. Often developers don't recognize this so much because many of the terms have been concretized into the operating system (ie, process) and get thought of as a container for software instead of the representation of an automated process working in concert on shared resources.

And consequently software is complete when the process is well-defined and repeatable, not when things are bolted together.

It was a great article indeed, which made me deeply wonder and I will recommend it despite of the colouring.

I'm grateful to the author for discussing all these sad things in a very well reasoned way.

On the "yellow on purple" topic:

The Safari browser has a so called "Reader View". That formats (most) pages main content into a simple, very readable style.

There is also https://readability.com which is a full-blown web service tackling this problem.

And as I understood there is an open-source library integrated into Google Chrome which deals with decluttering webpages (https://github.com/chromium/dom-distiller)

I'd rather want a user agent biased towards me controlling how articles look, attributing the source, but a lot of bad decisions prevented that from being the natural way to use the web.

Back on topic: People often talk about flow charts when transitioning to software, so the notion is not new. It may be rediscovered for some, but that's why we post or talk about things, right? To test our thoughts? Soon somebody will tell me; hey, have you tried user agent XYZ, it does exactly what you describe.

My personal view is that software is mathematics without proofs.
Interestingly, the functional programming crowd sees it the opposite way (according to Curry-Howard isomorphism): every program represents some logical calculus and programs are proofs to some prepositions about our programs that we keep in mind writing the program (and it's possible to get a glimpse of the prepositions using types).
Agree on both fronts. I'll to adopt that narrative for explaining software.

There's a number of "contrast bookmarklets" that you can use to fix the problem part.

[1] http://megpickard.com/2011/06/nifty-bookmarklet-to-make-web-...