I’ve been having discussions recently with some coworkers about finding better tools for various aspects of our business. A lot of our discussions are looking at how to organize our development process, but every once in a while it diverges to a different set of issues, especially how we track our developer/designer/account managers’ hours.
If you’ve known me for a while, you’ll know that I get a kick out of trying out new apps and services. I like to find ways to make myself more efficient and better at my job and life in general. Usually I end up throwing these tools away after a few weeks. But every once in a while I find something that lasts. A great example of this is OmniFocus. I had been trying to implement a good approximation of GTD for several years, and in that time I’ve tried probably 15 different tools and online services that implement various approximations of GTD. But it wasn’t until I started using OmniFocus that I really found a sustainable process and a tool that empowered me.
Coming from the agile community the common reaction to “What tools should I use to organize my development process?” is whiteboards, poster paper, and ample note cards. While I do appreciate this tactic from first hand experience, this has some obvious flaws as soon as your team members are not co-located.
Our current suite of tools have a number of failings for a number of different reasons. The reaction that I’ve been hearing lately from my colleagues is that we need to find a single tool that handles all of our major needs. The theory—I presume—is that having fewer tools will mean less manual work maintaining the tools and their content.
I’m not a big fan of this philosophy for a few reasons:
- It is not likely we will find a single tool that fits all of our business requirements without it being too complex or expensive (or both), therefore our processes and practices will need to be adjusted for the tool. The realist in me is OK with the idea of adapting to the tool to an extent, sometimes the tool can give you a better process that you didn’t know before (eg: OmniFocus), but that’s pretty rare.
- There are a few tools that are actually working very well for us, however the “one tool to rule them all” model creates artificial value in eliminating that independent tool for a consolidated one that may be less effective.
- It impairs a teams ability to experiment with new work patterns and tools by adding cultural pressure and often bureaucratic overhead around tool choice. If agile software development is about expecting change and continuously adapting to it, then I want to have the flexibility to adapt everything down to the tools the I use.
- I’m not convinced that maintenance overhead is entirely due to the number of tools. I think it has more to do with not using the right tools.
Modern application development approaches have really focused on the idea of specialized tools that solve a small set of problems. The old model of monster apps that can be customized to do what you want, but not quite perfectly, is being phased out for interoperability and APIs. Our Github account can send post-commit notifications to our Campfire account, our Acunote account integrates with our bug tracking system, and just about everything will send an email to keep you up to date.
The moral of the story: Why use one tool that does everything just OK when you can have many tools that to their own things really well and will talk to each other?