Phew, I’m not dead yet, although it’s been a hectic couple of weeks being crazy sick. All better now I can even stare at the computer screen for more than 10 minutes without feeling queasy. I never fully appreciate being healthy until I get sick. But with a week lost to a fever it also means a week lost for work, deadlines care very little for viruses, especially nowadays since I’m a one man programming team.
This post was originally going to be about some more binary maths but I’ve tried writing it up twice already and it didn’t work so I’m not going to press it. Binary will present itself when it wants to. Instead I’m going to take another detour and talk a bit about my coding practice. I’ve been trying my hand at different methodologies and approaches to writing code lately, I don’t know if it’s just that the old ones proved a liability as a lone programmer or perhaps I’ve grown bolder in my old age [I’m not really that old] but it felt like it was time for a change.
I’ve talked a bit before about reading up on Agile and while I wouldn’t say that I’m a devot Agilist, I have found many ideas contained within the system to resonate. The past few weeks I’ve also tried different ways to write tests, user stories and design ideas and I think I finally settled on a flow which works for me. I keep at hand three things at the moment, a good quality notebook [size A5], an open text document [.txt] and my whiteboards [I dual wield whiteboards]. Before I start programming I usually write up my stories into the text file then break them into tests. I write a few TODO notes in the notebook and start TDD. Each test I write usually ends up bringing with it more simple TODO notes which go, bullet-point style, into the notebook; each test that is complete usually also takes care of a few TODO notes so I cross them out. Once I’m satisfied that I have a robust unit of functionality [objects, functions, whatever] I stop. I stand up, write a quick UML sketch to document the system interactions visually on the whiteboards [and take a picture], then I use the uncrossed TODO notes and compile a new set of stories and tests. Rinse repeat…
It’s usually not as simple as that, I might do a design sketch beforehand to guide me through a trickier part of the system if I want a visual aid while writing the tests. Perhaps I’ll write more TODO notes, perhaps more tests, but the basic workflow is as described. It seems like things should take more time but I find usually that while I write more, more code, more notes, more of everything, the development time isn’t really changed much at all and I end up with a much cleaner codebase.
Oh and commit/push into the repository as often as I can. DVCS is, I’ve discovered, kind of like ice-cream, once I had a taste I really wanted more [although unlike ice-cream you won’t get a stomach ache from committing too much; in fact you’ll probably get one from not committing enough].
Ok, enough for today, I’ve got coffe and deadlines [in that order], but now that the fever is gone I’ll resume a more stable updating routine…
“…Kicking around on a piece of ground in your home town, Waiting for someone or something to show you the way. “