<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>The Industrialization of Software</title>
    <link>http://softwareindustrialization.com/</link>
    <description>Software Industrialization is the computerization of software design and function</description>
    <language>en-us</language>
    <copyright>Mitch Barnett</copyright>
    <lastBuildDate>Tue, 22 Jul 2008 23:35:28 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>mbarnett@uniserve.com</managingEditor>
    <webMaster>mbarnett@uniserve.com</webMaster>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=cd710bef-1d16-4cc7-94d6-e69944af8078</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,cd710bef-1d16-4cc7-94d6-e69944af8078.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,cd710bef-1d16-4cc7-94d6-e69944af8078.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cd710bef-1d16-4cc7-94d6-e69944af8078</wfw:commentRss>
      <title>Web-based IDE’s and Dynamic Languages on .NET</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,cd710bef-1d16-4cc7-94d6-e69944af8078.aspx</guid>
      <link>http://softwareindustrialization.com/WebbasedIDEsAndDynamicLanguagesOnNET.aspx</link>
      <pubDate>Tue, 22 Jul 2008 23:35:28 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I was reading an interesting post at Ted Leung’s blog called,
“&lt;a href="http://www.sauria.com/blog/2008/07/20/ides-and-dynamic-languages/" target=_blank&gt;IDE’s
and Dynamic Languages&lt;/a&gt;”.&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
is interesting to me for a number of reasons.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
is how a Text Editor can be considered an IDE, even though Ted does say that &lt;strong&gt;&lt;span style="FONT-WEIGHT: normal"&gt;automatic
syntax verification and code completion&lt;/span&gt;&lt;/strong&gt; is certainly beyond a Text
Editor. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;One thing that did surprise me was no discussion on debuggers
as part of an IDE.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How can people code
using a text editor without a debugger?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
guess I have been (totally) spoiled back in the VB6 days (yes, I will admit it) that
I could step though code and when I bumped into an error, I could back up the debugger
a few statesments, make my correction and keep on stepping through.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
have never been as productive since!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Know
what I mean?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Yes, I know this says nothing
about design, but an IDE is a tool for using a programming language, yes?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So
how come we (as in developers) have so few tools or is that choice of tools? &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;According to a recent analyst report, 97% of developers on the
.NET framework use Visual Studio and over 70% use Eclipse or Eclipse based IDE’s for
Java.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As much as I love Visual Studio,
and being a .NET developer, I have no control as to what I want in an IDE.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Worse
yet, with the emerging new dynamic languages, IronRuby, IronPython and Managed Jscript,
have almost no tool support at all in Visual Studio.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;While
there have been some &lt;a href="http://devhawk.net/2008/07/17/IronPython+Post+20+Roadmap.aspx" target=_blank&gt;announcements&lt;/a&gt;,&lt;/font&gt;&lt;font color=#000000&gt; and &lt;a href="http://code.msdn.microsoft.com/IPyDD" target=_blank&gt;articles&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; and
some &lt;a href="http://codeplex.com/IronPythonStudio" target=_blank&gt;tooling&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;,
its like bolt-ons to Visual Studio and still yet to come.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;As a .NET developer, specifically a .NET web developer, I would
like to use something other than Visual Studio to develop web applications using a
dynamic language. My wish list is for something lightweight and web-based so that
I can explore using, an interactive interpreter and a simple code editor just using
a web browser.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maybe something like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/javascriptconsole.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;
&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;
&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
&lt;v:formulas&gt;
&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
&lt;/v:formulas&gt;
&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;
&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;
&lt;/v:shapetype&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;And this:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/javascripteditor.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;This was my first version of a web-based “very” lightweight IDE
that used a &lt;a href="http://softwareindustrialization.com/AWebbasedInteractiveConsoleForIronPython.aspx" target=_blank&gt;JavaScript
based interactive console&lt;/a&gt; and a &lt;a href="http://softwareindustrialization.com/AWebbasedSourceCodeEditorForIronPython.aspx" target=_blank&gt;JavaScript
based code editor&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You can download
the code from &lt;a href="http://www.codeplex.com/gsb" target=_blank&gt;Codeplex&lt;/a&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Several months have passed since I released this and I have been
working on a new version.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In that time,
other folks have started to develop similar web-based interactive consoles and code
editors.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One example is Jim Hugunin’s
DLR (interactive) Console which you can download from the &lt;a href="http://www.codeplex.com/sdlsdk/Release/ProjectReleases.aspx?ReleaseId=14254" target=_blank&gt;Silverlight
Dynamic Languages SDK&lt;/a&gt;.&amp;nbsp; &lt;/font&gt;&lt;font color=#000000&gt;I should point out that
this is a modified version.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Also note
that it uses &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt;:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/rdlrconsoleruby.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;As an old ASP.NET/AJAX/JavaScript/HTML/CSS developer, I am quite
excited about Silverlight for a number of reasons.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
am hoping the adoption rate and the tooling for this technology also increases over
time.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Silverlight development also suffers
from not being fully integrated in Visual Studio, but I should be fair as it is also
Beta.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But trying to run a Silverlight
“web” application on a web server and interacting with other lanaguages is tough at
best.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But the rich UI experience is really
quite nice compared to old school ASP.NET forms apps.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So
even after 6 months of releasing my &lt;span style="COLOR: black"&gt;lightweight dynamic
languages development environment, &lt;/span&gt;I am still torn between “tried and trued”
JavaScript and the new Silvelight.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I thought about how I would implement intellisense in a JavaScript
console and cringed at the thought of actually how to implement this.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
could see using a few of the controls from the &lt;a href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/" target=_blank&gt;AJAX
Control Toolkit&lt;/a&gt; to implement this, but it would be quite the effort.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Not
only does the DLR console support intellisense, but so does this alternative interactive
console called &lt;a href="http://code.google.com/p/silvershell/" target=_blank&gt;Silvershell&lt;/a&gt;:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/silvershell.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Wow, I am impressed!&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Here is another web based shell (that you cannot download) from &lt;a href="http://www.ironruby.info/ir/" target=_blank&gt;Oleg&amp;nbsp;Tkachenko&lt;/a&gt;:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/ironruby%20web%20shell.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Also Michael Foord has a Silverlight based&amp;nbsp;&lt;a href="http://www.trypython.org/" target=_blank&gt;Python
in the Browser&lt;/a&gt;: &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/pythoninabrowser.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Jimmy Schementi has an &lt;a href="http://silverline.schementi.com/tryruby" target=_blank&gt;IronRuby
console&lt;/a&gt;: &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/jimmyIronRuby.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Of course there are other implementations, but they are not web-based.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Nonetheless,
Joe Sox’s &lt;a href="http://www.codeproject.com/KB/edit/irontextbox2.aspx" target=_blank&gt;IronTextBox&lt;/a&gt; works
very well:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/IronTextBox.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;And the &lt;a href="http://www.codeplex.com/DlrPad" target=_blank&gt;DLR
Pad&lt;/a&gt;: &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/DLRPad.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;And Ben Hall has just released his &lt;a href="http://blog.benhall.me.uk/2008/07/announcing-ironeditor-editor-for.html" target=_blank&gt;IronEditor&lt;/a&gt;:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/IronEditor.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;So what’s my point?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
think all of these projects are great and kudos to the people that built them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
takes a lot of time and effort above and beyond just regular work hours. I have been
there myself, my hats off to you folks!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But,
there are 8 versions of the interactive console and a few versions of a basic code
editor.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I know it may be a dream, but
it would be great to collaborate with these people and write out a simple set of requirements
for what a great DLR console and code editor would be.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And
then as a virtual team,&amp;nbsp;implement it. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;After all, to a&amp;nbsp;large degree, it will be how well supported
the language is from a tools perspective that will really determine the rate of adoption.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And
right now, the tools (or IDE) experience for Dynamic Languages on .NET is severely
lacking to the point of having several people independently developing their own tooling.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;
I&lt;/span&gt;n this post I only pointed out a handful of these tools and I know there are
others, but I was really targeting web-based IDE’s.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maybe
that is an opportunity?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Or is it a pipe
dream?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I am also wondering how, in a code editor, one could hook up a
debugger to actually step through the code, regardless what Dynamic Language (or Static
or JavaScript or Silverlight) is being used?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Hopefully
I won’t have to wait until &lt;a href="http://www.microsoftpdc.com/Default.aspx" target=_blank&gt;PDC
2008&lt;/a&gt; to see what the next step is from MSFT.&amp;nbsp; Who knows maybe there is enough
interest to develop a Web-based IDE for Dynamic Languages on .NET.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=cd710bef-1d16-4cc7-94d6-e69944af8078" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,cd710bef-1d16-4cc7-94d6-e69944af8078.aspx</comments>
      <category>IronPython</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=45f74ad6-8dfb-4259-867f-2f085c3ea7fe</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,45f74ad6-8dfb-4259-867f-2f085c3ea7fe.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,45f74ad6-8dfb-4259-867f-2f085c3ea7fe.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=45f74ad6-8dfb-4259-867f-2f085c3ea7fe</wfw:commentRss>
      <title>Office 2007 and The “Killer” Ribbon</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,45f74ad6-8dfb-4259-867f-2f085c3ea7fe.aspx</guid>
      <link>http://softwareindustrialization.com/Office2007AndTheKillerRibbon.aspx</link>
      <pubDate>Fri, 27 Jun 2008 00:02:02 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;In my best &lt;a href="http://en.wikipedia.org/wiki/Sam_Kinison" target=_blank&gt;Sam
