<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fiat Developmentum &#187; Process</title>
	<atom:link href="http://fiatdev.com/category/process/feed" rel="self" type="application/rss+xml" />
	<link>http://fiatdev.com</link>
	<description>Let There Be Software!</description>
	<lastBuildDate>Sun, 27 Sep 2009 01:05:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Nature of Software Development</title>
		<link>http://fiatdev.com/2008/07/07/the-nature-of-software-development</link>
		<comments>http://fiatdev.com/2008/07/07/the-nature-of-software-development#comments</comments>
		<pubDate>Mon, 07 Jul 2008 20:55:23 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[creativity]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://fiatdev.com/?p=98</guid>
		<description><![CDATA[The Myth of the Interchangeable Programmer: Can’t We Just Offshore Him?:


  The problem here is that the [Software Management Formulas] incorporate
  a number of flawed assumptions. The first of these assumptions is that
  programmers are fungible. The SMFs assume all programmers will contribute
  roughly the same amount to a project and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://itmanagement.earthweb.com/entdev/article.php/3757311/The+Myth+of+the+Interchangeable+Programmer:+Can't+We+Just+Offshore+Him?.htm">The Myth of the Interchangeable Programmer: Can’t We Just Offshore Him?</a>:</p>

<blockquote>
  <p>The problem here is that the [Software Management Formulas] incorporate
  a number of flawed assumptions. The first of these assumptions is that
  programmers are fungible. The SMFs assume all programmers will contribute
  roughly the same amount to a project and that all programmers are
  interchangeable.</p>
</blockquote>

<p>I think the root of problem is that upper management types don&#8217;t understand what goes into software development. They assume that programming is a rote task, like assembling cars on an assembly line or typists transcribing memos. I used to work for a guy who could not understand why we couldn&#8217;t just <em>go faster</em>.</p>

<p>The problem is that software development isn&#8217;t a rote task, it is a <em>creative</em> task. Writing software is nothing like putting the wheels on a car, but it is hard for people who aren&#8217;t in the trenches to see that.</p>

<p>(Via <a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;printTitle=Software_Management_Explained&amp;entry=3392881659">James Robertson</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2008/07/07/the-nature-of-software-development/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Notes on Rewriting Software</title>
		<link>http://fiatdev.com/2007/10/01/notes-on-rewriting-software</link>
		<comments>http://fiatdev.com/2007/10/01/notes-on-rewriting-software#comments</comments>
		<pubDate>Mon, 01 Oct 2007 20:03:56 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[rewrites]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2007/09/29/notes-on-rewriting-software</guid>
		<description><![CDATA[Adam Turoff wrote a very insightful post last month about rewriting software that seems very relevant given the recent furor over rewrites. Essentially, Adam is saying that it may in fact be OK to rewrite a piece of software and he mentions Firefox as an example of a rewrite that was successful.1

He follows up this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://notes-on-haskell.blogspot.com/">Adam Turoff</a> wrote a very insightful post last month about <a href="http://notes-on-haskell.blogspot.com/2007/08/rewriting-software.html">rewriting software</a> that seems very relevant given the <a href="http://weblog.raganwald.com/2007/09/ockhams-razor-as-it-applies-to-big.html">recent furor</a> over <a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html">rewrites</a>. Essentially, Adam is saying that it may in fact be OK to rewrite a piece of software and he mentions Firefox as an example of a rewrite that was successful.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<p>He follows up this month with an article titled <a href="http://notes-on-haskell.blogspot.com/2007/09/rewriting-software-part-2.html">&#8220;Rewriting Software, Part 2&#8221;</a> wherein he makes the following observation:</p>

<blockquote>
  <p>If you are a writer, or have ever taken a writing class, youâ€™ve probably
  come across John R. Trimbleâ€™s assertion that &#8216;all writing is rewriting.&#8217;
  Isn&#8217;t it funny that software is something developers write yet fear
  rewriting?&#8221;</p>
</blockquote>

<p>I am not a professional writer, but I do have some interests in the area. I think the kind of &#8220;rewriting&#8221; that Trimble is referring to is more like editing and tweaking than throwing the whole manuscript out and starting over from scratch. From what I understand of writing you start out with a draft that sucks and gradually massage it into something that you can call finished.</p>

<p>This type of rewriting is closer to the agile approach of creating the simplest thing that could possibly work and then building on that foundation. What happened with Firefox and CDBaby are <a href="http://chadfowler.com/2006/12/27/the-big-rewrite">&#8220;big bang&#8221; rewrites</a> where the developers abandoned a working codebase and started over from scratch. In the case of Firefox it worked out OK in the end, but things were touch and go for a while. It didn&#8217;t work out at all for CDBaby.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup></p>

<p>Adam follows the previous quote with this:</p>

<blockquote>
  <p>Thereâ€™s a deep seated prejudice in this industry against taking a working
  piece of software and tinkering with it, except when it involves fixing a
  bug or adding a feature. It doesnâ€™t matter if weâ€™re talking about some
  small-scale refactoring, rewriting an entire project from scratch, or
  something in between.</p>
</blockquote>

<p>I think it is a mistake to lump refactoring, minor rewrites and big bang rewrites into one category. Refactoring and agile methods for evolving a codebase are gaining acceptance while successful big bang rewrites are the exception and not the rule. What this shows is that if you feel that you need to rewrite a piece of software you are <em>more likely</em> to be successful if you do the rewrite in smaller iterations. Also, if you feel the need to make architectural changes or to switch to a different technology you will be better off if you do one at a time.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>&#8230;eventually&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>Although, the CDBaby case is interesting because a second rewrite was successful.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2007/10/01/notes-on-rewriting-software/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Programmer Entrepreneurs</title>
		<link>http://fiatdev.com/2007/06/04/programmer-entrepreneurs</link>
		<comments>http://fiatdev.com/2007/06/04/programmer-entrepreneurs#comments</comments>
		<pubDate>Mon, 04 Jun 2007 22:00:59 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[entrepreneur]]></category>
		<category><![CDATA[funding]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2007/06/04/programmer-entrepreneurs</guid>
		<description><![CDATA[Raise of hands: who wants to start the next 37 Signals, Fog Creek, or even Google? Both of my hands are up and I doubt I&#8217;m the only one. Just think of all the creative and interesting software that is being created in garages, basements, and commuter buses out there. While I don&#8217;t want to [...]]]></description>
			<content:encoded><![CDATA[<p>Raise of hands: who wants to start the next 37 Signals, Fog Creek, or even Google? Both of my hands are up and I doubt I&#8217;m the only one. Just think of all the creative and interesting software that is being created in garages, basements, and commuter buses out there. While I don&#8217;t want to sound too gloomy, I&#8217;m afraid the majority of that software won&#8217;t see the light of day. I&#8217;ve certainly written a lot of code that falls into that category (whether or not it was &#8220;creative&#8221; or &#8220;interesting&#8221; is probably arguable :-)</p>

<p>Here&#8217;s the thing, I haven&#8217;t succeeded in building one of these great companies. My business partner and I are still working on the formula that works for us but we figure we are in the same position that a lot of people are in: we have some great software ideas and want to bring them to market. To that end I found a rather lengthy <a href="http://www.inc.com/magazine/20070601/features-how-to-kill-a-great-idea.html">article at inc.com</a> which dissected the failure of Friendster - once a competitor to MySpace.</p>

<p>There were many lessons/reminders for those of us that have the objectives described above and I thought I would share what I took away. I wonder if anyone might have any comments on some of these ideas or battle scars to share from the perspective of building a software business in today&#8217;s environment.</p>

<p>1 - Make sure your software can keep up with the demands of the users</p>

<p>This can mean a lot of things. In Friendster&#8217;s case this meant that the software was not written to scale with load or features. I find this particularly interesting because in my experience there is a tendency for some to insist on perfection before release - not only in design but in feature set. On the other extreme is the tendency to just make it work at any cost. The first will guarantee that you never go live because the software will never be perfect. The &#8220;make it work&#8221; extreme, as proven by Friendster, makes it much more difficult to react once in the reactionary stage of production. Now, the article points out internal conflicts and the company&#8217;s failure to address the software problems once identified. Which brings me to the next point.</p>

<p>2 - Think hard about using Venture Capital</p>

<p>For some it&#8217;s the allure of having lots of money to throw at a problem. For others, it may just seem like the only way they can stop what they are currently doing, pay the bills, and focus on their business full-time. Whatever the case may be, bringing on VC funding too early proved catastrophic for Friendster as it has for so many others before them.</p>

<p>To use their numbers, 2 hits out of 20 tries are successful. Jonathan Abrams, the founder of Friendster, feels as though most people get VC funding too early. The organization often hasn&#8217;t really been established and the product hasn&#8217;t matured enough. Assuming the best case, smart and savvy VC execs are brought in to manage the effort and guide the company to extreme profitability. In Friendster&#8217;s case, as for many others, an eye on profits from people with little concern for the product rendered the company unable to address the problems associated with number 1 above.</p>

<p>3 - Continue to keep an eye on your Market</p>

<p>While invention can be the mother of necessity, if you originally set out to solve a problem it is a good idea to stay in contact with the market at all times. Monitoring that the problem(s) exist or that the right solution hasn&#8217;t changed, is really the only way to continue to provide the level of satisfaction that allowed you to connect to your market in the first place. According to the article, conflicting ideas inside Friendster and a misguided focus led to a distancing from their users as their patterns and interests shifted out from underneath them and right into the laps of MySpace.</p>

<p>This clearly isn&#8217;t the only way to do things or an inclusive list of everything one should do. However, you can really plug these 3 ideas into the respective buckets of Business Development, Product Development, and Marketing. I suppose that if you don&#8217;t get those right you probably do have problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2007/06/04/programmer-entrepreneurs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Wants to be the Next Microsoft?</title>
		<link>http://fiatdev.com/2007/03/03/who-wants-to-be-the-next-microsoft</link>
		<comments>http://fiatdev.com/2007/03/03/who-wants-to-be-the-next-microsoft#comments</comments>
		<pubDate>Sat, 03 Mar 2007 16:42:49 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[entrepreneur]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[success]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2007/03/03/who-wants-to-be-the-next-microsoft</guid>
		<description><![CDATA[Last September I was browsing in a book store and looked at a copy of Entrepreneur magazine. The cover story that month was titled &#8220;Next-Gen Innovators&#8221; and the blurb on the cover read:


  Forward-thinking entrepreneurs are making strides
  in promising areas&#8212;from nanotech to biotech
  to semiconductors. Will any of them build the [...]]]></description>
			<content:encoded><![CDATA[<p>Last September I was browsing in a book store and looked at a copy of <a href="http://www.entrepreneur.com/magazine/entrepreneur/index.html">Entrepreneur magazine</a>. The <a href="http://www.entrepreneur.com/magazine/entrepreneur/2006/september/issue116178.html">cover story that month</a> was titled &#8220;Next-Gen Innovators&#8221; and the blurb on the cover read:</p>

<blockquote>
  <p>Forward-thinking entrepreneurs are making strides
  in promising areas&#8212;from nanotech to biotech
  to semiconductors. Will any of them build the next
  Microsoft?</p>
</blockquote>

<p>My first thought was &#8220;who would <em>want</em> to be the next Microsoft?&#8221; The article holds up Microsoft as a gold standard for successful companies and Bill Gates as the quintessential entrepreneur. Certainly Microsoft is a successful company and Mr. Gates has earned a significant amount of money from his business venture. However, I don&#8217;t think Microsoft is the right role model for today&#8217;s entrepreneurs. Microsoft got where it is today by building a monopoly and aggressively defending it. There are many areas where Microsoft&#8217;s behavior was detrimental to the industry as a whole.</p>

<p>I am not going to rehash Microsoft&#8217;s behavior over the last decade or so, but I am going to point out that Microsoft is poised for an inevitable decline. Having dominated the markets for PC desktop operating systems, web browsers and office productivity software the company reached the pinnacle of its influence. The markets that Microsoft has historically dominated are completely saturated and all of its money cannot buy success in other markets. I think there are better role models.</p>

<p>One would seem to be <a href="http://www.apple.com/">Apple</a>. The company was an early innovator and then fell on hard times. With analysts regularly sounding the company&#8217;s death knell they have seen an incredibly resurgence since the return of Steve Jobs. Now Apple is doing well in its traditional markets and is making bold moves into other markets with its iPod and the recently announced iPhone. Apple will never dominate the PC desktop market like Microsoft has, but that is OK. In fact, it is good. The company has identified a profitable niche and exploited it to good effect.</p>

<p><a href="http://www.google.com/">Google</a> is another company that seems to fit the bill as an entrepreneurial role model much better than Microsoft. Before Google&#8217;s AdSense program analysts were decrying the end of web advertising. But, I think that there are even better role models available. For example, companies like <a href="http://www.37signals.com/">37 Signals</a> and <a href="http://www.omnigroup.com/">OmniGroup</a> are never going to dominate the industry for anything, but they are very successful by almost any measure. They are proof that it is possible to create software that users love and have fun in the process. You don&#8217;t have to be a billion dollar company with 90% market share to be successful.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2007/03/03/who-wants-to-be-the-next-microsoft/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Buck Stops Where?</title>
		<link>http://fiatdev.com/2006/07/15/the-buck-stops-where</link>
		<comments>http://fiatdev.com/2006/07/15/the-buck-stops-where#comments</comments>
		<pubDate>Sat, 15 Jul 2006 17:32:49 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[responsibility]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2006/07/15/the-buck-stops-where</guid>
		<description><![CDATA[I recently came across this little gem over at Signal vs. Noise:


  A dissatisfied Basecamper wrote to us that &#8220;Real project
  management requires the determination of the critical
  path.&#8221; I thought that sounded zen&#8230;but I had no idea what
  it meant. Ryan said it reminded him of a bit from Tufte&#8217;s
 [...]]]></description>
			<content:encoded><![CDATA[<p>I recently came across this <a href="http://37signals.com/svn/archives2/fly_on_the_wall_other_peoples_data_is_extremely_boring.php">little gem</a> over at <a href="http://37signals.com/svn">Signal vs. Noise</a>:</p>

<blockquote>
  <p>A dissatisfied Basecamper wrote to us that &#8220;Real project
  management requires the determination of the critical
  path.&#8221; I thought that sounded zen&#8230;but I had no idea what
  it meant. Ryan said it reminded him of a bit from Tufte&#8217;s
  latest book: &#8220;it&#8217;s about how sentences like the above numb
  you to responsibility&#8230;&#8221;project management&#8221; doesn&#8217;t
  require things&#8230;people require things&#8230;so who requires
  it?&#8230;and the &#8220;critical path&#8221; to where? etc&#8230;or &#8220;a decision
  was reached between parties.&#8221; &#8212; who made the decision?
  who&#8217;s responsible? etc.&#8221;</p>
</blockquote>

<p>Hang around any business with more than about 10 people and you hear responsibility-numbing senetences like this all the time. One of my favorites is &#8220;Safety is everyone&#8217;s responsibility&#8221;. Really? More often than not, the effect of a statement like this is to absolve individuals of any real culpability. The responsibility is spread so thin that no one individual feels bound by it.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2006/07/15/the-buck-stops-where/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random thought from the draft pile&#8230;</title>
		<link>http://fiatdev.com/2006/06/25/random-thought-from-the-draft-pile</link>
		<comments>http://fiatdev.com/2006/06/25/random-thought-from-the-draft-pile#comments</comments>
		<pubDate>Sun, 25 Jun 2006 22:45:55 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2006/06/25/random-thought-from-the-draft-pile</guid>
		<description><![CDATA[Everyone knows a programmer who is more concerned about microseconds of execution time than whether or not the correct result is returned. The opposite of those programmers are the architects who follow the mantra &#8220;Make it correct then make it fast&#8221;. These architects seem equally unconcerned about getting the result in a reasonable time as [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows a programmer who is more concerned about microseconds of execution time than whether or not the correct result is returned. The opposite of those programmers are the architects who follow the mantra &#8220;Make it correct then make it fast&#8221;. These architects seem equally unconcerned about getting the result in a reasonable time as the microsecond programmers are about getting the right result. Good architects and good developers need to be able to strike the right balance between speed and design and do so in a way that is maintainable for the long term.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2006/06/25/random-thought-from-the-draft-pile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Technical Interview Secret Sauce</title>
		<link>http://fiatdev.com/2006/06/25/the-technical-interview-secret-sauce</link>
		<comments>http://fiatdev.com/2006/06/25/the-technical-interview-secret-sauce#comments</comments>
		<pubDate>Sun, 25 Jun 2006 19:52:38 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[jobs]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2006/06/25/the-technical-interview-secret-sauce</guid>
		<description><![CDATA[Steve Yegge writes about the problems with technical interviews. He certainly paints a bleak picture of the current state of the art.  I think the real problem is that technical interviewing is really the type of unconscious decision making that Malcolm Gladwell described in Blink. When a really good hacker walks into the room [...]]]></description>
			<content:encoded><![CDATA[<p>Steve Yegge writes about the <a href="http://steve-yegge.blogspot.com/2006/03/truth-about-interviewing.html">problems with technical interviews</a>. He certainly paints a bleak picture of the current state of the art.  I think the real problem is that technical interviewing is really the type of unconscious decision making that Malcolm Gladwell described in <a href="http://www.gladwell.com/blink/">Blink</a>. When a really good hacker walks into the room to interview a candidate he will know relatively quickly whether or not the other guy will work out. Unfortunately, he won&#8217;t know how he knows.</p>

<p>This is a difficult problem for the interviewer. If he goes back and tells his boss that &#8220;this guy isn&#8217;t going to work out but I don&#8217;t know why&#8221; his opinion is likely to be ignored. It is no less a problem for the candidate who would like to believe that if he answers all of the questions right he will get the job. Nevertheless, it is very difficult to get objective evidence of a person&#8217;s technical abilities during a reasonable interview process.</p>

<p>And this really goes to the heart of the problem. The decision making process is almost entirely intuitive and yet we persist in believing that we can obtain an objective answer if we come at the problem from a different angle. Steve thinks that there is a better interview process out there that we haven&#8217;t found yet. I don&#8217;t think that is the case. I think that we found it but don&#8217;t like the implications.</p>

<p>I think the best interview process is to let your best hacker chat with a candidate for 30 minutes to an hour. It doesn&#8217;t really matter what they talk about, just that they spend the time interacting. At the end of the interview if the hacker is excited about the candidate hire them without delay. If the hacker seems neutral then put the candidate&#8217;s resume in the &#8220;maybe&#8221; pile. However, if the hacker shows any reservations then the candidate is probably not a good fit. You will probably have a few bad results, but will come out ahead in the long run.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2006/06/25/the-technical-interview-secret-sauce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Cares About UI Consistency?</title>
		<link>http://fiatdev.com/2005/11/08/who-cares-about-ui-consistency</link>
		<comments>http://fiatdev.com/2005/11/08/who-cares-about-ui-consistency#comments</comments>
		<pubDate>Tue, 08 Nov 2005 00:16:58 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2005/11/08/who-cares-about-ui-consistency</guid>
		<description><![CDATA[A common complaint about Java desktop applications is that they do not have a look and feel that is consistent with the operating system. Is this really a problem? Does anyone really care about UI consistency? Microsoft doesn&#8217;t, at least not in the same way as the complainers, and in this case I agree with [...]]]></description>
			<content:encoded><![CDATA[<p>A common complaint about Java desktop applications is that they do not have a look and feel that is consistent with the operating system. Is this really a problem? Does anyone really care about UI consistency? Microsoft doesn&#8217;t, at least not in the same way as the complainers, and in this case I agree with them. Microsoft recently announced the next version of their Office suite: Office 12. The new version of Office differs substantially from the normal Windows look and feel conventions in order to make the application easier to use. Screenshots of the new  user interface can be seen <a href="http://www.winsupersite.com/showcase/pdc2005_office12_01.asp">here</a>. I am not sure that the new interface will be effective, or is even necessary, but it does emphasize the fact that even Microsoft does not always follow the Windows UI conventions. Of course, this is nothing new, the last several versions of Microsoft Office and Visual Studio have sported a different look than the versions of Windows that they ran on.</p>

<p>I think that the argument about UI inconsistency is really a red herring. The real problem isn&#8217;t that a user interface may be inconsistent with Windows, it is that the interface is difficult to use. When applications are easy to use nobody complains about the interface being inconsistent. There are a few basic rules that all applications are expected to follow, but beyond that users just want something that does not require a lot of time to figure out. Sometimes consistency is part of overall usability; however, just being consistent with Windows (or Mac OS) does not guarantee that an application will be easy to use. Emerson once <a href="http://www.bartleby.com/59/3/foolishconsi.html">remarked</a> that &#8220;a foolish consistency is the hobgoblin of little minds.&#8221; Development teams are better served spending their time making the interface clear and easy to use than making it consistent with Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2005/11/08/who-cares-about-ui-consistency/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What the UML Can&#8217;t Do</title>
		<link>http://fiatdev.com/2005/08/15/what-the-uml-cant-do</link>
		<comments>http://fiatdev.com/2005/08/15/what-the-uml-cant-do#comments</comments>
		<pubDate>Mon, 15 Aug 2005 09:56:37 +0000</pubDate>
		<dc:creator>phil</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2005/08/15/what-the-uml-cant-do</guid>
		<description><![CDATA[The UML is a very effective notation for object oriented software designs. However, as with many useful tools, there seems to be some misunderstanding about what the UML can and cannot do. This misunderstanding can lead to organizations failing to meet their goals because they are not using their tools properly. This is unfortunate since [...]]]></description>
			<content:encoded><![CDATA[<p>The <abbr title="Unified Modelling Language">UML</abbr> is a very effective notation for object oriented software designs. However, as with many useful tools, there seems to be some misunderstanding about what the UML can and cannot do. This misunderstanding can lead to organizations failing to meet their goals because they are not using their tools properly. This is unfortunate since the tools may ultimately receive the blame. In particular, it is important to understand what a tool <em>cannot</em> do as well as what it can. In that spirit, here are three things that the UML cannot do.</p>

<p><span id="more-28"></span></p>

<h3>The UML Can&#8217;t Solve Problems</h3>

<p>It is not uncommon to see companies who are looking for Java developers to ask for UML experience. In many cases this is appropriate as the UML is well suited for describing <abbr title="Object Oriented">OO</abbr> designs. Most developers these days should be able to at least read UML class diagrams. The problem is that some companies confuse the solution (OO design) with the method (UML).</p>

<p>Consider the following requirement from a job ad for a Java architect: &#8220;Proficient in the application of UML to real world problems.&#8221; You cannot really <em>apply</em> the UML to real world problems since the UML is not a solution but a tool for describing solutions. What the ad should have asked for is proficiency in using the UML to describe real world problems and their solutions.</p>

<p>The confusion between the result and the method of achieving the result is also apparent with software development methodologies. Many organizations take on the task of &#8220;implementing the <acronym title="Rational Unified Process">RUP</acronym>&#8221; without stopping to think about what benefits this will bring for them. Their business goal becomes &#8220;implement process&#8221; when it should be &#8220;reduce cost&#8221; or &#8220;reduce time to market.&#8221; In the case of the UML, organizations are saying they want UML when what they really want is the ability to design OO solutions and to be able to communicate those solutions to the rest of the team.</p>

<h3>The UML Can&#8217;t Make Good Designers</h3>

<p>Knowing UML does not make someone a good OO designer. To use an analogy, the idea that knowing the UML makes one a good designer is a bit like suggesting that knowing the English language makes one a good playwright. While a strong knowledge of the English language is required if you are going to write plays in English, there is also a creative component and other talents that are necessary. Of course, one need not even know English if they are going to write plays in another language, but the other skills are still necessary. The same can be said of OO application design. While knowledge of the UML can be beneficial, and may even be required depending on the circumstances, it is not even close to being enough.</p>

<p>Yet it seems that many organizations are relying on UML knowledge to cover gaps in overall design experience. There is a hope that the use of the UML will compensate for a lack of design skills. While learning the UML &#8220;vocabulary&#8221; for expressing system design may help an architect to improve their overall design skills, those skills must already exist.</p>

<h3>The UML Can&#8217;t Write Your Code For You</h3>

<p>Code generation tools notwithstanding, you cannot build an application with pictures. Code generation may be helpful as a time saver, depending on the circumstances, but the core logic still needs to be written by a developer.  What makes the UML so useful is that it is a very high level notation, meaning that it can easily represent very abstract concepts. That same feature makes it very difficult to generate more than class skeletons from UML diagrams. While the UML is useful for design and documentation, it still requires actual code to implement the design.</p>

<h3>Conclusion</h3>

<p>The UML is a very useful and powerful tool. Like any other tool different people judge its usefulness differently, but most can agree that there is a place in every architect&#8217;s toolbox for the UML. However, the UML can be misused, and the results are not likely to be pleasing. Therefor, it is in everyone&#8217;s best interest, from developers to managers, to understand what the UML can and cannot do for them.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2005/08/15/what-the-uml-cant-do/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Politics of User Interface Design</title>
		<link>http://fiatdev.com/2005/08/04/politics-of-user-interface-design</link>
		<comments>http://fiatdev.com/2005/08/04/politics-of-user-interface-design#comments</comments>
		<pubDate>Thu, 04 Aug 2005 09:24:57 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://fiatdev.com/2005/08/04/politics-of-user-interface-design</guid>
		<description><![CDATA[Trying to design an interface is nothing short of agonizing at times when we are dealing with users and their needs (or more to the point, requests). Most of us can relate to how hard it can be to get coherent requirements for an application.



It is often equally challenging to solidify the design of a [...]]]></description>
			<content:encoded><![CDATA[<p>Trying to design an interface is nothing short of agonizing at times when we are dealing with users and their needs (or more to the point, requests). Most of us can relate to how hard it can be to get coherent requirements for an application.</p>

<p><span id="more-33"></span></p>

<p>It is often equally challenging to solidify the design of a user interface and get buy-in from all stakeholders. There is usually someone who is responsible for seeing that business objectives are met. Then there is someone responsible for deciding technical feasibility and another that is responsible for scheduling and budgeting. And of course there should be someone representing the users. If software is being developed for internal use, then a representative from the users&#8217; area or department will fill that role. If the software is being developed for outside customers a representative from marketing or sales is often appointed to act on the users&#8217; behalf.</p>

<p>In either case this often presents problems that give most developers nausea. Unfortunately, anyone responsible for the design of an interface must deal with this directly because this person is likely the most important person with which to have a good rapport. These user representatives tend to get heavily involved with the user interface design. If you do not make friends with this person you will dread every meeting with this person - and there are plenty of meetings in this process. User reps can be a great source of information and input on design considerations. Depending on a designer&#8217;s level of understanding of the business domain, a user rep will often know of previous failed design attempts and of successful scenarios. Listen to them and learn from them. We should never assume we know more than these valuable resources.</p>

<p>An understanding of good user interface design eludes most people. And most couldn&#8217;t tell a good design if it hit them. The one true test, however, of quality is in the users&#8217; feedback. It is important that we designers use this to our advantage. Using the iterative design and testing techniques that we talk about later will allow us to quickly prevent bad designs being realized late in the development and also help provide fuel for your design goals even when strong opinions would like to maintain otherwise. A word of caution that we all want to remember is that it will happen more than once when user feedback proves the user rep correct and the designer wrong. It is ok to be wrong but I hear crow is rather distasteful.</p>
]]></content:encoded>
			<wfw:commentRss>http://fiatdev.com/2005/08/04/politics-of-user-interface-design/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
