Live data from Hacker News

Zen and the Art of Software Maintenance

sicpers.info

31–40 of 50 posts

Re: Zen and the Art of Software Maintenance

#31

At the end of day, the customer does not care if, for example, you implemented their project as giant if-then conditional; as long as it works. It is the craftsman in us that makes us write quality code; it is something we ultimately do for ourselves.

I hate this sentiment so, so much.

Let's take it out of the realm of software for a moment. Let's use the motorcycle metaphor, since this is a ZATAOMM thread.

At the end of the day, the customer does not care if, for example, you fixed their bike sloppyily, quickly, or haphazardly; as long as it works. It is the craftsman in us that makes us care about the nature of our work. It is something we ultimately do for ourselves.

Bullshit!

It is true that no customer is going to care how we organize our tools in the mechanics garage. We should not be having long arguments about whether 2 storage cabinets or one make more sense for holding our screwdrivers. If at the end of the day, the radiator is replaced in the same way, and the coolant is cycling correctly, then both the slow and steady and the quick and haphazard mechanics did a good job, however they accomplished this fact.

But the ENTIRE POINT of the book, is that these two mechanics WILL NOT accomplish the same job. Sure, they may both deliver the same result in 7 out of every 10 jobs they are given, but those last 3 matter! And are almost certainly going to be the hardest of the 10.

More direct to your point, however, customers ABSOLUTELY DO care whether we replace the radiator with a cheap chinese knockoff that's likely to break in 1k miles, or the 5x more expensive overseas german version. And they ABSOLUTELY do care if the haphazard mechanic or the slow thoughtful tedious one does the job.

They just don't all care equally. Some customers want the cheap chinese knockoff (the giant if-then conditional). If it doesn't work, they'll just throw away the bike and buy a new one. Other customers want the german and thoughtful mechanic, and will pay accordingly.

Its about knowing who your client is and why.

Re: Zen and the Art of Software Maintenance

#32
post #9

After I read Zen and the Art of Motorcycle Maintenance, I went and bought myself a ‘71 Honda CB350, almost the exact bike Pirsig rode in his book. I found that fixing this motorcycle, taking it apart, fixing internal component, figuring out how everything ties together, and upgrading worn out or otherwise non-functional components, and putting it all back together, felt extraordinarily similar to my day job as a soft…

I've seen "Zen and the Art of Motorcycle Maintenance" recommended on book threads on HN multiple times, by multiple people, so I would agree that yes, a lot of other engineers see the similarities! The way the author explains how to go about to find the issue, fix it, etc. has made me much calmer about finding my own bugs and fixing them indeed.

There's a passage (page 123 in my edition) I really like about combining your mental model of something with the stimuli you get from your senses that I think has a lot to do with systems analysis and modelling.

You have to build up your mental model (and often your client's too) and, at the same time, evolve your interface to reflect this model and permit your client to do what he wants to do effectively.

Re: Zen and the Art of Software Maintenance

#33

After I read Zen and the Art of Motorcycle Maintenance, I went and bought myself a ‘71 Honda CB350, almost the exact bike Pirsig rode in his book. I found that fixing this motorcycle, taking it apart, fixing internal component, figuring out how everything ties together, and upgrading worn out or otherwise non-functional components, and putting it all back together, felt extraordinarily similar to my day job as a soft…

I recommend you investigate plumbing. Yeah, seriously.... I have not done anything very complicated, but it takes much of the same mindset (or skillset), it is satisfying, and you will have a job for life (aka I have just hit 50 and sort-of age discrimination (or just can't deal with the nonsense anymore-ness - or everything is so familiar it is so tedious))

Re: Zen and the Art of Software Maintenance

#34

Everyone in our circle of nerds recommends this book and all three times I tried to read it I found it absolutely unbearable. It collects dust in a donation box that I haven’t mustered the strength to carry down to goodwill. Does anyone else share this sentiment? Did you ever crack the reason why so many love it? Obviously taste is subjective and we are not all supposed to like everything but I’ve always felt like th…

Perhaps you are just more sensitive to style than others? The style of writing and the substance of the text are two different things. i.e. I've read widely enough that once I "pick up" the style of the writing, reading a book does not become a chore, but I do have my preferences.

David Foster Wallace is a perfect example - I can see the "quality" of the style of his writing and I can intellectually appreciate it, but all of his writing is a slog and definitely needs a bit of editing. I grew up with Alan Dean Foster, so that general style I respond to very well. Lush prose like Borges goes down well, but it is like velvet red cheesecake. And Sally Rooney is absolutely wonderful, but her style is ... hell, I don't have the words. And do not get me started on Susanna Clarke! New book coming out!

Re: Zen and the Art of Software Maintenance

#35

At the end of day, the customer does not care if, for example, you implemented their project as giant if-then conditional; as long as it works. It is the craftsman in us that makes us write quality code; it is something we ultimately do for ourselves.

As the customer (or rather, as the maintenance programmer at the end so one of the customers) of your software, I very much care. As a requirements provider for the actual users, I also care and they do as well.

Your giant if-then conditional "works", but is not sustainable or maintainable. It is fragile and poor quality. Quality matters.

I once got to speak with a materials engineer who had the task of trying to discover why a drone aircraft (ostensibly made the same way as always) was suddenly failing very frequently. This was, essentially, a one-off product. They had one customer, and built the drone from off-the-shelf components. The system was driven by a basic two-stroke engine, it accomplished what was needed. This worked for years, until it didn't. It turned out that the maker of the engine (which included the drive shaft) had changed their source (from the US to another country, but that change itself is unimportant). What was important was that while it was the same (weight, power, fuel consumption, etc.) engine, the manufacturing of the steel components was different. They had different qualities and the new one had a tendency to fracture due to the low quality steel (this took quite a bit of analysis to identify since the aircraft were, well, crashing and breaking apart).

This quality (the quality of the steel) was not in the customer specs. They didn't think about it, it "just worked". Until it did matter, the aircraft were failing at higher rates than anticipated (driving up costs and losing out on the utility of the aircraft). The drone manufacturer was also risking losing this contract, which was quite lucrative to them, since the MTBF for their product was now below their promised thresholds.

If you don't pay attention to these qualities, you'll end up like them. You'll have a "working" product that suddenly fails and drives you out of business, or otherwise diminishes you. Or, if you're the engineer or programmer, you'll give your customers a poor quality product that doesn't actually work for them, it only seems to. Until it doesn't, because you gave them a fragile piece of shit.

Don't be the problem.

Re: Zen and the Art of Software Maintenance

#36

Everyone in our circle of nerds recommends this book and all three times I tried to read it I found it absolutely unbearable. It collects dust in a donation box that I haven’t mustered the strength to carry down to goodwill. Does anyone else share this sentiment? Did you ever crack the reason why so many love it? Obviously taste is subjective and we are not all supposed to like everything but I’ve always felt like th…

Ditto. I found it awful.

Re: Zen and the Art of Software Maintenance

#37

At the end of day, the customer does not care if, for example, you implemented their project as giant if-then conditional; as long as it works. It is the craftsman in us that makes us write quality code; it is something we ultimately do for ourselves.

At then end of the day, a great many people, firms, and governments are finding that they care about the increasingly fragile set of design, engineering, and control kludges Boeing have had to strap on to the 737 airframe in order to 1) accommodate the initial low-clearance landing-gear design (intended to facilitate cargo handling), conflicting with 2) greater demands for efficiency through 3) ever larger ducted-fan engines 4) mounted ever further forward, and higher, on the wing resulting in 5) AoA control issues under high-throttle conditions answered by 6) a pilot control defeat countermeasure which has resulted in multiple crashes and the loss of over 300 souls.

