Tuesday, July 22, 2008

Tools: Enablement or Control

I've used a lot of tools during my software development career and it seems they fall primarily into two categories - tools that seek to control and tools that seek to enable.

Enabling Tools
  • Concentrate on addressing one key issue rather than the whole development life cycle
  • Don't dictate a particular work flow or way of working
  • Are often written by people who use them
  • Require a degree of trust between end users (so someone can ignore the agreed approach if they want)
  • Tend to be quick and easy to use
  • Are open and easy to integrate with other tools
  • Are adaptable to many situations and ways of working
  • Leading to: The ability to adapt to changing situations and constantly refine process leading to incremental improvements in productivity over time
Controlling Tools
  • Come with a built in vision on how a whole series of activities should be done
  • Dictate work flow and the ordering of activities
  • Assume no trust between end users (you must follow the tool's defined approach)
  • Tend to be complex and hard to use
  • Only work in one situation, you change to work their way or you spend all your time fighting the tool
  • Are often closed, proprietary and hard to integrate with other tools
  • Leading to: A lack of flexibility and consequently much frustration when trying to respond to changing circumstances, ultimately this constrains the productivity of the team
Another thing I've noticed over the years is no two projects are alike and no one approach fits every situation. If you don't have trust and good working relationships among your team members then the tools are the least of your worries.

So I prefer enabling tools over controlling tools - I'd much rather trust people and be flexible than constrain both people and the process.

0 Comments:

Post a Comment

<< Home