Friday, August 31, 2007

Fundamentally Broken

This week I had an interesting (and heated, of course) conversation on the Northwest C++ Group mailing list, following an Agile/Design Patterns webinar announce by Alan Shalloway.

I responded to the announcement in a sarcastic tone that some people found funny. Some consultants felt offended by the "unfriendly remarks". Boo hoo!

Several people gave examples of how Agile had been misused in real-life projects.

Read the above line again, because that's where the crux of the problem with Agile is: it is more often misunderstood and misused than not (hm, where did I hear that before? "Communism is not bad, it was just incorrectly applied by the Soviet Block").

Defending Agile on such grounds is equivalent to saying that there's nothing wrong with using raw pointers in C and C++, people just have to learn to do it right; hire expensive consultants and trainers to tell them how to avoid dangling pointers and such. What about using smart pointers or a garbage-collected language, then?

Has it not been said of yore that programming languages and APIs should be designed so that they encourage the correct use rather than the other way around?

If Agile encourages incorrect usage, then it is not a well-designed methodology. It needs some serious patching.

I showed the above paragraphs to a friend and he quickly rebutted me: "You criticize Agile yet you do not even know what Agile is. Please define Agile for me".

Awesome point! It greatly explains the misuse of the methodology: people hear the word and go ahead and apply whatever they think Agile is. Like some manager dude who does not allow his developers to fix memory leaks, because such activity is not covered by a "user story" on his cork board.

XP, Agile, Test Driven Development have become anti-brands. These buzzwords have been so badly abused that they are now diluted.

Even worse, Agile is now associated (in many people's minds anyway) with weaselly consultants and incompetent managers.

Wednesday, August 29, 2007

Debugging is A Crappy Job

My best metaphor to date that describes the relationship between programmers and debugging tools is inspired from a recent trip to McLendon Hardware (a local, smaller and characterful version of the ubiquitous Home Depot).

No matter that my only purpose in the store is to buy bulbs, conduit, paint, or whatever supplies are needed for my weekend home maintenance project; I always always always end up wandering in the power tools section. Sounds familiar? If you are a normal male, it should. Pickup trucks. V8 Engines. The Niagara processor. Power tools. Got to love them.

For those of us with a geeky side, the enumeration may also include Power Books, cool programming languages, and Turbo Compilers (some girly men may also like Emacs, floppy discs, and Windows Vista, but let that not disturb you for now).

The point is, nobody in their right mind ever goes to the local hardware store to check the new selection of plungers. Because this is the very definition of a debugger: a tool to get the nasty job done (then swiftly hidden under the sink so visitors don't see it).

So what if one day your hardware store starts selling power plungers? Maybe even reversible ones? You may end up spending more time debugging.

Release early, release often!

Sunday, August 26, 2007

D Programming Language Conference: A Blast

I have not had much time for blogging lately. Terribly busy with getting the ZeroBUGS code up to snuff, fixing bugs, preparing my speech for the first D Developers' Conference, and Real Life (tm) in general.

The Conference (sponsored by, and organized by amazonian extraordinaire Brad Roberts) was a great success. See here and here.

The third day of the conference was a hands-on session of language design. Most of the stuff that Andrei Alexandrescu and Walter Bright drew on the whiteboard went way over my head. Thomas Kuhne sat next to me and quickly hacked his demangler for the D Language, to better integrate with my debugger.

Cool ideas for the future of the language and its support libraries filled the air, so I would not be surprised if by next year's conference the D Programming Language makes it into mainstream.