Yesterday, I gave a presentation to an aspiring team of software developers on processes and practices that they must adopt as their team grows and matures.
The presentation tried to use Robert M. Pirsig's exploration of quality in the classic book "Zen and the Art of Motorcycle Maintenance" as a tool to explore -- what is good quality software and things you should do as teams and individuals when trying to produce good quality software.
2. “What's new?” is an interesting and broadening eternal question, but
one which, if pursued exclusively, results only in an endless parade of
trivia and fashion, the silt of tomorrow.
I would like, instead, to be concerned with the question “What is best?”
a question which cuts deeply rather than broadly, a question whose
answers tend to move the silt downstream.
Robert M. Pirsig
Zen and the Art of Motorcycle Maintenance
3. And what is good, Phaedrus,
And what is not good --
Need we ask anyone to tell us these things?
Robert M. Pirsig
Zen and the Art of Motorcycle Maintenance
20. And the Lord spake, saying, "First shalt thou take out
the Holy Pin. Then, shalt thou count to three, no more,
no less. Three shall be the number thou shalt count,
and the number of the counting shalt be three. Four
shalt thou not count, nor either count thou two,
excepting that thou then proceed to three. Five is right
out. Once the number three, being the third number, be
reached, then lobbest thou thy Holy Hand Grenade of
Antioch towards thou foe, who being naughty in my
sight, shall snuff it."
Monty Python and the Holy Grail
21. Every good bug report needs exactly three things.
- Steps to reproduce,
- What you expected to see, and
- What you saw instead.
Joel Spolskey
22. Perfection is achieved, not when there is nothing left to
add, but when there is nothing left to take away….
Antoine de St. Exupery,
Wind, Sand, and Stars
24. Progress, far from consisting in change, depends on
retentiveness. When change is absolute there remains no
being to improve and no direction is set for possible
improvement: and when experience is not retained, as among
savages, infancy is perpetual. Those who cannot remember
the past are condemned to repeat it.
George Santayana
Life of Reason
44. References
Books
The Pragmatic Programer
Head First Software Development
Facts and Fallacies of Software Engineering
Software Conflict 2.0: The Art and Science of Software Engineering
Peopleware: Productive Projects and Teams
The Mythical Man-Month: Essays on Software Engineering
Code Complete
The Design of Design: Essays from a Computer Scientist
Clean Code: A Handbook of Agile Software Craftsmanship
Test Driven Development: By Example
45. References
Articles
All Programming is Maintenance Programming
The Noble Art of Maintenance Programming
12 Steps to Better Code
Don't Live with Broken Windows
Technical Debt
Technical Debt
Paying Down Your Technical Debt
Featuritis vs. the Happy User Peak
The First Rule of Programming: It's Always Your Fault
Painless Bug Tracking
46. References
Articles
The F5 Key Is Not a Build Process
The Road To Build Enlightenment
Daily Builds Are Your Friend
The Build Server: Your Project's Heart Monitor
The “Works on My Machine” Syndrome
I Pity The Fool Who Doesn't Write Unit Tests
Twelve Benefits of Writing Unit Tests First
Code Tells You How, Comments Tell You Why
Discipline Makes Strong Developers
The Law of Leaky Abstractions
Programming by Coincidence
Coding: It's Just Writing
Mercurial Tutorial