Kinison&lt;/a&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;voice, “ah ahhh ahhhhhhhhhh!!!!”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
can’t take it anymore.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I am re-installing
Office 2003 and forgetting about Office 2007.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Why?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s
the ribbon man!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;For all of the &lt;a href="http://blogs.msdn.com/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx" target=_blank&gt;usability
design&lt;/a&gt;,&lt;/font&gt;&lt;font color=#000000&gt; I find it unusable. No offense to Jensen Harris
or Microsoft, but for me, the consumer of&amp;nbsp;the product, and after trying it for
over a year,&amp;nbsp;I just can't get used to it.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;First, full disclosure, I am not a “usability designer” or a Microsoft
“hater."&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In fact, I have been making
a living as a software architect/programmer type on the Microsoft stack since 1991
and have been fairly happy with the platform (I love VS2008!) – except for the ribbon.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But
I digress.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The “ribbon.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Jensen
says one of the reasons it was invented was because people could not find the new
features when they&amp;nbsp;were added to the product.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then
he goes on to say that there are over 250 menu items and over 30 toolbars in&amp;nbsp;Word
2003, which resulted in this &lt;span style="COLOR: black"&gt;satirical view&lt;/span&gt;:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/word2003toolbars.jpg" border=0&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Now, fair enough, but I would suggest that if a “word processing”&amp;nbsp;application
has +250 menu items and over 30 toolbars, then “Toto, we're not in Kansas Anymore."&amp;nbsp;
Meaning, this is no longer a word processing application.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Honestly, Word should have been “refactored” into perhaps multiple
products or features&amp;nbsp;split into a desktop publishing&amp;nbsp;application or a whole
other suite of applications.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But instead,
the UX team went through an honorable and noble design process of solving the wrong
problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Kudos to you Jensen, but I just
can’t do it anymore.&amp;nbsp; Every time I look at the ribbon, my brain freezes - I have
to think, which means bad usability design.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;Why?&amp;nbsp; &lt;/span&gt;It boils down
to simple math.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When I see the Word 2003
menu, I see this:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/word2003standard.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Ok, I see 9 “objects.” Notice no toolbars.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That’s
right, simple is better… right?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ok when
I get crazy, and add a toolbar, I see:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/word2003standardformatting.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Even then, it is 19 objects on the toolbar and another 9 objects
for the menus.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But what do I really use?&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/word2003standardmytoolbar.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Yah, that’s right 13 objects in total!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That’s
it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The bullets, numbering and indent/outdent
are merely conveniences for me.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Note
one complaint already is that these are 2 separate toolbars and there is no way for
me to put them on one row, even though there is lots of horizontal space, I am forced
to use up two vertical rows.&amp;nbsp; That ain't usability.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;2&lt;sup&gt;nd&lt;/sup&gt; complaint:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/word2003notfullmenus.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Oh yeah, not full menus on the pull down – who designed that?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Yes,
I know what you thought, and I know the "fix", but honestly, it does not work.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Give
me the full menu every time so I do not have to click twice. In my mind, usability
is all about minimizing the choices a user has to make and minimizing the number of
mouse clicks to make those choices.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you have too many choices, maybe you are trying to solve the wrong problem?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Here is my default Word 2007 "Ribbon":&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/word2007standardmenu2.JPG" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;There are, count them,&amp;nbsp;over 60&amp;nbsp;possible choices or selections&amp;nbsp;to
make.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And that is the problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Too
many visible choices!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My poor brain needs
to parse and process each item to see if it matches what I want to do.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Whereas
before, I had a pretty good idea that in the one of the 9 menus in Word 2003, I would
be able to locate and narrow down the “&lt;a href="http://en.wikipedia.org/wiki/Decision_tree" target=_blank&gt;decision
tree&lt;/a&gt;”&lt;/font&gt;&lt;font color=#000000&gt; to find what I am looking for.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;
In fact, I got really good at in 2003 and did not have to "think" about it.&amp;nbsp;
And that's the point of good usability design - no think time.&amp;nbsp; &lt;/span&gt;In Word
2007 I have 5 times as many visible choices per "ribbon" x 8 menus, which means exposing
~480 visible objects to the user, which is way too many!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
my mind, this is a classic case of solving the wrong problem – i.e. if a “word processor”
has 480 objects, commands, menu items, whatever the heck you want to call it, give
it a name, then it is no longer, by far, a word processing application.&amp;nbsp; Something
is really wrong here.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Oh and some hidden UI gems.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When
I first fired up Word 2007, I was trying desperately to find the “options” menu item
which&amp;nbsp;has always been Tools/Options, for like 10 years its been there - if it
ain't broke...&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;After several minutes
of hunting, I had to ask one of my co-workers, where the heck is the Options option?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
is hidden at the bottom of the "magic" Microsoft Office Button.&amp;nbsp; I say magic
because a) who knew it was a button? and b) why the heck is it there?&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt; I
might as well be playing a pinball game for all the pretty widgets!&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;img src="http://softwareindustrialization.com/content/binary/word2007magic.jpg" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Funny that there is a “&lt;a href="http://office.microsoft.com/en-us/word/HA100625841033.aspx" target=_blank&gt;Locations
of Word 2003 commands in Word 2007&lt;/a&gt;” article...&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What
does that say about the user experience?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ok,
I will admit to being totally programmed by the “File” menu approach, but so is the
rest of the world and the mass majority of applications in the world (meaning everything
but Office 2007) also operates that way, so what up?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As
mentioned before, I believe the wrong problem is being solved.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;As a related&amp;nbsp;aside, it took me forever to find on the IE7
toolbar where the “find on this page” menu item was.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Have
a look at the screenshot below.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Where
would you look?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/ie7page.jpg" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;My first instinct (decision) was to look under the “Page” menu/toolbar
for "find on this page" menu item:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/ie7pagenotfound.jpg" border=0&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Nope, not there.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; Other related
page menu items are there, but not my find on this page menu item.&amp;nbsp; &lt;/span&gt;So
then of course I looked under each&amp;nbsp;menu, in random desperation,&amp;nbsp;and still
no go.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;WTH?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
had to search on the internet to find the “find on this page”&amp;nbsp;menu item&amp;nbsp;and
lo and behold it is hidden away here:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;img src="http://softwareindustrialization.com/content/binary/ie7pagefind.jpg" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Again, I&amp;nbsp;feel the wrong problem is being solved here.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;We&lt;/span&gt; have
a menu called Page and if you wanted to find something on the “Page” you would look
under the “Page” menu, yes?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I know I
live and breathe software for a living, but I just don’t get how this is usable.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Again,
I am not trying to pick on MS, but as someone that uses MS tools daily, there are
items that come up that defy any sort of logic.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And
that can be said for any software products and services company.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;What’s my point?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;While
there is a lot of hype around usability and the user experience, it does no good to
be solving the wrong the problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Rule
#1 in software development, regardless if it is usability or not, make sure the right
problem is being solved.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And if the software
industry moves towards adopting the "ribbon" as a standard user experience widget,
I think I will take early retirement!&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=45f74ad6-8dfb-4259-867f-2f085c3ea7fe" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,45f74ad6-8dfb-4259-867f-2f085c3ea7fe.aspx</comments>
      <category>Humor</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=f092e475-83bd-47b6-b6fe-ef5febbc1e64</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,f092e475-83bd-47b6-b6fe-ef5febbc1e64.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,f092e475-83bd-47b6-b6fe-ef5febbc1e64.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f092e475-83bd-47b6-b6fe-ef5febbc1e64</wfw:commentRss>
      <title>The Humble Software Engineer</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,f092e475-83bd-47b6-b6fe-ef5febbc1e64.aspx</guid>
      <link>http://softwareindustrialization.com/TheHumbleSoftwareEngineer.aspx</link>
      <pubDate>Mon, 19 May 2008 03:21:14 GMT</pubDate>
      <description>&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;“The required techniques of effective reasoning
