Should the hobbyist programmer matter to Microsoft?

[Update: Before things get too out of hand, I want to be absolutely clear: I am not saying that Microsoft should “ditch” hobbyist coders or anything of the sort. I’m saying that MS should not cater to them at the expense of creating better dev tools for professionals. I am not arguing against hobbyist coders, nor am I saying they should be wiped out of existence.]

I’m in Connecticut and recovering from a busy few days. I wound up sleeping for a grand total of two hours between Sunday, Monday, and Tuesday. My body finally gave in last and night kept me in bed until 1:00 PM.

Anyway, even exhaustion can’t keep me away from SharpReader, so I anxiously checked today to see who was going to turn it yellow.

Of everything I saw, I think that this post by Avonelle Lovhaug got my attention most effectively.

Avonelle’s pointing to a Visual Studio Magazine editorial in which Kathleen Dollard argues that:

Miners know they have a significant problem when the canary they keep with them stops singing. Hobbyist/part-time programmers are our industry’s version of the canary, and they have stopped singing. People who program four to eight hours a week are being cut out of the picture because they can’t increase their skills as fast as technology changes.

The first thing I would like to say is that Microsoft’s responsibility is not to hobbyist programmers. As someone who makes his living by working with Microsoft technologies, I would be rather ticked off if MS were catering to people who weren’t professional coders. I’m not saying that hobbyists shouldn’t have a way to code their own apps, but there are many alternatives to .NET that would allow them to do that. Off the top of my head, and just for an example, I could wholeheartedly recommend Python. It’s easy to get going with it, and it’s pretty forgiving.

Kathleen continues:

Increasing complexity threatens the pattern of hobby or part-time programmers becoming full-time. .NET is harder than past hobbyist languages such as Pascal or Visual Basic.

I’m not so sure where the increased complexity is. I did quite a bit of VB6 programming before moving to .NET. I found the switch to be a bit of a shock, but when I was over the hump of getting accustomed to .NET, I found my job much easier. Gone was the horrible combination of procedural and OO programming styles. I no longer wrote code that made use of some mysterious global function that existed in god-knows-what library. My web applications are no longer monolithic pages of stand-alone code that’s about as reusable as a condom. Life is better.

.NET made my coding life easier because it cleaned it up, gave it focus, and created a world where developers from different languages concentrated on a common framework rather than the difference between a curly brace and an “End If” statement. I’m a C# coder, but I understand VB.NET code because I know the framework. This is not a convenience I had when I was doing a lot of VB6/Java work at the same time.

It also unifies the approach that .NET coders have to similar problems. Regardless of your .NET language, we can tackle the same issue in the same way. That’s a fine thing, and it makes my life easier rather than more difficult.

More from Kathleen:

We need to address the problems faced by these programmers before we lose their important domain expertise.

By “domain expertise,” I’m assuming that Kathleen is discussing the problem being faced by the hobbyist coder, rather than the solution provided by writing the application.

For example, someone might be running a small gift shop and want to be able to catalog all the different items in the store. This person’s expertise is in running gift shops, and this is not something that’s important to the programming world.

My expertise is coding, and I don’t think that gift shop owners out there are arguing that they need to do something about the state of things lest they lose my expertise.

Microsoft tools are not for hobbyists. If you’re a hobbyist and curious about coding, then there are many other ways for you to go about learning. Microsoft tools are priced for professionals. The training is priced for professionals. What does a hobbyist need with something as expensive as VS.NET? For exactly zero dollars, I could point a hobbyist to a development system that would be much more appropriate.

Of course, if you’re curious about coding, then there’s no good reason to stay away from .NET. The SDK is free, and there are now multiple options when it comes to free IDEs. However, don’t expect to get into it without having to learn something about .NET (the effort is worth it, though).

I say that we don’t worry about the hobbyists – don’t dissuade them from coding in .NET, but don’t cater to them either.

Making changes to accommodate the tinkerers would be like rolling back advances in auto engineering. My car is held together by more electronics and gizmos than you’ll find at NASA Mission Control. I can’t change my own oil, and I sure as hell wouldn’t try to yank a spark plug out. Although I’ve been denied the chance to put my car on blocks and work on it over the weekend, I’ve been granted an automobile that is much more efficient, reliable, and powerful than I would have had if it had been built with accessibility to non-mechanics in mind.

I would prefer to think that Microsoft is going to continue to do what it’s been doing for the past few years: Refine the development tools and technologies so that they make more and more sense to developers, rather than worrying about whether or not they make sense to niche markets.