In response to my Tools Are Not Evil post, Ayende writes this morning:

Tools can make you more effective, but I think that you should always learn without them.

I just want to take a moment to clarify something: I agree with Ayende on this one point. When it comes to “learning” as a computer programmer, I think it is always a good idea to take the tools out of the equation and learn what’s actually happening.

But “learning” and “working/using” are two completely different things. It’s fine (and recommended) in acedemia to strip users of tools to they “learn” the inner workings of things. I’ve written in MIPS assembly language as an undergraduate to understand how the CPU parses instructions; written a Java compiler compiler to learn how languages are created and the differences between them; written a virtual operating system so we could see how memory allocation worked and so on.

Those are all neat acedemic exercises and help make us better programmers because they give us deeper understanding, but when do we do that stuff in a real workplace? When was the last time I wrote a compiler? Not since I was an undergraduate.

So yes; I agree. Learn first without tools. But once you know how or why something works, and you’rce forced to use something in a real work environment, it’s time to put the acedemic hat on the rack and put the work hat on your head, and get down to business. And part of that busines is being efficient, which means taking advantage of tools.

As far as something being flawed if a tool is required; I disagree with Ayende’s sentiment there. Here’s my basic belief about tools: they are the evolution of what we do as programmers, and if our discipline evolves the tools will evolve as well.

Ever watch Star Trek? Recall how the captain just has to “ask” the computer to do complicated stuff, and behind the scenes I’m sure its doing some programming… I hope 100 years from now programming has advanced to the point where we’re not writing Boo in notepad. In order for that to happen, the tools will have to evolve.

One Comment

  1. Mike D says:

    Amen…