6 tips for avoiding antiwork

Antiwork is work that has negative value. After you’ve done some anti-work you are worse off than when you started. Usually you or someone else will have to put in extra work in order to recover lost ground. Antiwork has the same relationship to work that antimatter has to matter - it cancels it out. So how do we avoid it?

Creative endeavours - including software development - usually involve a process of evolving a work-product toward a slightly fuzzy goal using a cycle of work - review - work - review. In this cycle where the goal of a work phase is not clear, it is easy to go down a blind alley, wasting time and making the work-product worse.

The problem can be particularly acute in software development because software is so unforgiving. Humans compensate naturally for most errors in instructions but computers very rarely exhibit sensible behaviour. (This is one important reason why we see so many bugs in software).

Fortunately, some characteristics of software tip the scales back in our favour. Software doesn’t have a physical presence that can be damaged, it can be replicated at almost zero cost and it can be manipulated as data.

  1. Use a version control system to maintain a baseline against which you work. If you realize you are producing antiwork at least it is easy to get back to a known-good state.
  2. Compare your work to the baseline if you lose track of what you have done. This is a good way of reorienting yourself and perhaps salvaging valuable work that has become entangled with antiwork in the course of a development cycle.
  3. Always undo antiwork as soon as you discover it. The costs generally stack up as more things become dependent on it, and it is usually easier to correct a problem that has just been made than one that was made long ago.
  4. Don’t check in until you know what you have added doesn’t break your baseline (i.e. don’t check in bugs). If you do check in code that is broken or that breaks other code you make it harder to go back to a good state. In particular, you may not discover your mistake until later when you or others have made new work dependent on the antiwork. Preserving a working baseline is particularly important when working in a team.
  5. Take small steps in which you try to establish a goal for your work, minimize the goal, implement it and then review the overall work-product. It usually pays to spend a small amount of time working out how to make a small but sensible step forward before you begin the work proper. The key is that you are working out where “forward” is. Time lost pursuing the wrong goal cannot be regained.
  6. Stop when you’re tired. If you feel tired or disengaged from your work you are on dangerous ground. There is a strong risk that what you will produce will be antiwork. It can be very difficult to recognize this “Friday afternoon” syndrome so try to stay attuned to your own grip on the creative process. If it starts to slip from you you may be doing something you will shortly have to undo.

If you are developing software, test driven development is an excellent way to avoid antiwork, but make sure you check your code and tests into the revision control system often.