are pretty formal, but as long as programming is done by people that don’t master
them, the software crisis will remain with us and will be considered an incurable
disease.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And you know what incurable
diseases do: they invite the quacks and charlatans in, who in this case take the form
of Software Engineering Gurus.”&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;a href="http://www.cs.utexas.edu/~EWD/ewd13xx/EWD1305.PDF" target=_blank&gt;EWD1305&lt;/a&gt;&lt;font color=#000000&gt;.&lt;b&gt; Answers
to questions from students of Software Engineering&lt;/b&gt;, &lt;i&gt;Edsger W. Dijkstra, 2000.&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;A very insightful, but somewhat harsh observation
by Professor Doctor Dijkstra.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Also consider:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;“No, I’m afraid that Computing Science has suffered
from the popularity of the Internet.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
has attracted an increasing – not to say: overwhelming! – number of students with
very little scientific inclination and in research has only strengthened the prevailing
(and somewhat vulgar) obsession with speed and capacity.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Again
from &lt;a href="http://www.cs.utexas.edu/~EWD/ewd13xx/EWD1305.PDF" target=_blank&gt;EWD1305&lt;/a&gt;.&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;As an aside, &lt;a href="http://en.wikipedia.org/wiki/Edsger_Dijkstra"&gt;Dijkstra&lt;/a&gt;,&lt;/font&gt;&lt;font color=#000000&gt; and
as some of you may have heard of &lt;a href="http://en.wikipedia.org/wiki/Dijkstra's_algorithm" target=_blank&gt;Dijkstra’s
algorithm&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;, made a number of fundamental contributions
to the area of programming languages and &lt;a href="http://en.wikipedia.org/wiki/Turing_Award" target=_blank&gt;received
the Turing Award in 1972&lt;/a&gt;.&amp;nbsp; &lt;/font&gt;&lt;font color=#000000&gt;You can read his &lt;a href="http://www.cs.utexas.edu/~EWD/indexBibTeX.html" target=_blank&gt;notes
diary on line&lt;/a&gt; &lt;/font&gt;&lt;font color=#000000&gt;which makes for fascinating reading.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Why did I quote Dijkstra?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Well,
I tend to agree with his view and &lt;a href="http://softwareindustrialization.com/TheTruthAboutSoftwareEngineering.aspx" target=_blank&gt;as
described in my previous post&lt;/a&gt;,&lt;/font&gt;&lt;font color=#000000&gt; I don’t think we, as
Software Engineers, know how to perform Software Engineering.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
fact, I don’t even think Software Engineering really exists in our world today – and
in some respects, we seem to be moving farther away from it instead of getting closer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That
is to say &lt;a href="http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html" target=_blank&gt;our
predilection for programming languages blinds us&lt;/a&gt; to what our real focus as Software
Engineers should be.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Let me be more succinct.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When
I say Software Engineering, I am picking specifically on that huge black hole called
software design – i.e. we don’t know how to “design” software.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We
sure know how to program the heck out of it, with our &lt;a href="http://en.wikipedia.org/wiki/List_of_programming_languages" target=_blank&gt;humungous
list of programming languages&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;, but what techniques
and tools do we have for “designing” the software to be programmed?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How
do we model our design?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How do we prove
(i.e. verify) our design is correct?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How
do we simulate our design without coding it?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ponder.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Designing software is all about designing “abstractions.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Software
is built on abstractions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Programming
languages are all about implementing abstractions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But
where do those abstractions come from and how do we describe or model (i.e. design)
those abstractions? &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA style="COLOR: black; mso-ansi-language: EN-CA"&gt;Let’s look at some
approaches to designing software “proper.”&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Formal_methods" target=_blank&gt;Formal
methods&lt;/a&gt; is an approach to software design.&amp;nbsp; From Wikipedia, “In computer
science and software engineering, formal methods are mathematically-based techniques
for the specification, development and verification of software and hardware systems.&amp;nbsp;
The use of formal methods for software and hardware design is motivated by the expectation
that, as in other engineering disciplines, performing appropriate mathematical analyses
can contribute to the reliability and robustness of a design.&amp;nbsp; However, the high
cost of using formal methods means that they are usually only used in the development
of high-integrity systems, where safety or security is important.”&lt;/span&gt;&lt;span style="COLOR: #003300"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;“&lt;a href="http://en.wikipedia.org/wiki/Hoare_logic" target=_blank&gt;Hoare
logic&lt;/a&gt; (also known as Floyd–Hoare logic) is a formal system developed by the British
computer scientist C. A. R. Hoare, and subsequently refined by Hoare and other researchers.
It was published in Hoare's 1969 paper "An axiomatic basis for computer programming".
The purpose of the system is to provide a set of logical rules in order to reason
about the correctness of computer programs with the rigor of mathematical logic."&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/span&gt;&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Another approach is &lt;a href="http://en.wikipedia.org/wiki/Program_derivation" target=_blank&gt;program
derivation&lt;/a&gt;, “In computer science, program derivation is the derivation of a program
from its specification, by mathematical means.”&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span&gt;&lt;font color=#000000&gt;&lt;strong&gt;“&lt;/strong&gt;&lt;a href=" http://en.wikipedia.org/wiki/Model_checking" target=_blank temp_href=" http://en.wikipedia.org/wiki/Model_checking"&gt;Model
checking&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; is the process of checking whether a given
structure is a model of a given logical formula. The concept is general and applies
to all kinds of logics and suitable structures. A simple model-checking problem is
testing whether a given formula in the propositional logic is satisfied by a given
structure.”&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As
an aside, you will note that the Unified Modeling Language (UML) is not on the list
of model checkers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Interestingly enough,
any UML diagram cannot be checked (i.e. verified) for correctness, &lt;a href="http://littletutorials.com/2008/05/15/13-reasons-for-umls-descent-into-darkness/" target=_blank&gt;so
what good is UML?&lt;/a&gt;&amp;nbsp; &lt;/font&gt;&lt;font color=#000000&gt;OK, I am being a bit facetious,
but for the most part, I have found this similar to Dilbertisms – they are satirical
truths.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;One approach that is familiar to me is, “&lt;a href="http://en.wikipedia.org/wiki/Design_by_contract" target=_blank&gt;Design
by Contract&lt;/a&gt;, DbC or Programming by Contract is an approach to designing computer
software. It prescribes that software designers should define precise verifiable interface
specifications for software components based upon the theory of abstract data types
and the conceptual metaphor of a business contract."&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The
metaphor comes from business life, where a "client" and a "supplier" agree on a "contract” &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;However, while a lot of companies talk about
Design by Contract, very few, at least in my experience, actually perform this and
particularly at the level required for it to be beneficial.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Further,
while it is a “clear metaphor to guide the design process” that in of itself makes
it hard to simulate the design of a software system or “prove” (i.e. verify) the correctness
of a software system, before writing any code.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;So how do we design software that meets the criteria
of modeling the software and simulate the running of the software to verify its correctness?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;After
much research, I came across one approach that seems to make the most sense to me,
in which why I will explain shortly.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;First,
an introduction to &lt;a href="http://alloy.mit.edu/index.php" target=_blank&gt;Alloy and
Alloy Analyzer&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; from the &lt;a href="http://sdg.csail.mit.edu/" target=_blank&gt;Software
Design Group at MIT&lt;/a&gt;.&lt;/font&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color=#000000&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;“Alloy is a structural modelling language based
on first-order logic, for expressing complex structural constraints and behaviour.
The Alloy Analyzer is a constraint solver that provides fully automatic simulation
and checking.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Our philosophy is
to couple lightweight design and specification notations with powerful tools.”&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;There is a book called, “&lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;amp;tid=10928" target=_blank&gt;Software
Abstractions&lt;/a&gt;” by Daniel Jackson&lt;/font&gt;&lt;font color=#000000&gt; on Alloy and Alloy
Analyzer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You can also download a few
chapters of the book.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In the preface
chapter, I was particularly impressed with these two paragraphs, &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;font color=#000000&gt;&lt;span lang=EN-CA&gt;“&lt;/span&gt;&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;The
experience of exploring a software model with an automatic analyzer is at once thrilling
and humiliating. Most modellers have had the benefit of review by colleagues; it’s
a sure way to find flaws and catch omissions. Few modellers, however, have had the
experience of subjecting their models to continual, automatic review. Building a model
incrementally with an analyzer, simulating and checking as you go along, is a very
different experience from using pencil and paper alone. The first reaction tends to
be amazement: modeling is much more fun when you get instant, visual feedback. When
you simulate a partial model, you see examples immediately that suggest new constraints
to be added.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;Then
the sense of humiliation sets in, as you discover that there’s almost nothing you
can do right. What you write down doesn’t mean exactly what you think it means. And
when it does, it doesn’t have the consequences you expected. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Automatic
analysis tools are far more ruthless than human reviewers. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;I
now cringe at the thought of all the models I wrote (and even published) that were
never analyzed, as I know how error- ridden they must be. Slowly but surely the tool
teaches you to make fewer and fewer errors. Your sense of confidence in your modeling
ability (and in your models!) grows.”&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;Let
me step back in time for a moment to illustrate to you why these two paragraphs are
of particular interest to me.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; Back in the 80's,
i&lt;/span&gt;n the electronics field, I went through this type of “industrialization” first
hand with electronics circuit design.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;At
first we drafted our circuit designs on real blueprint paper, we then built some sketchy
prototypes (anyone remember breadboards?), designed our tests and implemented test
harnesses (i.e. scopes, analyzers, generators, etc.) and tested the design “after”
it was implemented.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Note that it may
take a number of manual iterations or cycles to get the design right as well.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;I
would say this pretty much sums up the same approach we use to design software today.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I.e.
“sketch-up" some designs, start coding right away, spend an inordinate amount of time
“refactoring” and developing test after test after test and then in the end, in some
cases, figuring out that, guess what? all of the tests simply validate and verify
that the software design is so flawed from the original specification (read: sketch-up)
that we have to start over again.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Whether
the process is called TDD, Agile, iterative, waterfall, whatever, in the end it really
does not matter as the process itself is flawed because it completely misunderstands
the role of software design and therefore the result can only be &lt;a href="http://softwareindustrialization.com/TheSorryStateOfOurSoftwareIndustryIsThereHope.aspx" target=_blank&gt;the
sorry state of software in our industry&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;font color=#000000&gt;&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But
I digress.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;Then
the electronics design world was revolutionized when SPICE (&lt;a href="http://en.wikipedia.org/wiki/SPICE" target=_blank&gt;Simulation
Program with Integrated Circuit Emphasis&lt;/a&gt;)&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;came
along.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It ran on a computer that not
only allowed you to design your electronic circuits, but also simulated the implemented
design (i.e. an instance) where you hooked up your “virtual” test instruments, in
software, and completely emulated the circuited deign without ever having to breadboard
the circuit. I personally lived that era and is one of the main reasons, after spending
17 years designing and programming software since, have come to the humble realization,
there must be a better way.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;The
industrialization part of SPICE meant that we were moving from a completely manual
process, in which we could only verify the circuit design after the fact, to dramatically
reducing the cycle time to design and verify the design of an electronic circuit without
ever expending any tooling or material costs whatsoever.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Further,
you could do numerous design iterations basically for free, plus apply thousands (billions!)
of test cases to the simulated design that we would never be able to achieve manually.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
was modern day industrialization in real practice. We certainly can’t do design iterations
in our software world for free today.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;From
Software Abstractions, I love the lines, “then the sense of humiliation sets in, as
you discover that there’s almost nothing you can do right. What you write down doesn’t
mean exactly what you think it means. And when it does, it doesn’t have the consequences
you expected. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Automatic analysis tools
are far more ruthless than human reviewers.” &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;This
is exactly what happened to us electronic circuit designers when we first started
using SPICE.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We thought we really could
design analog circuits and as it turned out, even some of our basic design assumptions
were completely flawed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We struggled
at first to understand what the heck we were doing was so wrong.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then
after careful analysis, tuning and testing of the design models, we started seeing
the errors or our ways and our designs became more exact, precise and tolerant of
numerous error conditions.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It was truly
a humbling experience.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;And
that’s the point of this post.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In my
opinion, we in the software design community could use some humbling.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
am pretty sure that most of our designs, &lt;a href="http://reddit.com/r/programming/" target=_blank&gt;regardless
of programming language used&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;,
are majorly flawed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We, meaning so called
Software Engineers,&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;find this out after
being in the field for several years, hacking (or is that tooling?) away in our favourite
programming languages without any real verifiable proof that our design is the right
one or even correct or would even work before we started coding.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;Maybe
we are all in denial.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maybe I am over
generalizing, but having been designing and programming software for many years, I
feel I need to reset and look at software design from a much more formal perspective,
hence this intro to Alloy and Alloy Analyzer.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Both
the technique and tools embody what I personally experienced in another industry that
underwent nothing short of a revolution in the way how electronic circuits are designed
(i.e. industrialization).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One could say
today that the electronics design industry has been fully industrialized. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;Software
industrialization will occur one day; history will repeat itself, in the same way
that it happened in the electronics design world&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;(and
other engineering disciplines) will also happen to the software design world.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
fact, it already is happening today.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Software
design techniques and tools like Alloy and Alloy Analyzer are making it possible to
design software and verify the design of the software before the software is actually
implemented (i.e. coded).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And that is
what I call the industrialization of software.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;
&lt;span lang=EN-CA style="mso-bidi-font-family: WarnockPro-Regular"&gt;&lt;font color=#000000&gt;I
ordered the Software Abstractions book, downloaded the tools and tutorials and will
report back my findings sometime in the future.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Needless
to say, this is the first time, in a long time, I have become excited again about
being in the software development industry. &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=f092e475-83bd-47b6-b6fe-ef5febbc1e64" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,f092e475-83bd-47b6-b6fe-ef5febbc1e64.aspx</comments>
      <category>Design</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=0e2aa816-91f6-47d5-849b-d16fcba05999</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,0e2aa816-91f6-47d5-849b-d16fcba05999.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,0e2aa816-91f6-47d5-849b-d16fcba05999.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0e2aa816-91f6-47d5-849b-d16fcba05999</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>The Truth about Software Engineering</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,0e2aa816-91f6-47d5-849b-d16fcba05999.aspx</guid>
      <link>http://softwareindustrialization.com/TheTruthAboutSoftwareEngineering.aspx</link>
      <pubDate>Sat, 03 May 2008 21:57:29 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;The truth is... and as much as it breaks my heart
