The Wonders of a Stress Free Lunch

I just finished blogging about my mini-vacation weekend riding motorcycles in the north Georgia mountains with my father, but I decided to split it in to because this was logically seperate.

After we left Suches, Georgia on Sunday around 1pm, we traveled south to Dahlonega, Georgia to meet Kathleen Dollard who had scheduled to have lunch with me after she arrived in the Atlanta airport. Luck would have it that she wanted to go hiking in Clayton, Georgia for a short time as she had spent time there when she was younger, and you can get to Clayton by driving in the direction of Dahlonega from Atlanta. After that, she was headed to South Carolina for a consulting gig.

Whenever I’ve seen Kathleen in the past it has always been at conferences where she was speaking, and I have typically been running a trade show booth which meant we were both always stressed.

On Sunday when my dad and I met up with Kathleen, I wasn’t stressed at all (I had just had an awesome weekend) and she didn’t appear to be either. We had a great long lunch, discussing things that interested all three of us, and I got to know here even better.

Kathleen is a great and brilliant lady, and I am honored to count her as a friend. If you don’t already follow her blog, consider subscribing.

CodeGenGrrl’s got a Blog

After much prodding by myself and others, Kathleen Dollard, author of Code Generation in .NET, has finally gotten herself a blog. You go girl!

Great People and Old Friends at VS Connections

I just got back from the Visual Studio Connections conference in Orlando, Florida for a few days. I went down for a few meetings, and had a really great time.  

I meet Robert Green who on Monday night previewed a free set of soon to be released components called the VBPowerPack. Robert and I talked about why VS 2005 may actually even be better and easier for the newbie than VB6. And I met Joe Binder the program manager for the very cool “My“ namespace feature, who sold me even more on the feature.

I had a nice long chat with one of the nicer guys in the industry, Alex Homer, author of *ton* of books on ASP, ADO, ASP.NET, ADO.NET, and more, and he told me about the three (3!) book projects on which he’s currently working. His Advanced ASP.NET sounds really interesting and I can’t wait to get a copy.

I had a chance to talk briefly with Rocky Lhotka, another one of the nicest guys in the industry and another hugely prolific ASP/.NET writer, and he did his best to get the concept of SOA thru my thick skull. But rather than give you his explanation, which was great, I’ll give him the chance to first blog about it. I finally met Markus Egger whose Code Magazine just keeps getting better and better.  I also finally met Steve Smith of AspAlliance, but somehow we got our wires crossed and never got a chance to talk; sorry about that Steve. Hope to see you at the next show.

I had a nice long catch-up chat with Shirley Brothers, president and founder of the Connections Conferences. I’ve been a hermit for a lot of reasons and we hadn’t spoken in probably four years. Penton acquired her company over three years ago and it turned out to be a great acquisition. I’m really happy for her because it so often turns out to be a nightmare for the acquired. Anyway, her conferences keep getting more attendees each year, and the attendees, speakers, and vendors I spoke with were really positive.  Rene Garcia, president of SoftwareFX and a leading vendor of one of Xtras.Net said he loved it.  One thing’s for sure; Shirley knows how to pick the venue! The Hyatt Regency Grand Cypress resort beats the heck out most conference hotels I’ve been to over the years.

I had a really nice dinner Monday with Kathleen Dollard, MVP and author of Code Generation in Microsoft .NET, and later on Tuesday we talked about many fine philosphical points, at least a few of which did involve programming and code generation! And then there’s one of the most consistently positive people in the .NET world: Don Kiely. They ran him ragged with three sessions [UPATE: make that five sessions!] but he still kept smiling.

So much for the name dropping. :)  Traveling can be a real pain, but whenever I go to Microsoft-oriented developer conferences I’m always surrounded by great people and lots of old friends.  This time was no different. 

Woe be it for the Hobbyist Programmer

