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
- 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
- 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.
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.