The customer doesn't care about the implications of design decisions, until they do. Clean, simple, stable, predictable, maintainable, modifiable designs deliver quality performance over a longer period of time. Complex, kludgy, unstable, unpredictable, tightly-coupled, unmaintainable designs will eventually bite you in the ass, or scatter your body parts over the landscape.

The fact that the implications aren't clearly discernable in advance does not mean that they do not matter.

Re: Zen and the Art of Software Maintenance

#38
post #28
post #19

Earlier quoted context omitted.

I wholeheartedly agree. "Pretentious" is the word I would use for it. "Insincere" is another.

I also dislike the book. As someone who loves motorcycles and fixing an old Honda myself, it is something I want to love. To me, the protagonist is trying to show how smart he is after reading some intro to philosophy book.

It made a lot of sense to me as an undergrad philosophy student, reading it shortly after I graduated. IMHO the book is somewhat better if understood as a criticism of the Socratic pursuit of universal Truth if you are familiar with the context. But unfortunately this book is recommended to a general audience, for which I think it is a poor novel.

Pirsig did have at least some formal academic knowledge of philosophy though.

From Wikipedia [0]:

> Pirsig earned a bachelor's degree in 1950 from the University of Minnesota.[8] He then attended Banaras Hindu University in India, to study Eastern philosophy and culture. At the University of Chicago, he performed graduate-level work in philosophy in the Committee on the Analysis of Ideas and Study of Methods but he did not obtain a degree there. In 1958 he earned a master's degree in journalism from the University of Minnesota.

[0] https://en.wikipedia.org/wiki/Robert_M._Pirsig#Early_life

Re: Zen and the Art of Software Maintenance

#39

After I read Zen and the Art of Motorcycle Maintenance, I went and bought myself a ‘71 Honda CB350, almost the exact bike Pirsig rode in his book. I found that fixing this motorcycle, taking it apart, fixing internal component, figuring out how everything ties together, and upgrading worn out or otherwise non-functional components, and putting it all back together, felt extraordinarily similar to my day job as a soft…

And yet, even after seeing firsthand that computer programming is "extraordinarily similar" to the work of a vehicle mechanic, you still refer to it as "software engineering".

Do we think it has anything in common with engineering? Why not call your work something like "software mechanic" or "software artisan"? What is with the continued need for programmers to try to aspire to engineering, while not actually being licensed engineers or practicing engineering?

I don't think anyone outside the field takes programmers any more seriously when they call themselves "software engineers". Software overall is still late, slow, hard to use, buggy, and insecure. Nobody's fooling anyone.

Re: Zen and the Art of Software Maintenance

#40
post #20

Everyone in our circle of nerds recommends this book and all three times I tried to read it I found it absolutely unbearable. It collects dust in a donation box that I haven’t mustered the strength to carry down to goodwill. Does anyone else share this sentiment? Did you ever crack the reason why so many love it? Obviously taste is subjective and we are not all supposed to like everything but I’ve always felt like th…

I totally love and revere the book (ZATAOMM), and have read it multiple times. Then again, I am super-detail-oriented, so that makes sense to me, because IMHO that’s the kind of audience for whom Pirsig wrote the book. It _is_ a book about the nature of quality, after all, and Pirsig spent four years writing it, with the aid of PostIt notes all over the walls to organize it. Not all people are detail-oriented enough…

I agree with you, it’s a fantastic book, and not really about motorcycles at all.

(If memory serves, Pirsig used note cards or slips of paper to assemble this ambitious work. Post-It’s were first sold in 1977; the book was published in 1974.)

Those who have an open mind and want to try the book should find the 10th anniversary edition; the author’s afterword explains some things that some readers found elusive.

Pirsig’s obituary in the N.Y. Times is excellent:

https://www.google.com/amp/s/www.nytimes.com/2017/04/24/book...

Post reply on HN