I just came across a blog entry that disturbed me entitled Should the hobbyist programmer matter to Microsoft? by Rory Blyth of Neopolean.com. It was not so much the blog entry by Rory that really disturbed me, but the tone of the comments he received (over 100 at the time.) As I started writing this post, I planned to comment on those comments. Instead, all my comments instead focused on Rory’s post. Maybe I’ll comment on the comments in a future blog.

Divining Microsoft’s Responsibility

Rory was commenting on Kathleen Dollard’s Guest Editorial at Visual Studio Magazine entitled Save the Hobbyist Programmer (I think it regrettable that Kathleen choose the term “hobbyist programmer” rather than something like “occupational programmers” because the post’s comments seemed to attack more of what the term “hobbyist” implies than the actual concepts it seems Kathleen was trying to convey.) In his post, Rory starts out by saying:

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 found that quote most interesting because nowhere in his post did Rory reference Microsoft’s corporate by-laws, mission statement, or analyst presentation where thye indicated they had explicitly chosen to avoid meeting the needs of “non-professional coders.” As far as I know, Microsoft has issued no such statement of direction so I’m not sure why Rory would state Microsoft’s responsibility is not to hobbyist programmers. Has he been speaking to Gates or Balmer and just not told us?

She turned me into a Newt!… Well I got bettuh.

Continuing, Rory goes on to state:

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.

Odd. If there were no increased complexity, what “hump” would there have been to get over?

Compare apples and oranges; they are both eaten

In his post Rory also implies an analogy comparing an older vs. newer car with the hobbyist programmer vs. the professional programmer:

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 tried to understand this analogy, but I just could not get it to fit:

  • Changing oil and spark plugs is routine mechanical maintenance. Programs have no mechanical maintenance. Assuming programs are designed correctly then never “wear out.” There is simply no equivalent in software for the changing of oil or plugs.
  • Automobiles were generally designed to address a common use case: transportation. As designed, they meet the needs of most people who use them, although probably never perfectly but almost always good enough. Automobiles are far more analogous to applications like Word and Excel than to development tools which are designed to create software for new use cases.
  • It is simply not possible for one person with only intellectual resources to modify or create a new type of car to meet new use cases.
  • In the automotive field, the better analogy with development tools might be the tools required to fabricate new automobiles. Still, the physical requirements of creating an automobile to meet a new use case vs. the lack of such requirements for programming seem inexact analogy at best.

Maybe another analogy would be the professional drivers whose job it is to use cars (and trucks) to transport people or things from one location to another such as truckers, taxi drivers, package deliver drivers, and so. By comparison there are many non-professional drivers who also transport people or things by cars (and trucks.) We could possibly imagine a professional driver saying about General Motors:

General Motor’s responsibility is not to hobbyist drivers. As someone who makes his living by driving General Motor’s vehicles, I would be rather ticked off if GM were catering to people who weren’t professional drivers.

It would seem that might not make the most sense for GM as its market for drivers who transfer people or things from one location to another is larger if it does not ignore the “hobbyist” driver. I won’t further comment on this.

Mommy, where do “Professionals” come from?

Elsewhere in his post Rory states:

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.

Strange. By implication Rory states he is a professional programmer, but my understanding is that if one is a professional programmer one wouldn’t large monolithic modules of stand-alone code that are not reusable. But maybe that is naive on my part as technically the definition of “professional” means “they get paid to do it.” So maybe “professional” doesn’t mean one is actually reasonably skilled in their profession?

But maybe that too would be an unfair interpretation. Maybe when Rory used the term “professional programmer” he meant someone who has developed a level of skill and expertise in the area of programming, and someone who would be considered a “professional programmer” by others holding the same designation. That’s probably what he meant?

Assuming that definition, let’s revisit Rory’s last quoted statement above. Is it possible that Rory was not always a professional programmer but instead actually learned his skills over time? Maybe Rory is now a skilled professional programmer, but earlier he was not? That would seem logical as I don’t believe on the day of one’s birth, a person has ever left the mother’s womb carrying with them the designation of “professional programmer.” (please post comments and provide references if any readers know otherwise.)

