<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Software Artisan: Why I Hate Writing Microsoft Programs</title>
    <link>http://bloritsch.d-haven.net/articles/2007/02/21/why-i-hate-writing-microsoft-programs</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Design, Development, and Artisanship</description>
    <item>
      <title>Why I Hate Writing Microsoft Programs</title>
      <description>	&lt;p&gt;First off, I don&amp;#8216;t dislike Microsoft for religious reasons or claim that the only true software is open source.  I dislike Microsoft because they have made my life difficult on many occasions when it could have been easy.  The one area where Microsoft is the most painful to use is when you write software.  The first problem is the horrendous &lt;span class="caps"&gt;API&lt;/span&gt; documentation and how to articles.  Before I provide anechdotal evidence, let me provide something to contrast against.&lt;/p&gt;

	&lt;p&gt;As a Java developer, there are a couple things I have come to appreciate about the Java&amp;#8216;s contributions to the world.  The first is the first rate JavaDoc tool.  If Sun did nothing else right, they spent the right amount of time to flesh out the JavaDocs for the core &lt;span class="caps"&gt;API&lt;/span&gt;, and even provided links to tutorials to help you understand how things are supposed to work together.  Second, the Java community as a whole has contributed excellent articles on how to solve different problems with Java.  I&amp;#8216;d love to see another community surrounding a language match the level of quality of the articles.  As a result of all these rich resources, developing Java programs is far less of a pain than any language supported by Microsoft.&lt;/p&gt;

	&lt;p&gt;As a Visual C++ developer, there are a couple of things that I have come to loath about Microsoft&amp;#8216;s contributions to the world.  The first is the abysmal &lt;span class="caps"&gt;API&lt;/span&gt; documentation, which has gotten worse with the advent of the .NET framework.  The descriptions are barely useable and there is no clear idea of how to use some of the parts of the &lt;span class="caps"&gt;API&lt;/span&gt;.  It might be forgivable if the remainder of the Microsoft community (including magazines and such) picked up the slack, but rarely can you find what you need and everyone wants money.  You can&amp;#8216;t even evaluate if the magazine will be good for you without spending money on it.  The second is the lagging &lt;span class="caps"&gt;IDE&lt;/span&gt; technology.  Things that I take for granted in &lt;em&gt;any&lt;/em&gt; Java &lt;span class="caps"&gt;IDE&lt;/span&gt; like refactoring tools are not to be found in Visual Studio (unless you pay for a third party plugin or a new version finally includes limited support for it).  You can&amp;#8216;t really build anything without the &lt;span class="caps"&gt;IDE&lt;/span&gt;, but it is a pain when you do something as simple as rename a method to clean up the class signature.&lt;/p&gt;

	&lt;p&gt;One of the first events that really helped me to dislike programming Microsoft programs was when I had an assignment to add features to the print dialog.  I searched the &lt;span class="caps"&gt;IDE&lt;/span&gt; help for how to do this, and all I could find was that it was &amp;#8220;possible&amp;#8221; but that was it.  I had a coworker look through his several hundred dollar thick reference guides and they gave the same answer as the online help.  I searched the internet and came up with the same answer.  Eventually, I ended up just creating a new dialog box with just the controlls I needed and secretly controlled the printer settings behind the scenes.  The printer settings are set by the dialog box which is required by Microsoft to exist &amp;#8212; but you can instantiate it without making it visible.  After I created the custom print dialog with just the controls we needed I finally found the answer I originally needed, sort of.  It turns out you need to copy the Print Dialog resource descriptor from the &lt;span class="caps"&gt;API&lt;/span&gt; source code included with Visual Studio into your project and manually edit it with a text editor to add the controls you need.  There were no instructions on how to edit the resource file, but at least there was some description of the process.  Events like this repeated themselves &lt;em&gt;ad nauseum&lt;/em&gt; .&lt;/p&gt;

	&lt;p&gt;Another event that solidified the fact that I didn&amp;#8216;t want to do .NET programming and spend time learning C# had to do with a copy of Visual Studio 2003 given to me by my company.  Despite the fact that this &lt;span class="caps"&gt;IDE&lt;/span&gt; is supposed to be Microsoft&amp;#8216;s cutting edge offering, they didn&amp;#8216;t learn a thing from the success of Java.  Java&amp;#8216;s success has nothing to do with the language!  It has everything to do with the community surrounding it, and the attention vendors pay to making our lives easier.  Visual Studio 2003 had zero refactoring tools.  None, zilch, nada.  The open source community did help in some respects by providing &lt;span class="caps"&gt;NANT&lt;/span&gt; and NUnit, but no refactoring plugins.  Eventually JetBrains created one, and perhaps Microsoft has licensed it for the next version of Visual Studio.  I asked the Microsoft rep about it the response was, &amp;#8220;No, it doesn&amp;#8216;t have anything like that&amp;#8230; but don&amp;#8216;t you think that being able to display a screen on the desktop or on the web with the same code is a useful thing?&amp;#8221;  I couldn&amp;#8216;t believe it.  How many people do that?  You either develop for the web or you develop for the desktop.  Worse, despite the &lt;em&gt;cool&lt;/em&gt; factor that might have, it doesn&amp;#8216;t make my life easier for what I do each and every day.  Refactoring tools are useful even when there is no UI and you are writing a library.&lt;/p&gt;

	&lt;p&gt;There are some very clever things that Microsoft has done, but they are lost in a sea of irrelevant features and horrendous documentation.  The documentation problem is made worse by the community of money grubbing publications filled with articles that are no better than what Microsoft provides.  Will things get better?  Not if they continue to stick their heads in the sand when truly useful innovations come around.  Is Java the bees knees?  No, but it is a useful tool if only for the fact that you can find a real solution somewhere on the web without having to shell out money just to look at it.  For the record, I&amp;#8216;d really like someone to implement something as elegant as Microsoft&amp;#8216;s web service solution in Java.  Of course, you lose that very elegance if you don&amp;#8216;t use the overpriced and underpowerd Visual Studio&amp;#8230;.&lt;/p&gt;

</description>
      <pubDate>Wed, 21 Feb 2007 18:11:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4589bda9-649b-45ab-b060-6c9a2f2efa35</guid>
      <author>bloritsch</author>
      <link>http://bloritsch.d-haven.net/articles/2007/02/21/why-i-hate-writing-microsoft-programs</link>
      <category>microsoft</category>
      <category>development</category>
      <category>users</category>
      <category>interface</category>
    </item>
  </channel>
</rss>
