Tuesday, August 05, 2008

Lazy software development!

A colleague commented to me once: you want to look in your server room and see your sys admin relaxing -- feet on desk, leafing through a magazine. If he or she appers busy, stressed, or frantic, you know there's a problem.

The good system administrator sets up the network for maximum automation and minimum human intervention -- scripts do the work, not the ass in the seat. If you're a manager, don't feel cheated if the admin works short hours, feel blessed -- you've got a good one.

I propose that the same is true for coders. Good programmers should opt for the easiest, least complex solution to a problem, and then kick back with a magazine. If you manage developers and see them coding late, or see them stressing out, you know there's a problem. If the system is designed for simplicity and ease of development, feature development should be swift and pain-free.

In other words, Keep It Simple and Do not Repeat Yourself, and you can work bankers' hours. There's a nice side benefit, too: the system will be simpler to understand and maintain.

So here, then, is a Lazy Software Developer Manifesto.

Whereas we have worked on many projects and seen many different methodologies: waterfall, agile, and everything in between;

Whereas these project management styles often produce burned-out workers and bad software;

Therefore, we propose Lazy Methodology.

Here are some initial prececpts:
  1. solve problems using the fewest lines of code / configuration
  2. embrace the old 80/20 rule (focus on your core use cases; skip the outliers that consume huge amounts of time)
  3. only have meetings when you have a reason to
Just the tip of the iceberg. What else?