to say this professionally, there is no such thing as &lt;a href="http://en.wikipedia.org/wiki/Software_engineering" target=_blank&gt;Software
Engineering&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;How can I make this claim?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;While
I can tell you that I have been employed in the software development industry since
1991, that I have graduated from a two year post graduate program in Software Engineering
Management, which is now incorporated as a Masters of Software Engineering at the
University of Calgary, that I have worked on dozens of small and large commercial
projects in North America, including my own &lt;a href="http://www.codeplex.com/gsb" target=_blank&gt;open
source project&lt;/a&gt;,&lt;/font&gt;&lt;font color=#000000&gt; that I have &lt;a href="http://www.codinghorror.com/blog/archives/001108.html" target=_blank&gt;read
dozen’s of wonderful textbooks&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; on the very subject
of software engineering, still might not convince you I am telling the truth.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;So how about I make a claim that I defy anyone
to dispute.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I make the claim that there
is no one on the face of this planet today that can predict the outcome (i.e. schedule,
cost, resources, quality, etc.) of ANY software project of any significant size (like
&amp;gt;10K SLOC) with any sort of accuracy (I will be generous and say + 25% as we all
know it will &lt;u&gt;never&lt;/u&gt; be a negative percentage).&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;If you happen to get lucky and actually hit the
target once, I make the further claim that your &lt;a href="http://en.wikipedia.org/wiki/Gambler%27s_fallacy" target=_blank&gt;odds
are far better in Vegas&lt;/a&gt; then they are in the software world for repeatability
– that is repeatability for success, not failure – which I would argue that we are
very good at.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Big deal you say.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Vast
amounts of documentation have been written on the subject of Software Engineering
and “how to” avoid mistakes and failures.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
fact, for every ailment, we have a remedy we can trot out to counter the ailment.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But
we still make (the same) mistakes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In
fact, just the other day, &lt;a href="http://softwareindustrialization.com/AeroplanAModernWebSiteIsDownFor2Days.aspx" target=_blank&gt;a
very popular web site was down for two days&lt;/a&gt; that has kicked off this type of tirade
on my blog again.&amp;nbsp; In fact, "&lt;a href="http://en.wikipedia.org/wiki/Danny_Glover" target=_blank&gt;I
am too old for this shit&lt;/a&gt;".&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;I love &lt;a href=" http://www.stevemcconnell.com/books.htm" target=_blank temp_href=" http://www.stevemcconnell.com/books.htm"&gt;Steve
McConnell’s books&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;, as I do Robert Glass’s, “&lt;a href="http://www.amazon.com/gp/product/0321117425/ref=cm_cr_pr_product_top" target=_blank&gt;Facts
and Fallacies of Software Engineering&lt;/a&gt;.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt; It
contains 55 facts and 10 fallacies.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Anyone
that has been “in the biz” for any length of time is likely to have made some or all
of the mistakes listed in the book.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
can admit I fall into the category of having made all of those mistakes and then some.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And &lt;a href="http://softwareindustrialization.com/TheSorryStateOfOurSoftwareIndustryIsThereHope.aspx" target=_blank&gt;it
is not just me&lt;/a&gt;.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;What gives then?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Why
is developing successful software so impossible to predict and repeat?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of
sure, all of those books (and experience) outline and recommend treatments, but I
sometimes feel we are no closer than the &lt;a href="http://www.princeton.edu/~mike/articles/sweroots/sweroots.pdf"&gt;founders
of the term software engineering&lt;/a&gt;.&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Of
course, there are the people that point out that software development is much as art
as is it is engineering (remember I said it wasn’t engineering – even though that
breaks my heart to say it, given what &lt;a href="http://softwareindustrialization.com/PreparingTheWorldForSoftwareEngineeringPart1.aspx" target=_blank&gt;I
have written on this blog in the past&lt;/a&gt;) and that Software Engineering is completely
a non-deterministic activity, but hey, so is life.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Stepping back a bit, I would say that our world
of software development is unindustrialized compared to other industrialised “engineering”
disciplines such as civil, chemical, electrical, electronics, mechanical engineering,
etc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This is simply based on a time line
which we can do nothing about other than wait it out.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Well, I am not a patient guy and would like to
do something about this.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One thought
that has occurred to me, which I believe is of direct relevance to Software Engineering, &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;is
how to do we “visualize” software?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Specifically,
how do we visualize the “design” of software and how do we visualize the “verification”
of the built software?&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;The closest answer I have seen is this:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/software%20design%20at%20its%20finest.JPG" border=0&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;&lt;span lang=EN-CA&gt;Ok, so a little tongue in cheek, but ain’t that
the truth about Software Engineering?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; T&lt;/span&gt;he
title of this blog post did not lie :-)&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;Note that other engineering disciplines all have
ways of “visualizing” the design of their domain.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Even
designing &lt;a href="http://en.wikipedia.org/wiki/DNA" target=_blank&gt;DNA strands&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; and &lt;a href="http://en.wikipedia.org/wiki/Application-specific_integrated_circuit" target=_blank&gt;application
specific integrated circuits&lt;/a&gt; (ASIC)&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt; deal with
+100 million objects.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What is truly ironic
about this is that most of these disciplines use &lt;a href="http://en.wikipedia.org/wiki/CAD" target=_blank&gt;computer
software (CAD)&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; to model and verify their designs.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;What’s my point?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
believe that we are thinking about “visualizing” software the wrong way.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer-aided_software_engineering" target=_blank&gt;CASE
tools in the early 90’s&lt;/a&gt; are proof of this&lt;/font&gt;&lt;font color=#000000&gt; as I would
say that &lt;a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target=_blank&gt;UML&lt;/a&gt; &lt;/font&gt;&lt;font color=#000000&gt;is
soon to follow the same fate.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Why?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Because,
in my opinion, UML stickman and the other funny looking symbols do not visualize the
design of software nor the verification of software – it is simply “&lt;a href="http://en.wikipedia.org/wiki/Lost_in_Translation_(film)" target=_blank&gt;Lost
in Translation&lt;/a&gt;.”&lt;/font&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font color=#000000&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;How can we design software on any scale if we
can’t model it or visualize it with 100% fidelity?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The
answer is that we can’t.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The closest
we can get to modelling or visualizing software is using the same text editor we have
been using for over 50 years and using our &lt;a href="http://reddit.com/r/programming/" target=_blank&gt;favourite
programming language&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; to design software.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ergo
- the source code is the design.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Certainly
a favourite topic of &lt;a href="http://www.developerdotstar.com/mag/articles/reeves_design_main.html"&gt;Jack
Reeves&lt;/a&gt;.&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; B&lt;/span&gt;tw,
I happen to concur, which is also the fundamental problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Visualizing
10,000 lines of source code in any programming language is (far and away) beyond any
of us mere mortals that are good for about &lt;a href="http://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two" target=_blank&gt;7
+ - 2 objects&lt;/a&gt; at any given moment in time.&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;It is on this basis that I feel we are way (WAY!)
off the target path for Software Engineering and the root cause of why there is no
such thing today as software engineering.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We
have very poor approximations of Software Engineering, still using, comparatively
speaking, the &lt;font face=Verdana&gt;&lt;font size=2&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face=Verdana size=2&gt;equivalent
of the &lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Stone_Age" target=_blank&gt;&lt;font face=Verdana size=2&gt;Stone
Age&lt;/font&gt;&lt;/a&gt;&lt;font face=Verdana size=2&gt; hammer and chisel&lt;/font&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Yet
it is the year 2008 – what’s wrong with our industry?&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span lang=EN-CA&gt;&lt;font color=#000000&gt;How should we visualize software, both the design
and (mathematical) verification (i.e. proof) of the runtime executable?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;
How will &lt;font face="Times New Roman" size=3&gt;&lt;font face=Verdana size=2&gt;visualizing
software improve&lt;/font&gt; &lt;/font&gt;Software Engineering?&amp;nbsp; How can we make the industrialization
of software happen?&amp;nbsp; &lt;/span&gt;Subject of my next post.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=0e2aa816-91f6-47d5-849b-d16fcba05999" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,0e2aa816-91f6-47d5-849b-d16fcba05999.aspx</comments>
      <category>Industrialization</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=599e73f6-ce29-42a1-883e-49f048706f0e</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,599e73f6-ce29-42a1-883e-49f048706f0e.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,599e73f6-ce29-42a1-883e-49f048706f0e.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=599e73f6-ce29-42a1-883e-49f048706f0e</wfw:commentRss>
      <title>Aeroplan – A Modern Web Site is Down for 2 days!</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,599e73f6-ce29-42a1-883e-49f048706f0e.aspx</guid>
      <link>http://softwareindustrialization.com/AeroplanAModernWebSiteIsDownFor2Days.aspx</link>
      <pubDate>Mon, 28 Apr 2008 03:43:52 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;OK, I promised I would be good.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;
