News

The Joy of Sneakiness

Two things recently came together in my corner of the online world. The first was a weblog entry from Don Box, long-time Windows guru who's now working on Web Service related stuff inside of Microsoft. Don quotes consultant extraordinaire Clemens Vasters as saying "your job is to make my current job so miserably boring and unnecessary that I must join Microsoft to survive." That is, if the Indigo team inside of Microsoft can really deliver on all the promises they've made for distributed applications, there won't be any need for smart people to hammer that part of the development world into shape for customers.

The other experience that triggered my current line of thinking was some work on an application for the PocketPC, using the .NET Compact Framework. The .NET CF is an interesting beast. Imagine someone had taped a big object model diagram of the .NET Framework to a wall and then repeatedly fired a shotgun at it until the pieces that were left would fit into the address space of a PocketPC. Perhaps the process wasn't quite that random, but there are certainly things missing from the CF to trip you up. The most recent one that I hit was related to the Bitmap class which, in the CF world, doesn't have a Save method. Of course, who would ever want to use the methods of the Graphics class to create a new bitmap and then actually save the result?

I was eventually able to work around this particular lack, by dint of scavenging bytes directly out of memory and getting a bit of help from another developer who's more familiar with the bitmap file format than I am. This reminded me of a long line of development experiences beginning with Access 2.0 - a fine system, but one that required resorting to the Windows API for many advanced operations. Access itself imposed quite a few limits on the developer, but sneaky developers were able to break through a number of those barriers.

What's the common thread here? My thought is that a superior developer must always be a sneaky developer. Each time the Microsofts of the world release a new programmable application, IDE, or computer language, the sneaky developers react according to a standard pattern. First, they explore the software to determine its limits. Then, they work to transcend those limits, so as to be able to better satisfy their clients. Finally, they establish their own set of limits, often far wider than those intended by the original vendor, indicating where the software finally breaks down (for instance, some people have tried to add aspect-oriented programming to Microsoft .NET and given up despite a very high level of sneakiness).

This pattern benefits everyone: software vendors, developers, and customers:

  • Vendors benefit from seeing where developers and customers would like to see the product go in future versions.
  • Developers benefit by keeping their skills sharp and being able to market themselves better.
  • Customers benefit by getting software that does more than the run-of-the-mill consultant would consider possible.

So, the next time you're looking for a way to distinguish yourself from the pack of developers, think sneaky. Look at the limits you've accepted from your favorite development environment, and try to move beyond them. That's one of the ways that our industry progresses best.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.