Programming, the Windows Way

This is not an easy post to write, and I realize it will draw some fire.  The point of it, though, is to tell you that I am suddenly changing directions, but more importantly why, because I cannot believe I am the only one who feels this way.

Some brief background: I have spent the last two years learning PC programming.  So yes, that makes me somewhat new to it.  I am not new to programming in general, however, because I have being doing it since I was eight, and stopped when I was eighteen because Apple shifted from the Apple II to the Mac platform, essentially abandoning droves of programmers.   So I stopped programming for years, up until a couple years ago, when my interest was rekindled.  This time, it happened on the PC platform.  So, I thought a lot about it again, designed a study plan for myself, began amassing IDEs, books, tutorials, etc., all in an effort to reacquaint myself with the world of code again.  Something, though, happened on the way to "coding heaven". 

The more books I read (or skimmed) the more I came to realize that Windows Programming is one odd subject.  I am one of those people who actually likes to master a subject (if possible), but that is difficult to do if the foundation keeps shifting beneath you every few years (3.1, 95, 98, XP). From a technological standpoint, I understand the reasons for many of the changes--video playback, the internet, security threats, etc. In order to keep up, however, it seems like I have to keep relearning some things over and over again, and that takes time.  And books.  The books part is easy...borrow them from a friend or rely on the library and only buy the books which are critical to one's long term success (basically a book with a shelf life longer than six months). Today, though, I cancelled a library waiting list request for a book on Visual Basic .NET.

In fact, recently, I had reserved some other books at the library and was put on a waiting list for them, regarding .NET technologies.  One book came in: C# Essentials.  Numerous times in the introductary pages, though, I stopped reading, flipped to the back cover, and double checked to see if the authors worked for Microsoft.  Nope.  So I returned back to my bookmarked page, and kept hitting more marketing terms.  I skimmed several other chapters, and came to one conclusion: why am I learning this?  Why am I spending my precious time relearning how to "draw a rectangle" on a canvas for the fiftieth time and in a different language?  I can already write "Hello World" in numerous languages, but am I really ready to learn another?  And why should I? The end result is the same: "Hello World" in text.  Sure, C# has garbage collection.  Great!  This technology has been around for a long, long time.  But C# plays nice with Visual BASIC via the CLR! Great!  Wonderful idea, really.  Can I build my own language on top of that?  Sure, but get ready to read volumes of books, and by the time you have mastered those, make sure you keep an eye out for major OS changes.  Compiler mechanics are difficult enough as it is, without having to fight other things.  As a developer, I need to know that there is some stability beneath me, for I like to build on principles I have previously learned, and to retain some skills at using certain libraries. Time you see, becomes more valuable to you with age, and the loss of relatives, loved ones, and friends through disease, accidents, and age only increases its value. 

So what do I sink my time into?  What is worth the effort? If I listen to the marketers, why the answer is "use .NET or get left behind!"  So, let me get this straight, it is better to "not get left behind" yet essentially "not master anything"?  I've covered a ton of ground as of late in terms of PC programming, but the more I look into COM, COM+, marshalling, apartment threading and everything else, the more I shake my head and think: let's see, do I concentrate on this older material and sink months of time into that, or do I jump on board with .NET, bypassing a chunk of Windows history, in the hope that it will not matter?  Or will there come a sad day when I catch up on .NET, only to find the API has shifted yet again even though I have been fed the promise that "it won't" for months on end?  Thank goodness I did not spend time learning WinG.

Sure, part of this may be personal, in that I am not drawn to other high-rate-of-change professions such as tax law, for instance, but I think there are some greater truths here.  I love to code.  I love the interaction of creativity, logic, and the ability to instantly see the results on screen.  I love to crunch numbers from time to time, to graph them, to look for trends, to "look at the big picture".  I love to solve problems for people, build tools and to make their workdays go smoother. I have tons of ideas for programs, from a new language, to a notetaking program, etc.  But why on earth would I want to spend my time building up such projects, only to have the pieces of the API shift beneath me and rewrite code? Sure, some of this has been corrected as of late, and some pieces of Longhorn have been held off or altered.  Fine. And yes, I know great pains have been taken to ensure backwards compatability through the years.  Fine.  So what do I study then?

The truth is, you will continue to lose developers like me, only to have your supply replenished by new droves of computer science students coming out of college.  Only to lose more developers and have to have supply replenished by...you get the idea.  As a business model, in some sense it works.  Some college programs even feed right into this.  Sure, it keeps your families fed, but what about mine?

Sure I have looked into UNIX.  I picked up a book on it a few months ago...and it did not look too tough. I have also looked briefly into Linux, but am a little concerned about the viability of open source in the business world (translation, I need to feed my family, too). However, I am ready to take a chance on that in the hopes that I can be a part of a change, in hopes that I can improve the product on the desktop, and finally find a venue for the ideas that I have (the fractured nature of Linux versions is not helping things, however).  Years ago I spent some time rebuilding the Apple OS (DOS 3.3) in hopes of creating that "something better" (and for fun), so in some ways I could relate to a lot of what Linus Torvalds wrote in "The Accidental Revolutionary".  I have mentioned that before here and elsewhere, however, although a marketer might tell you "that doesn't matter because it has nothing to do with the here and now".  Untrue.  Many of the principles I learned while working with 6502 assembly carry over nicely to the Pentiums, but everything is on a larger scale.

I came to Channel 9, though, to see into a world I only read about in books.  The more I have seen and read, however, the more I have learned, but a strange side effect is also that I have lost hope.  As a result this is why I am done with Windows programming (on any kind of deep level), and why I am also done with Channel 9.