At the beginning of this year, &lt;/span&gt;I made myself a promise not to be a cynical
“you know what” when it comes to the world of software development.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Lord
knows I have seen my fare share of Dilbertesque wackyisms over the last 17 years in
this biz.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Heck, I even contributed back
to the industry with my own &lt;a href="http://www.codeplex.com/gsb" target=_blank&gt;open
source project.&lt;/a&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I felt it was giving
back to the software world, that has been so kind to me, but then again maybe it is
some form of redemption.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I don’t know.&amp;nbsp;
Maybe that is why I have had only one post so far this year.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;But… there are still some things that defy any sort of rationale,
logical&amp;nbsp;explanation whatsoever.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;For
example, I am a frequent flyer (~25,000 miles per quarter) and so I keep pretty close
track of those miles on my &lt;a href="http://www.aeroplan.com/" target=_blank&gt;Aeroplan&lt;/a&gt;.&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;L&lt;/span&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;ast
week, I got back from a business trip to LA and 
&lt;st1:place w:st="on"&gt;
&lt;st1:City w:st="on"&gt;Medford&lt;/st1:City&gt;
, 
&lt;st1:State w:st="on"&gt;Oregon&lt;/st1:State&gt;
&lt;/st1:place&gt;
.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;st1:State w:st="on"&gt;Oregon&lt;/st1:State&gt;
, truly a beautiful place, but not as beautiful as the 
&lt;st1:place w:st="on"&gt;
&lt;a href="http://www.gibsons.ca/aboutGibsons.html" target=_blank&gt;
&lt;st1:PlaceName w:st="on"&gt;Sunshine&lt;/st1:PlaceName&gt;
&lt;st1:PlaceType w:st="on"&gt;Coast&lt;/st1:PlaceType&gt;
&lt;/a&gt;
&lt;/st1:place&gt;
, where I live, but I am biased.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;So, as usual on Friday, I pop over to the Aeroplan site and am
greeted with the following web page.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&lt;/font&gt;
&lt;/o:p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/aeroplan.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Now, I know from time to time, there are outages, and maybe it
would last an hour or so, cause how serious could it be?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Pop
in a new drive, slide in a new web server in the farm, switch failed, power supply
failed – but hey, even those would actually not cause an outage, cause as any data
center system engineer knows, these are all “hot swappable” in the year 2008. Well
it is Sunday at 9pm and the outage is still in effect.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now
what in the heck would cause an outage of a fairly heavy traffic laden web site for
over two days?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I can’t imagine.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Note the site says, “Following a routine maintenance procedure,
we experienced a system failure.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;A system
failure?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Folks this is a catastrophe
of biblical proportions in web terms&amp;nbsp;for the year 2008.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;A
rip in the time space continuum has occurred over there at Aeroplan.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;No
halfway decent web site goes down for two days.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;
E&lt;/span&gt;ven my own rinky dinky web log here that I host on an ancient 1990 Pentium
III 600 MHz piece of you know what has not even seen 2 days of outage – ever - even
when my power supply blew up and I had to shoe horn the ol’ mother board into a brand
new case only took 6 hours.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;So what the heck could have happened?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
can only guess that somehow the entire data center melted down and there is no back
up of the source code and somewhere someone, or a group of people are madly waiting
until Monday morning to get into a bank’s safety deposit box to get the latest tape
back up.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Like I just can’t image what
it could be.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Can you?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;What will be really surprising to me&amp;nbsp;come&amp;nbsp;Monday morning&amp;nbsp;and
Aeroplan is still not up.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If that is
the case, I should call Aeroplan – I will host their site for a mere $10,000 per month
(cheap!) and I guarantee that their site will never be down for longer than 24 hours,
or they can have all of their money back.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How
about that Areoplan, do we have a deal?&amp;nbsp; Oh by the way, I might upgrade my PIII
to host it on :-)&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;font color=#000000&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black"&gt;But seriously, man, you are giving us professionals a bad
name in our biz for not having your sh*t together.&amp;nbsp; There is absolutely no excuse
whatsoever, in the year 2008, for your main business, i.e. your web site, to go down
for 2 days!&amp;nbsp; Either you do not know what the heck you are doing or you just don't
care Mr.Aeroplan - either case, if you did not "own" my aero miles, I would switch
to a new provider in a flash for such blatant shoddiness.&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="COLOR: black"&gt;Updated Monday April 28 - Aeroplan manages to get their
web site back up and running with little explanation.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/font&gt;&lt;img src="http://softwareindustrialization.com/content/binary/aeroplan restored.png" border=0&gt;&gt;
&lt;p&gt;
However, I still see that my Aeroplan miles I collected from the previous week have
not been updated on the site.&amp;nbsp; We will see if my Aeroplan Miles were affected
or not...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=599e73f6-ce29-42a1-883e-49f048706f0e" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,599e73f6-ce29-42a1-883e-49f048706f0e.aspx</comments>
      <category>Failures</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=79250b9b-ec20-4951-a51a-8c7a78111ec8</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,79250b9b-ec20-4951-a51a-8c7a78111ec8.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,79250b9b-ec20-4951-a51a-8c7a78111ec8.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=79250b9b-ec20-4951-a51a-8c7a78111ec8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://softwareindustrialization.com/content/binary/gsb_banner.png" border="0" />
        </p>
        <p>
