Recently I have been somewhat frustrated with some aspects of my work. (See previous post.) I have decided that in many ways I have wandered off track in my work, and I need to start writing code that I like again. By chasing after efficiency, I have allowed quality to become a second priority, and in doing so have begun to lose morale as well. I feel as if this is a very common problem in modern practical programming, and as if it’s a good thing to explore solutions to. For the last several weeks I have been searching for a book on programming that covered tools, tips and tricks for making yourself feel enthusiastic about what you’re working on, and dedicated to doing it well. So far I have not had much luck.
What I have found is a lot of books that tell me about tools for generating quality work, but ignore the emotional end of the process. One of the few bits of emotional advice that they do turn up repeatedly is that once you let some of a project start to slide into a lower level of quality, all motivation to keep the quality level up drains away in what is typically called “Broken Window Syndrome“. What they don’t talk about is how to recover from it (my own personal holy grail, since I am so often brought in to save messed up projects) or how to feel a sense of quality to start with.
Since I am feeling around in the dark, I thought I would take two blind stabs at raising my quality level. The first idea I am putting into practice is literally sitting down and meditating on quality & craftsmanship before I start to work on a project. This means 15 minutes of cross-legged, closed eye meditation, thinking about the nature of quality, (very much in the style of “Zen and the art of motorcycle maintenance“), and on my own personal visions of a true craftsman at work. This does seem to help.
The second part of this approach that I am taking, is to start a personal project and try to hold it to a very, very high standard of work. The idea behind this is to help develop the habits of quality, and help it become a familiar thing. This will probably be a cakePhp project, which I will most likely write about more here. I’m already looking into getting started with unit testing for it, but more on that later.
If anyone has any tips on emotional self management for programming, or can refer me to a book on it, that would be great as well.
I think one thing that helps is working with another developer. I’m not necessarily talking about pair programming (with which I have no experience), but just having someone else around who will take the time to look at your code.
A coding buddy probably won’t like the shortcuts we all tend to take when we’re in a hurry or frustrated. It’ll keep us honest.
Of course, when you’re doing freelance work as a lone coder, I’m not sure my suggestion is particularly helpful.