There are two kinds of great software development tools:
- Those that do one thing exceptionally well.
- Those that allow you to communicate better with your coworkers.
In some rare cases, you may find that the same tool lives in both categories.
Without an insane focus on exactly one mission, tools get watered down and cumbersome to use.Quick example: version control tools. When evaluating a tool, ask what else the tool is capable of. If it can also handle bug tracking, feature requests, mailing list management, continuous integration, and monitoring the coffee pot, then back away slowly. Seriously. You want a version control system that is tightly focused on its core mission and nothing else.
Yes, you need those other capabilities, but you're better off getting them from a different tool and then integrating the two. I know, I know, it sounds like such a great idea to have everything under one roof, one vendor to contact, etc. The reality is that you end up with a comprehensive, tightly integrated set of weak tools.