Official website: <a href="http://globalsystembuilder.com" target="_blank">http://globalsystembuilder.com</a>  
Download source from CodePlex: <a href="http://www.codeplex.com/gsb" target="_blank">http://www.codeplex.com/gsb</a></p>
        <img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=79250b9b-ec20-4951-a51a-8c7a78111ec8" />
      </body>
      <title>Global System Builder available for download</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,79250b9b-ec20-4951-a51a-8c7a78111ec8.aspx</guid>
      <link>http://softwareindustrialization.com/GlobalSystemBuilderAvailableForDownload.aspx</link>
      <pubDate>Wed, 30 Jan 2008 19:48:57 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/gsb_banner.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Official website: &lt;a href="http://globalsystembuilder.com" target=_blank&gt;http://globalsystembuilder.com&lt;/a&gt;&amp;nbsp;&amp;nbsp;
Download source from CodePlex: &lt;a href="http://www.codeplex.com/gsb" target=_blank&gt;http://www.codeplex.com/gsb&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=79250b9b-ec20-4951-a51a-8c7a78111ec8" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,79250b9b-ec20-4951-a51a-8c7a78111ec8.aspx</comments>
      <category>IronPython</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=b612b9fb-5d4c-495b-8ec0-2de861a44afb</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,b612b9fb-5d4c-495b-8ec0-2de861a44afb.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,b612b9fb-5d4c-495b-8ec0-2de861a44afb.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b612b9fb-5d4c-495b-8ec0-2de861a44afb</wfw:commentRss>
      <title>3D Map-based User Interfaces</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,b612b9fb-5d4c-495b-8ec0-2de861a44afb.aspx</guid>
      <link>http://softwareindustrialization.com/3DMapbasedUserInterfaces.aspx</link>
      <pubDate>Fri, 04 Jan 2008 23:57:04 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;I am working on a new user interface for my web-based IDE, called &lt;a href="http://softwareindustrialization.com/AWebbasedIDEForDistributedProgrammingUsingIronPython.aspx" target=_blank&gt;Global
