Sunday, July 1, 2007

Canaries in the .NET coal mine

Way back in 2004 (ancient times for the .NET world), Kathleen Dollard wrote an editorial entitled "Save the Hobbyist Programmer", in which she described hobbyist programmers as canaries in coal mines, and further observed that the canaries were dying (figuratively). Hobbyist programmers were not able to keep up with all of the technologies in the .NET universe, and therefore had to move to other arenas.

The editorial provoked a number of responses, some more reasoned than others. Many of them are available on the web (search for "Save the Hobbyist Programmer") although the original editorial is locked inside the Fawcette web site (registration required).

In May of 2007, Kathleen Dollard wrote another editorial, "Pace of Change Leaves No One Competent". In this essay she writes: "No one has time ... to maintain competence in .NET development. ... [T]oday no one can be competent in writing ... modern, high quality applications in any specific genre..."

Both of these editorials appeared in "Visual Studio Magazine", a cheerleader for Microsoft technologies. (The magazine calls itself "Visual Studio Magazine", but most articles are about .NET technologies and not the Visual Studio IDE.)

If the cheerleaders are having discouraging thoughts about .NET technologies, what are the laity thinking?

(To be fair, the second editorial is a retrospective and contains the line "I am more optimistic today". But this line appears a full three-quarters into the article, after a lot of observations on the state of current affairs in the .NET world. And Dollard's suggestion seems to be 'specialize as part of a team', which leaves the hobbyists -- loners, usually -- out in the cold.)

I think the laity are overwhelmed and scared. And they should be: the .NET world is big. Really big. Way too big to learn, and frequently changing. Individuals had a fighting chance of learning C++ and MFC, and certainly could handle Visual Basic in its various incarnations, but .NET is an order of magnitude more complex. (And even Visual Basic required running on a treadmill, with significant changes from one version to the next.)

Microsoft has made attempts to bring hobbyists back to the fold, with the 'Express' versions of products. And while it has worked to an extent, I think Microsoft doesn't get it. Yes, the cost of purchasing products is a barrier for hobbyists, but so is the learning time. Making free editions (crippled or feature-limited) of products does not help the hobbyist when the API contains tens of thousands of entities and changes annually. I don't have time to spend learning an API that I will have to throw away in a year or two. I need to get something working, now. Or at least by the week-end.

Which means that hobbyists must make a choice about .NET: Attempt to learn enough to write small applications, piggy-back hobby efforts onto a day job, or abandon .NET for something else.

Learning enough for small applications is possible, but requires time (and keeping up with changes). A hobby is something I do for enjoyment, in my spare time. It should not be a second job.

Piggy-backing onto my day job may work, provided that my day job deals with enough .NET tech and I have resources to consult. But then my hobby starts looking like my job. Ugh!

Abandoning .NET is not a simple step. For starters, where does one go? Back to MFC? (It had its warts and support will be diminishing in the future.) Change to Java? (That has many of the problems of .NET, although there do seem to be more consistencies.) Switch to Perl, or Python, or Ruby? (They are somewhat more stable, but still require learning.) I don't see a good option.

Maybe I yearn for the "good old days" of BASIC. (Not Visual Basic, but Dartmouth BASIC.) I suppose I could have entitled this rant "The Future isn't the Same as the Past".

But it does scare me that the cheerleaders are complaining.

No comments: