Giving Up on Microsoft

Very nice post, at least the part of it emphasizing the need to at least try to understand “the other side”, instead of falling back to “us-and-them” mentality.

Still, humor me for a moment by explaining why the thought of Apple ruling the world instead of MS sends chills up your spine. I don’t get that.

Great post, I like the emphasis on unity and exploring other options. I used to work at Microsoft and it surprised me how some developers weren’t knowledgeable about the open source world, even things that could help greatly like Perl or unix shell scripting. In college we programmed on Unix/Linux exclusively, and any Microsoft .NET experience came from summer internships.

I’m similar to you in that I have a “best tool for the job” mentality – we’re trying to make useful programs for people.

“Right tool for the job and nothing else matters.” Very true.

We call this the “biting the hand that feeds you” syndrome. Seriously.

The economics of open source are upside down if you are a programmer in the Washington , DC metro area. There is a lot of work here if you are Microsoft-centric. If, on the other hand, you stay on the open source track (I won’t even count Java since it is so rare here) then you are going to be competing for an order of magnitude less of available jobs. That’s the money problem.

On top of that there is an attitude problem. On one side you got Microsoft-centric programmers that are blind to whatever else is out there. On the other side you have open source zealots that would rather go hungry than work in asp.net.

Caught in the center? The experienced programmers that don’t give a crap about the politics of programming and are just trying to make a living. I count myself as one, since I am currently do probably 99% asp.net but I have years of experience in php. And on top of that I am a mac user, so my asp.net apps are built from XP running on Parallels Desktop.

The best commercial programmers that I know also struggle with this conflict between the politics of open source and the reality of trying to make a living in a market that is dominated by Microsoft. Sure, if you work at a startup the odds are that you will be using a lot more open source stuff, but statistically most startups fail and there are mortgages to be paid and children to be clothed and fed.

Sure, it’s fun to hate Microsoft, but what many people don’t understand is that Microsoft knows who butters their toast: the developer. Microsoft was the first company that poured millions into courting the favor of the developer hordes. Ever been to a Microsoft-sponsored developer function?

Other companies are starting to follow suit, for example for the past 3 years or so I am seeing Apple push harder and harder for this kind of relationship with their developer base. On top of that, OSX ships with a hell of a set of core development tools as part of the retail price. Imagine buying a windows PC that comes with VS.net either preinstalled or on a DVD, plus the MSDN library DVDs and all of the platform SDKs.

A few weeks ago a college kid asked me what would he need to know in order to make it as a web programmer. I told him:

  1. Pick a platform like windows, linux, etc. and learn it well. By this I mean, if you go the .net route, you better understand windows and the web server too. If you go the php/ruby/python/etc. route then you better understand Unix, etc.
  2. Learn ANSI SQL, and learn it right. The world is yours.
  3. Stay the hell away from the politics of open source v. commercial. Every time you feel tempted, read Slashdot until it makes you sick, then go back to work.

The rest you pick it up as you go along.

I’d love to believe that we can offer our customers the right tool to solve the right problem. We can’t. We’re a Microsoft shop. And other than Flash, if MS doesn’t make it, we can’t use it. And I, like others, get tired of being a sharecropper. None of us here own the land under our feet. If MS wants to move into our space, or replace the stuff we make our living with, then we’re history if we can’t move fast enough to get out of their way. Yes, it is and has been a nice livelihood, but I’m very frustrated with the having to run as fast as I can just to stay in one place.
http://www.tbray.org/ongoing/When/200x/2003/07/12/WebsThePlace

This isn’t the first company I’ve worked for that was a pure MS shop. I doubt it will be the last. Although I’m tired of it.

Our division’s main product is looking like it will be clobbered when a government mandated public access website opens in late 2008. My guess is that our division is going to lose 1/2 or more of its income in the first year. The only saving grace is that the lack of a federal budget for 2007 means that they can’t start on this project until next fiscal year, hopefully delaying it. Our corporate parent forbade us from bidding on the project.

A small side project I had been working on (until a burglar stole all my removable hard drives with all the source and backups) was something that would fit in a small niche market. A word processor + a drawing package + glue to be a fault tree analysis package. Later, add some spreadsheetness to add FMEA to the doohickey. Later add QFD. Later maybe a small DB for traceablity stuff. Not world shaking these days. Although the products I’ve seen on the market are wallet busting and not all that usable. I had started putting stuff together with Word97 and Visio (before MS bought Visio), then, had to rewrite it to port to Word2k, then when Office2k3 came along, I started exploring OpenOffice, and before I got very far, my apartment was broken into. That would have been a sharecropper project: always trying to catch up to the latest version of Office. Sure you can do this stuff with Office, SharePoint and InfoPath. I was aiming it at smaller businesses that didn’t have the pile of cash to throw around for servers for this, and servers for that. Moving to OO would have let me keep the platform stable long enough to finish, instead of starting rewrites everytime I got to the 3/4 mark.

Hear hear!

Don’t get me wrong I love open source too but microsoft has got it right after windows 2000 sp4 and from then on there is no turning back.

Things change all the time because Microsoft is on the cutting edge while most of the open source development is based on 30 year old technology.

To be on the cutting edge means you have to learn the new stuff all the time, if you can’t handle that then by all means go and program in perl or something else that havent changed much since it was invented.

Jeff,
I’m recently blogged “Is Microsoft Expanding the API War” (http://www.stevetrefethen.com/blog/IsMicrosoftExpandingTheAPIWar.aspx) talking the same issues. The amount of “stuff” coming out of Redmond is overwhelming and they’re even pushing alpha’s out on the development community. Since when was that a good thing?

Anyway, good to see someone with your reach blogging about this.

Even though I have a paid for copy of VS2005, I still use UltraEdit for editing some stuff. It’s quicker in some cases.

As for VS2005 being the only way to develop on a Windows platform, everyone who thinks this is HIGHLY mistaken. You CAN create ASP.NET apps WITHOUT VS2005 or ANY VS for that matter. Since the .NET framework was released with 1.0, you have always been able to create with your favorite IDE, text editor or what not. If you’re good enough, you could even do it at the command prompt with redirects!

As for compiling, check out MSBuild. It totally rocks, and is highly extensible.

I ran out of time reading the ~160 comments, but has anyone mentioned SharpDevelop? Completely written in itself (except for the very first version) using C#. Hmmm… No other tools but VS2005, eh?

If you don’t like the languages used by default in ASP.NET, why not try Perl or Python? They both work in ASP.NET. Have since even before .NET. Check out ActiveState.

Now, Python actually comes with its own cross platform IDE - IDLE. It’s not perfect, but it is quite useful and actually pretty powerful.

I currently work in an ASP.NET 2.0 and 1.1 environment. I’ve also worked in a Perl/KSH/Python enviroment on HP-UX and Linux systems. It’s all about the tool for the job.

As far as which I like the most? The one that gets the job done and makes me get a paycheck.

I do believe I am the middle ground person you are looking for. I don’t hate. I embrace. All platforms perform a function for a particular set of users and each platform will ALWAYS need developers. All projects have a life span. Where will you be when that MS based or open source based project reaches that life span? Will you be so willing to “jump the fence” to the “Dark Side”? Yes, the “Dark Side” exists. It’s in BOTH camps.

I think that most of these bashers, on either side of the coin, are just afraid of change. They all need to remember, its still the same coin. This whole argument is nothing better than saying my Schwartz is bigger than you Schwartz. It’s still a Schwartz.

(stepping down from my soapbox)

Thanks for the fantastic post, Jeff! I’m not choosing sides… I like all languages and platforms because they all do the one thing I find so facinating, even 20+ years after I messed with a TRS-80 and got the BASIC loop working, they all make pretty things dance across the TV screen! :wink: I still can picture the cartoonish way electronic impulses appear in my head and tell me what is happening “under the hood.” It’s just an electronic box that does nothing different than the other guy’s electronic box. It makes pretty things dance on the TV screen.

Wow, you have either been asleap or not paying attention. Microsoft has never been cutting edge, Bill Gates bought/stole the first version of DOS and was in the right place at the right time to grab a foothold on a market no one but apple (who had other issues regarding control) saw a market for. Once they were at the top they did everything they could to crush anyone with a competing product. In other words, they used their monopolistic state to destroy other companies.

Now Microsoft is playing catchup. C# is their answer to Java because they got spanked for trying to redefine the Java spec. Their interface, while I haven’t seen it yet, I’ve heard is very similar to Apple’s.

It’s one thing if they were really innovative, and they have had a few jems, like the first AJAX implementation, but I can’t believe anyone would defend them and say they aren’t a bad company. I personally prefer open source because that’s what the internet was built on. If the TCP/IP stack was proprietary or if e-mail was proprietary, the internet would be a very different place. Open standards allow anyone to get in the game and we’ve seen some really cool stuff come out. It also makes it easier for beginner coders to jump in and look at real source code.

But hey, if you’re happy with a company that tries to kill it’s competitors and tries to exclude anyone that’s not them great. Learn whatever whizbang tool that Microsoft has bastardized to make their own and limit your market to Microsoft people, or take a look at open standards and open source which built the internet. No one ever goes back to Microsoft but tons of people are leaving, come join us, the water is warm.

Visual Studio.Net was Launched in 2/02 and the beta bits were around in 2000. Not a word about LINQ or Silverlight LOL

Hey, I have been an M$ developer for years (mainly a VB dev), and all I have to say about it is: THEY DO NOT DO THE RIGHT THING! And the best things M$ have done are all (poorly) copied from some other vendor. Bad, bad work. Don’t tell me bulls**t, please!

“Turns out 4 of the top 6 sites on the web actually use IIS Windows (MySpace, MSN, eBay, and Hotmail)”

At least two of them are M$ websites.

You state: “I also begin to look longingly at the open source developers who have been plugging away productively in Perl or Python over the last five years. Sometimes, you wonder if choosing an environment where things change more slowly isn’t a better long term evolutionary decision.” HJ’s comment just above puts that much more strongly.

You seem to imply that the open source development environment changes more slowly than the Microsoft one. Perhaps it looks like that from the outside? I don’t know about the Perl world (they’ve been in the middle of a total redesign of their language for years now!), but lots has changed in the Python world in the last five years. Besides the evolution of the language itself (in the last five years or so, a new object model, decorators, iterators, generators, new language implementations, and lots more), there has been a tremendous evolution in the surrounding infrastructure as well. Web frameworks is the example I’m most familiar with, but new libraries have popped up left and right and the Python landscape 5 years ago was much less rich then it was today.

I have been using Zope for web development for years. In the last five years we’ve seen a complete rewrite of Zope and an ongoing transition from Zope 2 to Zope 3 (the rewrite). That is a high impact change which the community is still dealing with today.

My open source desktop is also looking a lot better than five years ago. I’m a Gnome user, and five years ago I think we were still at Gnome 1. My machine couldn’t play video very well. The most common web browser was Netscape 4. I remember having to struggle getting the mouse configured, though that’s probably 7 years ago. :slight_smile:

One thing about open source development is the ability to feel more in control over changes. Now I don’t claim I have any control over the future of the Linux desktop. But if I wanted to, and worked hard enough, and was clever enough, I could have. I did want to have influence on the development of Zope, as it’s my livelihood. I do have some influence on the development of Zope. That is one of the things I most appreciate about open source development.

If you’re attracted to the open source stack because of its supposed slow pace of change, boy, you’re in for a surprise. :slight_smile:

When Jeff changed the font (fairly recently I think) I found that this site was very hard to read. The letters looked extremely blurry.

As an experiment I switched on ClearType (in XP go to Display Properties-Appearance-Effects…) and the site became a delight to read.

I guess as people switch to IE7 (which renders with ClearType by default) and as they adopt Office 2007 (which includes the Calibri font) then things might improve.

What was that you were saying about being tied to Microsoft…

Don’t get me wrong I love open source too but microsoft
has got it right after windows 2000 sp4 and from then
on there is no turning back.

Microsoft has got it much better after windows 2000 sp4, but every Spam-mail spam-filters are filtering tells me, they’re far from right.

Jeff, you ended your article with a link for free software going to fsf.org however a link to http://www.gnu.org/philosophy/free-sw.html is more informative.

Free software goes hand in hand with knowledge, and productivity. I don’t mind targeting the windows platform for a code base however to do so exclusively would only serve to further divide users, and perhaps reduce the quality and correctness of the code.

Jeff,

I understand your delema. As a matter of fact, I remember it. The same sentiments were uttered about IBM in the 60’s. Then congress stepped in and said that IBM was creating a monoploy by supplying a product and then providing a service on that commodity. Exit the “Service Bureau” to Control Data Corporation (CDC). I never understood that one myself. I did come to understand what the federal governments feelings were. It was sometime after that where the other players you mentioned SUN, APPLE as well as Wang and others jumped on the band wagon. Today IBM is a shadow of what they were in the 60’s. I believe that it is right sizing gone mad. And after all is said and done, many companies have found that it might even be more expensive to operate the business with “Open Systems” than with a Mainframe. With today’s “Data Explosion” where massive data bases keep information stored under new government requirements it seems that the large IBM way of doing things is needed now more than ever. I guess that there does need to be a snappy front end GUI that humans can use to be more productive than just using a 3270 interface. Besides; they have to be able to surf the net.

hmmm,

pay for IDE that only works with MS languages or use Eclipse for free.

pay for operating system and database or use Linux and MySql.

Tie all my work to a specific company and operating system or develop for a larger set of platforms.

Wait while MS plays catch-up with Silverlight (which is yet to actually be delivered) or use a proven, older, and richer technology like Flash and investigate related products of Apollo, and Flex

Only listen to Microsoft Sales pitch, or open my eyes and realize that nearly all significant I.T. work done in the last 10 years has not been done on the Microsoft platforms.

Microsoft has already lost. It’s the MS fanboys who haven’t gotten the message yet. They’ll all be working for some young Open Source geek in 5 years.

hmmm…

I do 80-90% of my development in C#. Along with the ReSharper plugin it’s very nice. I get a lot of stuff done. But I’ve always worked hard to not get myself stuck in the Microsoft bubble. I often visit and help promote and create Java, Ruby and Design Pattern user groups here in Orange County, CA. I do a few projects in Java, LAMP and Ruby on Rails, but my core, cash-paying work is .NET stuff.

I was talking to a guy who went to a .NET user group meeting and a top .NET developer was presenting his framework and how he created the model-view-presenter design pattern. Somebody in the crowd yelled out “Hey, do you mean model-view-controller?” and the .NET developer/presenter had never heard of MVC. That guy was seriously in a bubble as are many insulated MS-only developers.

I’m so tired of hearing MS developers talking about their “Business Objects” and their cool “N-Tier architectures” and people still publish .NET books with those terms in the titles. Nobody in the enterprise or open source world thinks about their enterprise architecture in such terms. What frustrated me for years is a MS developer would create a class and call it a business object. People, class != object.