Based on that postulate, wouldn’t logic dictate that the state of being a professional programmer would require a transition from being something less of a professional programmer? Further, it would seem logic would also dictate that is it not possible to instantaneously transition from being “not-a-professional” to being a professional if being a professional by definition requires expertise?

If my logic is all correct, that would then explain how Rory could be consider a professional programmer now yet at one time his code was previously “implemented using a horrible combination of procedural and OO programming” which is inconsistent with how a professional programmer would implement code. Clearly in the past he was not (as much of) a professional programmer as he is today?

The logic would also appear to reveal that there are not just two states, one of being a “professional programmer” and another being a “hobbyist programmer“, but instead an almost infinite series of states in between the two extremes. Given that, it would follow that it would be very difficult to determine just exactly to whom Microsoft has responsibility, assuming there was some way to determine, in this area, just to whom that specific responsibility would be.

Since any given state along the continuum between hobbyist and professional is infinitesimally small, how could Microsoft limit its target focus to one exact state along the continuum? Given the costs of creating and supporting development tools, would not Microsoft be required by the laws of economics to provide tools that could be used by a broader range of programmer’s along the continuum?

If so it creates the quandary of where to stop along the continuum as one targets professional and expands target toward hobbyist. Since all it is that appears to limit the hobbyist from the professional is skill and expertise, then would not catering to the hobbyist in turn generate more professionals since the hobbyist becomes like a professional each day programming? That would tend to support the earlier argument that a programmer transitions from being not-a-professional to a professional over time.

Divining Microsoft’s Responsibility, Redux

To finally bring this all to closure let’s consider the modern publicly-held corporation in a capitalist society. My understanding is that such a corporation’s primary responsibility is to its shareholders, and public company shareholders generally want, all other things being equal, for the share price to be increased. Since Microsoft is a modern publicly-held corporation in a capitalist society, it would seem Microsoft’s responsibility is to its shareholders and hence to increase the price of its shares.

In the past, ignoring government intervention, Microsoft has proven itself rather adept at increasing its share price (I personally am glad I bought Microsoft shares many years back, which I have since sold at a gain.) I think it can be argued Microsoft’s strategy’s for increasing its share price have generally been to increase the installed user base of Windows.

Further, I think it is reasonable agreed computer users generally purchase computers because they provide applications that provide the users with some level of value. Since developers create applications, it would seem empowering developers would help increase the number of applications available. Simple math would then imply that the more people developing applications for Windows, the more potential users would find applications for Windows they would value and hence be more likely to purchase Windows from Microsoft. Further it would seem logical that users would be more likely to value applications developed by programmers whose skill and expertise levels were greater because those programmers would be more likely to create programs of higher quality.

Given all of these postulates and theorems, it would seem Microsoft’s best strategy would be to focus on creating as broad a base of programmers as possible, and enable as many of them as possible to move from “hobbyist” to “professional.” Doing this would be most likely to increase the number of quality applications available for Windows, which would likely increase the number of people buying Windows, which would likely increase Microsoft’s share price. Would this not be the most logic strategy for Microsoft given the analysis?

How I see it

Assuming I have not made any logic errors in my prior analysis, it would then seem that, regarding Microsoft’s “responsibility“, the following could be said:

Microsoft’s responsibility is not only to professional programmers but also to hobbyist programmers, and all programmers in between. Anything less, as a modern publicly-held corporation in a capitalist society, would be a dereliction of their duties to their shareholders to whom they have ultimate fiduciary responsibility.

Anyway, that’s how I see it. :-)

More Support for the Scripter?

Now that I wrote my VBScript.NET post, I’m finding others have also been addressing the issue. Maybe one more voice helps?

 

Actually, I previously read Kathleen’s article and it influenced my essay but when I was preparing to write I had forgotten about it: out of sight, out of mind.

Sorry Kathleen, I’ll do better next time. :(