System Builder&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It will&amp;nbsp;use
a 3D map-based user interface.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So how
does a 3D map-based user interface&amp;nbsp;work with an Integrated Development Environment?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
will see in the following posts.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;First
step is the evaluation.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;
&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;
&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
&lt;v:formulas&gt;
&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
&lt;/v:formulas&gt;
&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;
&lt;/v:shapetype&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: Calibri; mso-no-proof: yes; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&amp;nbsp;&lt;img src="http://softwareindustrialization.com/content/binary/realcalgarytower.png" border=0&gt;
&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
&lt;v:formulas&gt;
&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
&lt;/v:formulas&gt;
&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;
&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;
&lt;/v:shapetype&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;I
lived in 
&lt;st1:place w:st="on"&gt;
&lt;st1:City w:st="on"&gt;Calgary&lt;/st1:City&gt;
, 
&lt;st1:State w:st="on"&gt;Alberta&lt;/st1:State&gt;
, 
&lt;st1:country-region w:st="on"&gt;Canada&lt;/st1:country-region&gt;
&lt;/st1:place&gt;
for quite a few years and know the downtown area quite well.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
of its famous landmarks is the 
&lt;st1:place w:st="on"&gt;
&lt;a href="http://en.wikipedia.org/wiki/Calgary_Tower" target=_blank&gt;
&lt;st1:PlaceName w:st="on"&gt;Calgary&lt;/st1:PlaceName&gt;
&lt;st1:PlaceType w:st="on"&gt;Tower&lt;/st1:PlaceType&gt;
&lt;/a&gt;
&lt;/st1:place&gt;
. So I wanted to see how the two major (free) players compared to the real thing (above).&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;img src="http://softwareindustrialization.com/content/binary/ge3dcalgarytower.png" border=0&gt;&lt;img src="http://softwareindustrialization.com/content/binary/ve3dcalgarytower.png" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Check this out, &lt;a href="http://earth.google.com/" target=_blank&gt;Google
Earth&lt;/a&gt; on the left and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E9298080-50C4-4F2E-9FC4-4009074996BA&amp;amp;displaylang=en" target=_blank&gt;Virtual
Earth 3D&lt;/a&gt; on the right.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Hmmm… interesting.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Google
Earth’s picture is a &lt;a href="http://sketchup.google.com/" target=_blank&gt;SketchUp&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; drawing.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now
I have played with SketchUp and it is incredibly powerful to model 3D – including
the interior of a building.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However,
not the case with the 
&lt;st1:place w:st="on"&gt;
&lt;st1:PlaceName w:st="on"&gt;Calgary&lt;/st1:PlaceName&gt;
&lt;st1:PlaceType w:st="on"&gt;Tower&lt;/st1:PlaceType&gt;
&lt;/st1:place&gt;
here.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You may want to look at the &lt;a href="http://sketchup.google.com/3dwarehouse/" target=_blank&gt;Google’s
3D Warehouse&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; as they have a nice inventory of 3D objects.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Now Virtual Earth’s image on the right is interesting as the &lt;a href="http://www.vexcel.com/" target=_blank&gt;software
used by MS&lt;/a&gt; to gather and make the 3D images &lt;/font&gt;&lt;font color=#000000&gt;got messed
up a bit on the 
&lt;st1:place w:st="on"&gt;
&lt;st1:PlaceName w:st="on"&gt;Calgary&lt;/st1:PlaceName&gt;
&lt;st1:PlaceType w:st="on"&gt;Tower&lt;/st1:PlaceType&gt;
&lt;/st1:place&gt;
.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However, if you look past that and
compare the background buildings in the images, Microsoft’s sure looks more realistic.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Microsoft has also acquired a 3D modeling tool like Google’s SketchUp
called &lt;a href="http://www.3dvia.com/home.php" target=_blank&gt;3DVIA&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
appears to have most of the same capabilities as SketchUp, but I need to spend more
time with it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And similarly to Google’s
warehouse, Microsoft has a way to &lt;a href="http://virtualearth.spaces.live.com/Blog/cns!2BBC66E99FDCDB98!10172.entry" target=_blank&gt;place
your models on Virtual Earth&lt;/a&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;So how do the technologies compare?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Well,
Microsoft has opted for a web-based approach using a JavaScript control that &lt;a href="http://dev.live.com/virtualearth/sdk/" target=_blank&gt;you
can play with live&lt;/a&gt; and see the source.&amp;nbsp; &lt;/font&gt;&lt;font color=#000000&gt;Google
Earth is a thick-client exe and its SDK is actually a &lt;a href="http://earth.google.com/comapi/" target=_blank&gt;COM
interface&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; with a &lt;a href="http://tropicalwatch.googlecode.com/svn/trunk/GoogleEarthCOMWrapper/" target=_blank&gt;C#
.NET wrapper&lt;/a&gt; that you can get,&lt;/font&gt;&lt;font color=#000000&gt; which you will need
a Subversion client like &lt;a href="http://tortoisesvn.net/downloads" target=_blank&gt;TortoiseSVN&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; in
order to get the source.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Having developed both, I must say that the Google thick client
is much smoother and&amp;nbsp;quicker than the Windows web-based client.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Meaning
that when you zoom in, rotate, pan, etc., and play around with the 3D features, Google
Earth’s movements are much smoother and seem to download and render much&amp;nbsp;quicker
than Virtual Earth.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now this could be
my internet connection speed to the data centers, the number of&amp;nbsp;hops or … a whole
bunch of things, but, it still leaves me with this impression.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Other than that, there a very specific feature in one product
that is not in the other which will make the decision for me.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.gearthblog.com/blog/archives/2007/05/virtual_earth_3d_com_1.html" target=_blank&gt;Wonder
what it is&lt;/a&gt;?&lt;/font&gt;&lt;font color=#000000&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Finally, a company called 3Dconnexion&lt;/font&gt;&lt;font color=#000000&gt; has
developed a 3D mouse called &lt;a href="http://www.3dconnexion.com/3dmouse/spacenavigator.php" target=_blank&gt;SpaceNavigator&lt;/a&gt; that
can fly around and through these 3D worlds and models.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
have one on order and can’t wait to try it out!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you want to see what it can do, have a look at this interesting “fly by:” &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;object height=355 width=425&gt;
&lt;param name="movie" value="http://www.youtube.com/v/lkTMMJZI65M&amp;amp;rel=1"&gt;
&lt;param name="wmode" value="transparent"&gt;
&lt;embed src="http://www.youtube.com/v/lkTMMJZI65M&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;I did&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;look at &lt;a href="http://worldwind.arc.nasa.gov/index.html" target=_blank&gt;NASA’s
World Wind&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; and it is really impressive, but I have
not had enough time to evaluate whether it meets my needs or not.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
immediate short coming is the inability to draw and import a 3D model, or so it seems…&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;
&lt;font color=#000000&gt;Still trying to figure out how a 3D map-based user interface will
work with a programmers IDE?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Stay tuned.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://softwareindustrialization.com/aggbug.ashx?id=b612b9fb-5d4c-495b-8ec0-2de861a44afb" /&gt;</description>
      <comments>http://softwareindustrialization.com/CommentView,guid,b612b9fb-5d4c-495b-8ec0-2de861a44afb.aspx</comments>
      <category>Futures</category>
    </item>
    <item>
      <trackback:ping>http://softwareindustrialization.com/Trackback.aspx?guid=17b8ad49-b6d5-4acb-8982-bf47a6f99890</trackback:ping>
      <pingback:server>http://softwareindustrialization.com/pingback.aspx</pingback:server>
      <pingback:target>http://softwareindustrialization.com/PermaLink,guid,17b8ad49-b6d5-4acb-8982-bf47a6f99890.aspx</pingback:target>
      <dc:creator>Mitch Barnett</dc:creator>
      <wfw:comment>http://softwareindustrialization.com/CommentView,guid,17b8ad49-b6d5-4acb-8982-bf47a6f99890.aspx</wfw:comment>
      <wfw:commentRss>http://softwareindustrialization.com/SyndicationService.asmx/GetEntryCommentsRss?guid=17b8ad49-b6d5-4acb-8982-bf47a6f99890</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>Preparing the World for Software Engineering Part 2</title>
      <guid isPermaLink="false">http://softwareindustrialization.com/PermaLink,guid,17b8ad49-b6d5-4acb-8982-bf47a6f99890.aspx</guid>
      <link>http://softwareindustrialization.com/PreparingTheWorldForSoftwareEngineeringPart2.aspx</link>
      <pubDate>Thu, 27 Sep 2007 03:09:21 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;In &lt;a href="http://softwareindustrialization.com/PreparingTheWorldForSoftwareEngineeringPart1.aspx" target=_blank&gt;Part
