Two weeks ago we held the first Geekdom Friday. It’s a once a month, open event where we talk about a technology related subject from which everyone – not just geeks – can learn and chat about.
My talk was about what I’ve learned from the book “The Pragmatic Programmer”, by Andrew Hunt and David Thomas. Although it is targeted at programmers, it contains lots of useful tips on problem solving that everyone can use.
On “Take Responsibility” the book covered why everyone that touches a project (regardless of at what point, or for how long) should make sure that they see it through, and not sit idly waiting for things to go wrong. Because they often do, and when it happens, one should “provide options, not make lame excuses”.
On “Fighting Entropy”, is about how to avoid chaos from taking over your project, covering the “Broken Window Theory”: all it takes is that one small part of the system gets messy or broken, to settle a sense of abandonment and more “windows” get broken without repair, just like in dark parts of big cities. It’s all about cleaning up the mess as soon as you notice it.
The book explains how quality should always be the main requirement of a project, while trying to settle for what’s called the “Good Enough” product: focus on it’s core before thinking about adding extra functionality.
In the talk I covered briefly the “Evils of Duplication” , where I mention the golden DRY rule (Don’t Repeat Yourself) which teaches us to never duplicate ‘pieces’ of knowledge, we talked about Prototypes and Tracer Bullets. While the first are disposable, often paper-based representations of the product (or parts of) used to test specific areas or ideas, the latter are build to keep, to test how the system holds together, to see if it ‘hits the target’ – you’ll have a trivial implementation that you can test to see how it behaves in practice. Once that’s verified, they act as the basic system ‘skeleton’ on which we can build on.
Often Prototypes and Tracer Bullets are mistaken for each other, although they serve a different (yet useful) purpose: think of “prototyping as the reconnaissance and intelligence gathering that takes place before a single tracer bullet is fired.” (quote, p. 52)
In the end, having a pragmatic approach to problem solving is all about constantly reminding ourselves of the big picture. Think about who will use what you are building, take responsibility for it, learn from mistakes and be prepared for them.
More to come next month!
Photo of David Thomas was taken by James Duncan Davidson