Tools, Tools, Tools!

When I walk through the computer lab of our university, I often see students using editors like Pico and other plain notepad-like editors writing C and Java code. “Why don’t you just use an editor that at least supports colour highlighting, or even a Java IDE like Eclipse?” — “Nah, real programmers don’t need no fancy stuff.”

Need — that’s an interesting word. When you program, what do you really need? You could say you don’t need zip, real coders use switches to input binary machine code that a processor can execute. Man I look up to those guys, I can only dream of being such a geek. “Look mom, when I input this very long string of 1’s and 0’s I worked on for three days, I can actually imitate the lamps at the front of Kitt. You know mom, from Knight Rider! I’m going to spend the summer on doing the tune.” Wake up! Tools are key to any well-thinking person.

No, tools are not for wussies. Tools help you making life easier, they increase your productivity. Tools are something you should never skimp on. They save you loads and loads of time. And as salaries are the biggest expense for most companies, it’s vital to do as much as possible in as less human working hours as possible. A good tool is worth loads. Don’t intend to buy Visual Studio because it costs three grand? See how much time it saves and re-evaluate your buying decission.

It’s not just software tools I’m talking about, though. Two years ago we did a project with a group of eight people. It was a J2EE application. We developed on 500Mhz Linux boxes. For every little change we had to rebuild the project, undeploy the old one and then deploy the new one. Although this was all scripted, it still took around 5 minutes to test a little change. 5 Minutes is not that much, you think? I’ll tell you, 5 minutes is way too much. During these 5 minutes you can’t do anything but wait. How many times do you rebuild in an hour? Sometimes only twice, but usually, especially during debugging, you spend twice as much time building as you’re actually fixing bugs. This isn’t just bad for the time it takes, but also for your team’s morale. So, another proof that Java is too slow? No, it proves that good hardware is important. If we’d have had 3Ghz PCs with a gig of RAM to our disposal, we could easily have reduced that building time to a couple of seconds. Man, that would’ve made us so much more productive. Again: hardware is not expensive compared to human labour. Get your team members the best hardware you can get. Two monitors? Those buddies probably pay themselves back in no time.

Good tools are vital for projects to succeed. Choose tools wisely, choose a development platform that makes your developers most productive. Really, if speed is not your primary concern, you’re better off using platforms like .NET, Java, Delphi or even VB6. These platforms let you program so much faster than C or C++. Also be sure that the tooling around your platform is good. Good IDEs are very important.

I realize that if you’re a student or non-profit programmer you can’t afford the best stuff. But do note that many companies offer student discounts on their tools. It might still be quite an investement, but it can make your work much more fun too.

Not only is it worth spending time in making an educated decission on what tools to use or buy, but it’s also a good idea to think about if it’d be worth developing tools yourself. Two days ago I talked about “code generation”:http://www.zefhemel.com/archives/2004/09/23/data-in-data-out a little; programs that write a lot of code for you. Developing these kind of tools are not only more fun to do for your team, but also save a heck lot of time. If they’re designed well, you probably will even be able to use them again in a future project.

Again, it’s all about tooling, baby.