Ground Zero and Ground Rules

Posted by: on

Problem

This project needs some general guidelines (and some things to set myself some personal learning challenges).

Solution

Basic ‘rules’

  1. Test driven approach

    Not something I’ve tried before (at least not extensively) and I’m rather curious about how it will turn out.

  2. Automation first

    Automate everything. This I’ve always striven for and I’ve found it to work well.

  3. Literate programming

    I’m a big believer that well presented code is better than documentation. More on this as we go on.

  4. Levels

    Some of you will be complete beginners, others will be more advanced, and I’m sure some of you will be much ahead of me in specific subjects; to try to guide you I’ll rate each piece of work as ‘foundation’, ‘intermediate’, or ‘advanced’ to give some idea of how difficult I think it is. In addition I’ll produce some sort of map to show how the various pieces relate to one another. Again, more on this later.

Discussion

As I said yesterday, I’m a starter not a finisher so it makes sense to front-load work like writing tests (otherwise, like so many projects, they will be overlooked). This is a personal challenge too as I’ve not tried this before, although a I certainly see the logic of it.

Automation is a cornerstone of this project. I hate doing thing more than once and I hate repetitive work. As the old saying goes, ‘why have a dog and bark yourself’. I know computers are perfectly happy doing boring repetitive work and I’d rather spend some time up front (see previous paragraph) getting as much as possible automated and then chillax and let it all tick away in the background.

If a system is not self documenting (that is, a reasonably competent person can read the ‘source’ and figure it out) then you’re probably doing something wrong (and you’re certainly making a rod for your own back as you will inevitably return to that source weeks, months, or years later and be faced with the prospect of figuring our what the hell you did in the past). Remember past you was probably a lazy jerk who didn’t know that he was doing so for the sake of future you try to make your work as clear as possible.

There can be few more frustrating things than trying to learn something and getting bogged down in material that is too advanced or bored by trivia you already understand (‘trivia’ being relative to your current expertise of course). I don’t want people to succumb to either state, so I will do my best to indicate, in general, how tough I think the material is to understand. As people give feedback I will add links within the material that should let you dig down to more detail or back to simpler more explanatory material.

Okay, that’s the general guidelines for myself.