1&lt;/a&gt;, I briefly introduced the guide to the &lt;a href="http://www.swebok.org/" target=_blank&gt;Software
Engineering Book of Knowledge&lt;/a&gt; &lt;/font&gt;&lt;font color=#000000&gt;(SWEBOK) that was published
in 2004.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“The IEEE Computer Society establishes
for the first time a baseline for the body of knowledge for the field of software
engineering…”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We will come back to the
SWEBOK in a future post as this post is about how to qualify for “professional” league
play.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;In Part 1, I discussed software engineering as being a team sport.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
is nothing new as far as I am concerned, but I am still amazed when a multi-million
dollar software development project is assigned to, and executed by, a newly assembled
team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This team has never played together,
and quite likely consists of&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Shinny" target=_blank&gt;shinny
players&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;to &lt;a href="http://en.wikipedia.org/wiki/National_Hockey_League" target=_blank&gt;NHL
stars&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; and everything in-between.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now
imagine that this team is somehow “classified” as an &lt;a href="http://en.wikipedia.org/wiki/List_of_ice_hockey_leagues" target=_blank&gt;amateur
Junior “B” league hockey team&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt;and their very first
game was to play a real NHL professional hockey team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What
is the likelihood of the B hockey team winning?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Don’t
forget, the B team has not played together as a team yet.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Their
first game is to play together and play against an NHL pro hockey team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Did
I mention that just before actual game play the team figures out that they are missing
their Center, who also happens to be the Captain of the team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Again,
what is the likelihood of success?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Of course, this hockey scenario would never happen in real life,
but it is certainly happens in our software development world.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Where
teams (assembled or not) get assigned software development projects that are way beyond
their software engineering capabilities to even have a chance at successful delivery.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
see it everyday.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And to varying degrees,
I have seen it over the past 16 years of being in the software development business.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
have been fortunate as some of the dev teams I have worked on are at “professional”
league play, where all team members have +10 years of software &lt;s&gt;development&lt;/s&gt; engineering
experience.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Aside from work being fun
on theses teams, our success rate for the design and delivery of software on time
and on budget was very high. Our motto was give us your biggest, baddest, dev project
you got – c’mon, bring it on!&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;However, most teams I have worked on have been a mix of shinny
players to pros.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Our success rate was
highly variable.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And even more variable
(chance has better odds) if the model is assembling players from the “resource pool.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
of the shinny players have aspirations of becoming pros and take to the work, listening
to the guidance of the pros.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Other shinny
players are finding out for the first time what it means to try out in the pro league
and are questioning whether they are going to pursue their career in software development.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s
a hard road, being unindustrialized and all.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;There are shinny players (and pro posers) that try real hard but
simply don’t have the knowledge or skills (aptitude?) to play even at the shinny level,
for whatever reason.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This is especially
difficult to deal with, if one or more of this type of player happens to be on your
team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is the equivalent of carrying
a hockey player on your back in the game because s/he can’t skate.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Never
happens in the pro hockey league, but amazingly often in our software development
world.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If our software development world
was more “visible”, you would see in every organization that develops software of
any sort, some people wandering around carrying a person on their back.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
would be kind of amusing to see, unless of course you were the one carrying… or being
carried.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;That is the irony of what we do as software developers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
is nowhere near as “visible” as a team (or even individual) sport where everyone can
visibly see exactly what you are doing.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And
even if people could see what you are doing, it still may not matter, because to most
people, other than software developers, software engineering is a complete mystery.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;So how does one find out what level of league play you are at?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
problem in our software development world is that we do not have levels of team play.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We
are not that mature (i.e. industrialized) yet. Well, some would say that the &lt;a href="http://www.sei.cmu.edu/cmmi/general/index.html" target=_blank&gt;CMMI&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;has
levels of play and I would agree, but I am talking about individual level here first,
then we will discuss what that means when you qualify to be on a team (or even the
remote possibility of finding a team that has the same knowledge and skill level you
do).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Another way to determine your knowledge
and skill level is through certifications.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There
are several ways to get certified.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
popular ones are:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.computer.org/portal/pages/ieeecs/education/certification/" target=_blank&gt;Certified
Software Development Professional&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;and the Open
Group's &lt;a href="http://www.opengroup.org/itac/" target=_blank&gt;IT Architect Certification
Program&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;.&amp;nbsp; Other certifications are directly related
to vendors’ products such as Microsoft’s &lt;a href="http://www.microsoft.com/learning/mcp/architect/default.mspx" target=_blank&gt;Certified
Architect&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt; and Sun's &lt;a href="http://www.sun.com/training/certification/java/scea.xml" target=_blank&gt;Certified
Enterprise Architect&lt;/a&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;For this series of articles, I am looking at level of play as
being a “professional software engineer.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
firmly believe that software development is an engineering discipline and it appears
that there is only one association, in the province I live in, that recognizes this
and that is the &lt;a href="http://www.apeg.bc.ca/" target=_blank&gt;Association of Professional
Engineers and Geoscientists of BC&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;(APEGBC).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;That
designation is called a &lt;a href="http://www.apeg.bc.ca/reg/peng.html" target=_blank&gt;Professional
Engineer&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt;or P.Eng.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;“The
P.Eng., designation is a professional license, allowing you to practice engineering
in the province or territory where it was granted.&amp;nbsp; Only engineers licensed with
APEGBC have a legal right to practice engineering in 
&lt;st1:State w:st="on"&gt;
&lt;st1:place w:st="on"&gt;British Columbia&lt;/st1:place&gt;
&lt;/st1:State&gt;
.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of course, this may be slightly different
depending on your geographic location.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Note how this is entirely different than any other certification
– it is a professional license giving you a legal right to practice software engineering.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“&lt;/font&gt;&lt;span lang=EN style="mso-ansi-language: EN"&gt;&lt;font color=#000000&gt;The
term &lt;a href="http://en.wikipedia.org/wiki/Professional_Engineer" target=_blank&gt;Professional
Engineer&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt;and the phrase &lt;i&gt;practice of professional
engineering&lt;/i&gt; is legally defined and protected both in 
&lt;st1:country-region w:st="on"&gt;Canada&lt;/st1:country-region&gt;
and the 
&lt;st1:place w:st="on"&gt;
&lt;st1:country-region w:st="on"&gt;US&lt;/st1:country-region&gt;
&lt;/st1:place&gt;
.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The earmark that distinguishes a licensed/registered
Professional Engineer is the authority to sign and seal or "stamp" engineering documents
(reports, drawings, and calculations) for a study, estimate, design or analysis, thus
taking legal responsibility for it.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span lang=EN style="mso-ansi-language: EN"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Ponder this for a while, what would it mean in your software development
job right now if you were a professional software engineer and that you were legally
responsible for the software that you designed?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;How
would that change your job today?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I know
it would change mine.&lt;span lang=EN style="mso-ansi-language: EN"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;All of this is not news to any practicing electrical, electronic
and all of the various other engineering disciplines as this have been standard practice
for years, even decades.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Yet it is seemingly
all new to us software professionals.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Let’s take a look at the requirements for applying for P.Eng.,
specifically related to software engineering. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;These
two documents are: "&lt;a href="http://www.apeg.bc.ca/reg/docs/syllabussoftware.pdf" target=_blank&gt;2004
SOFTWARE ENGINEERING SYLLABUS and Checklist for Self-Evaluation&lt;/a&gt;&lt;/font&gt;&lt;font color=#000000&gt;”
and “&lt;a href="http://www.apeg.bc.ca/reg/docs/softwareengineeringexpguidelines.pdf" target=_blank&gt;APEGBC
Guide for the Presentation and Evaluation of Software Engineering Knowledge and Experience&lt;/a&gt;.”&amp;nbsp;&lt;/font&gt;&lt;font color=#000000&gt;&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;
&lt;font color=#000000&gt;From the Software Engineering Syllabus:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“Nineteen
engineering disciplines are included in the Examination Syllabi issued by the Canadian
Engineering Qualifications Board (CEQB) of the Canadian Council of Professional Engineers
(CCPE). &lt;span style="COLOR: black"&gt;Each discipline examination syllabus is divided
into two examination categories, compulsory and elective. Candidates will be assigned
examinations based on an assessment of their academic background. Examinations from
discipline syllabi other than those specific to the candidate’s discipline may be
assigned at the discretion of the constituent Association/Ordre. Before writing the
discipline examinations, candidates must have passed, or have been exempted from,
the Basic Studies Examinations.”&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;
&lt