Mike Nichols - Son of Nun Technology

Protecting the developer from himself and his profession

There are lots of discussions going on in the blogosphere about Mort's and wizards and designers and so on. I won't bother with a link list since it probably isn't necessary and really I am not probably qualified to comment authoritatively on them anyway.

I can,however, give my own impressions of tools that seem to be developed to help coding or make promises of '80% less code' as a developer who wrangled with these tools for a long time.

I remember the first time I opened up Visual Studio for the first time and read the walkthrough that told me to drag a sql adapter onto a webform (or something like that) and the feeling I got. I had come to development from VBA and Excel tricks and was excited to finally be a 'bonafide' developer. The feeling took me all the way back to middle school when I first started to learn drums. Everyone was encouraging me to sit down on the drumset and imitate the grooves laid down in the popular music of the day as a way of learning to make music. I saw value in this but I wanted to learn how to play drums. Show me how to hold the sticks correctly, show me how to listen to the music and point out what makes certain sounds 'paint' different emotions in me. Yeah I want to play as quick as I can, but please don't leave me there and have me believe that I am a drummer simply because I can play a White Snake song. I fely like they were protecting me from being a drummer who knew what he was doing.

When I was led to software development I started out approaching it like I have always approached new things - I want to be an artist with the tools I have. I want to be a sculptor not a manufacturer of pink flamingos. So when I was drowned in a sea of drag-and-drop-just-let's-get-started-so-you-look-like-you-have-something-on-the-web tools, wizards, datasets, etc., I seemed to have lost my original desire to be expressive in technology. Even though we are creating business applications that have business value I still never stopped believing that within that scope you can do something elegant, creative, and even geekily beautiful. Kind of like listening to Kenwood Dennard with Maceo Parker or Vinnie Colaiuta with Sting...it's popular but within there is great ingenuity and beauty!

Last year I finally was led to discover TDD, DDD, and other Agile methodologies and principles that finally seemed to affirm the icky feeling I was getting producing web pages without really understanding HTTP and completely confused about what 'layered' applications were supposed to look like. Even basic stuff like file structures and so on bewildered me and the slightest change to my software would send a bowel movement thru my entire project that would break code everywhere...yecch. This is art?

Ironically, the catalyst for this was Ruby On Rails and the 'Agile Web Development With Rails' book. All of a sudden I realized that I had been getting protected from software development. There was no intellisense, no installer or wizard. Just SciTe. I even had to deploy to a Unix server and got bit by the differences from deploying to a Windows environment. IT WAS FUN. All of a sudden I felt like I had control of my environment and the more I learned the more creative I got. For people who think that wizards, drag-and-drop data controls, and so on reduce friction I would encourage them to dive into a framework that has none of those and see if that is true. I discovered the opposite was true and frankly I was GLAD there wasn't a good IDE around for RoR...it forced me to learn what was happening under the hood and forced me into the simplest solution possible each time. Now I'm learning MonoRail and while Castle gets bad press about 'bad documentation',when I have difficulty with it I usually discover that it is due to some hole in my knowledge about web development, not with the framework. I LIKE that it challenges me to know what I am doing.

We are fortunate today to have such breadth of information at our fingertips. However, I am afraid that our fastfood mentality to learning has hijacked the ancient apprenticeship/craftsmanship approach we all crave when we first begin. I've got so much more to learn but I am thankful that there are those who at least question the emphasis on shortcuts to producing applications and encourage developers to grow in their skillsets.

Mike