This post from Ayende made my laugh this morning. Specifically this:
if you need a tool in order to effectively use a piece of software, then you are already in a losing position.
I’d tend to say the opposite: if you’re not taking advantage of tools, you’re leaking efficiency.
In comments, Ayende wrote:
I write applications in notepad + command line, I am weird, I know…
Ayende talks a lot about “pain”. I can’t imagine anything more painful than writing code in notepad. I did that as an undergraduate; C on Unix with XEmacs and a command line compiler (Ok, so it wasn’t exactly Notepad; XEmacs is a step up, but it still wasn’t what I’d consider to be a true IDE, at least not without a lot of tweaking and editing). Fortunately programming tools evolve, as do most programmers.
I can’t imagine the pain that I’d feel if I had to write .NET without the IDE and ReSharper, for instance. Actually, I can. A few weeks ago I downloaded the XNA framework because I wanted to do a bit of game programming. My home machine did not have a license for ReSharper and instantly I felt the pain of having to work without it. I missed its ability to intelligently inform me about missing references, or gray-out unnecessary code. That didn’t make it impossible to write code, it just made it uncomfortable. I lost efficiency as a result.
I don’t look at tools as a handicap; I see tools as a way to make us more efficient programmers. And in a world driven by rapidly changing business desires I think it behooves us to have the best tools possible so we can be as efficient as possible. Efficiency is our lifeblood. Most companies don’t have the capital to support the Blizzard tenet of, “We’ll release it when it’s done.”
If you look at just about everything else in life that involves creation you will see that the tools have evolved. For instance, we don’t build skyscrapers with the same tools we did 100 years ago. We don’t build cars with the same tools we did 50 years ago. Musicians don’t even create music with the same tools they did 20 years ago. The tools evolve based on a singular purpose: to make the person more efficient at doing the job.
I find it particularly ironic that Ayende advocates building tools to take away pain points, but criticizes P&P for doing exactly the same thing. Then he says he writes in notepad + command line, which I can’t imagine anything being more painful. It seems like a real double standard.
At any rate, Ayende’s claim (that you need tools to use CAB) is wrong and fortunately Glenn Block corrected him in the comments. You don’t need SCSF to use CAB. In fact, for the first year of development, our shop didn’t use the SCSF. I built the first CAB application at work with just the API and some documentation. The bulk of the value for the SCSF comes with initial application creation. We later moved to the SCSF for one reason: so we could right click and generate the three class files for MVP. It only saves a few minutes of typing, but every edge we can get in development is worth it, in our eyes.
Efficiency is our lifeblood, after all.