I Like My Tools, But I Won't Force You to Do The Same

I was reading an interesting article on Artima, written by Matt Bauer, titled "Buy your own tools". Matt argued that we should not enforce developers to use certain tools, as the end product largely depends on the code that comprises it, instead of the tool that constructs it. As Pope should not tell Michangelo which brush to use, managers also should not tell developers which tool to use in coding, whether it is Eclipse, Forte, JBuilder, JDeveloper, etc. On the other hand, developers are responsible to maintain their own tools, including financing them. Then the company only needs to outline the infrastructure pieces, like the version of make, source code version control system, hardware, etc. Matt foresees a happier development team with increased efficiency, as developers now are one that dictate how to code...

My response: "You mean, I cannot put a blame on the tool that I was forced to use?! What?!"

Seriously, I don't think it is "workable" in a large corporate environment. It might have worked for the open source developers, when they don't have to be forced to use a certain tool to accomplish tasks, but it usually gives me headaches when everyone just uses anything he/she prefers. For example, tab vs. space is enough to confuse text editors, and when you are using a programming language that "depends" on the amount of spaces, i.e. Python, sometimes some little differences in tab setting can render the whole application un-compilable. Then there is "\r\n" vs. "\n", which makes some scripts stop working on another platform.

And when you move into the GUI land, the situation just gets worse when people are using tools. Can I import and export GUI form/window/dialog box designs between different development tools without messing them up? And many of those integrated development environments insist on adding meta-data along side of code, which won't be refreshed if someone else modified the code in a plain text editor.

On a large scale development, when there are more than a dozen developers working on the same repository, it is going to be a nightmare when one person in the team does not use the standard tool-chain. Because one person's desire to use his/her favourite tools, it creates more headache to the team, or whoever is preparing the tool-chain or infrastructure, as additional complexity is added to the configuration of the whole project...

"vi" has been my editor of choice for a few years. Prior to that, I've used other different tools and editors, but for the last few years, I basically install Vim whereever I go/work. With most projects that I've worked with, there has been no problem using vim in the development. However, with some Delph and C++ work that I needed to do, using the integrated environment becomes essential, and I have to learn to adapt to that particular tool. Now in the place where I am working, people use Vim, Emacs, jEdit, Pythonwin and other text editors to modify their source code, and I wish they can all use the same version of Vim with exactly the same .vimrc configuration that I am using! How selfish...