<?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>User Harmony &#187; Uncategorized</title>
	<atom:link href="http://userharmony.com/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://userharmony.com/blog</link>
	<description>Cultivating harmony between software and users</description>
	<lastBuildDate>Thu, 06 Oct 2011 20:13:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>S.J.</title>
		<link>http://userharmony.com/blog/2011/10/06/s-j/</link>
		<comments>http://userharmony.com/blog/2011/10/06/s-j/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 20:10:52 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=125</guid>
		<description><![CDATA[R.I.P &#8211; Steve Jobs. You influenced and touched the lives of a lot of geeks and non-geeks in profound ways! We are indebted to your inspiration. &#160; &#160; &#160; &#160; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://apple.com/stevejobs/"><img class="aligncenter size-full wp-image-126" title="Steve Jobs" src="http://userharmony.com/blog/wp-content/uploads/2011/10/t_hero_halo.png" alt="Steve Jobs R.I.P" width="706" height="644" /></a></p>
<p>R.I.P &#8211; Steve Jobs. You influenced and touched the lives of a lot of geeks and non-geeks in profound ways! We are indebted to your inspiration.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2011/10/06/s-j/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interop between Java and .NET</title>
		<link>http://userharmony.com/blog/2011/08/11/interoperation-java-net/</link>
		<comments>http://userharmony.com/blog/2011/08/11/interoperation-java-net/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 21:50:32 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=119</guid>
		<description><![CDATA[Recently, I was presented with an interesting challenge. There was a need to call a .Net API from within Java. There are several options to accomplish this. The most native option is to add a C++ wrapper around the .Net API and use Java Native API to invoke the C++ function. Another interesting option is [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I was presented with an interesting challenge. There was a need to call a .Net API from within Java. There are several options to accomplish this. The most native option is to add a C++ wrapper around the .Net API and use Java Native API to invoke the C++ function.</p>
<p>Another interesting option is to use the open source library of <a href="http://jni4net.com" target="_blank">jni4net</a>. It is an interesting option because it allows for Java to interact with .Net classes via proxy generation and loads the CLR into the same process as the JVM.</p>
<p>I created my .NET API in C# 4.0 and used the proxygen.exe to generate the Java equivalent proxies of the C# API. The proxygen uses introspection to create the equivalent Java classes and compiles the new classes in C# and Java to create the intermediate layer.</p>
<p>Once this is done, you can reference the proxy classes within the Java program and the calls to their methods and then handed off to the equivalent C# classes.</p>
<p>There are some gotchas that one discovers with this approach. Not all classes on both sides have equivalency. For example, if a method returns a string from C#, its easily translated into a string in Java. But same is not true for Exception class. You cannot trap a call in Java in a try catch block and catch a .Net exception.</p>
<p>But for most implementations this library worked great.</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2011/08/11/interoperation-java-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to do user experience when engaged on a new client project?</title>
		<link>http://userharmony.com/blog/2010/04/11/how-to-do-user-experience-when-engaged-on-a-new-client-project/</link>
		<comments>http://userharmony.com/blog/2010/04/11/how-to-do-user-experience-when-engaged-on-a-new-client-project/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 15:57:38 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=64</guid>
		<description><![CDATA[The challenge &#8211; fit in user experience at all stages of your agile project. I looked at the &#8220;IDEO way&#8220;. Observation It starts with observation. Observation should start with shadowing people, taking notes, taking photographs, and taking videos. This stage will establish the overall context for the problem solving exercise. The context will establish the [...]]]></description>
			<content:encoded><![CDATA[<p>The challenge &#8211; fit in user experience at all stages of your agile project. I looked at the &#8220;<a href="http://www.businessweek.com/magazine/content/04_20/photo_essay/0420pe_ideo1.htm">IDEO way</a>&#8220;.</p>
<p><strong>Observation</strong></p>
<p>It starts with observation. Observation should start with shadowing people, taking notes, taking photographs, and taking videos. This stage will establish the overall context for the problem solving exercise. The context will establish the end user as a human being instead of a faceless &#8220;user&#8221;. The problem has to be framed in the terms of the overall context. Instead of simply focusing on specific tasks, start with end user goals &#8211; broad and ambitious goals. These goals should guide the development of the applications throughout its lifecycle. What you shouldn&#8217;t start with is interviewing users on what they want. In my opinion, the interviews tend to focus on specific pains within the context of the existing applications. Interviews tend to generate ideas that solely focus on fixing the pains that exist right now. Instead, start by interviewing people who may provide the organizational perspective, and the departmental perspective. Once a broad view is established, dive into observation mode by shadowing the users in their day to day activities. Connecting the dots that emerge through this activities provide invaluable insights into what the users are trying to accomplish. Armed with still and video cameras &#8211; even something as simple as a phone camera or Flip recorder, you can start to piece together a picture of the user environment, their goals, their usage patterns, and how they interact with their computers, phones and other teammates.</p>
<p>Once you have had a chance to assimilate all the input, go back and interview with more specific questions to help guide the vision for the new application. However, don&#8217;t put the users in charge of the innovation. Solicit opinions on their pain points, but use these points as another source of input, not the sole guide for new features.</p>
<p><strong>Ideas</strong></p>
<p>Part of observing includes picking a diverse group of users to bring in as many ideas as possible. There is nothing wrong in copying ideas from other sources that have inspired you. However, encourage diverse and outlandish ideas. At this stage, the mission is to generate as many ideas as possible. Don&#8217;t underestimate how hard it is to go through a brainstorming exercise without overt criticism. Team may have the tendencies to start debating ideas as soon as they are generated. The art is to simply log these ideas to come back to them at a separate time. By separating the sessions for generating ideas and judging ideas, you can encourage lateral thinking in the first session.</p>
<p><strong>Rapid Prototyping</strong></p>
<p>Mocking up everything is the key. Ideas can come to life when mocked up and it helps in the narrowing of the choices.</p>
<p><strong>Narrowing down the ideas</strong></p>
<p>In this session, the objective is to focus on those ideas that are executable and the best ideas out of all the ideas generated in the previous session. This session is where the team can debate pros and cons of each idea and get a collective buy-in on what needs to be done. Involve end-users in helping narrow down the choices. Get the buy-in from the project sponsors and executives at this stage. Instead of just focusing on the screens, branch in role-playing the end-users and how &#8220;a day in the life of&#8221; scenario might work with the new solution.</p>
<p><strong>Implementation</strong></p>
<p>Implement in an iterative way and make it a point to involve the users at frequent checkpoints. Simplicity is hard to achieve. Keep focus on the end user goals and demonstrate the partial product on a frequent basis. Solicit additional user experience feedback and plug it into the enhancement queue.</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2010/04/11/how-to-do-user-experience-when-engaged-on-a-new-client-project/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Made in China</title>
		<link>http://userharmony.com/blog/2009/04/05/made-in-china/</link>
		<comments>http://userharmony.com/blog/2009/04/05/made-in-china/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 00:42:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=44</guid>
		<description><![CDATA[Progressing from the slideshow last week, I converted the presentation into a podcast. Watch it here.]]></description>
			<content:encoded><![CDATA[<p>Progressing from the slideshow last week, I converted the presentation into a podcast. Watch it here. </p>
<p><embed src="http://blip.tv/play/AfieJ5XHaQ" type="application/x-shockwave-flash" width="720" height="561" allowscriptaccess="always" allowfullscreen="true"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2009/04/05/made-in-china/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Great philosophies underlie great products</title>
		<link>http://userharmony.com/blog/2008/10/06/great-philosophies-underlie-great-products/</link>
		<comments>http://userharmony.com/blog/2008/10/06/great-philosophies-underlie-great-products/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:23:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=37</guid>
		<description><![CDATA[Ever since I first used hulu.com, I knew that it was a work of a great team. I was even more delighted to learn that the product was developed partly in China with the help of an offshore team. The core teams are located in Los Angeles, Chicago and Beijing. From the CNN article, &#8220;Money, [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since I first used hulu.com, I knew that it was a work of a great team. I was even more delighted to learn that the product was developed partly in China with the help of an offshore team. The core teams are located in Los Angeles, Chicago and Beijing.</p>
<p>From the CNN article, &#8220;Money, it turned out, was not an object for Hulu. In May, Providence Equity Partners offered a cool $100 million for a 10% stake &#8211; giving the nascent operation an astonishing valuation of $1 billion.</p>
<p>But the secret of Hulu&#8217;s initial success &#8211; the thing that made believers out of the skeptics &#8211; is the power and simplicity of the website itself. Hulu&#8217;s creators focused with almost obsessive attention to detail on the user&#8217;s experience.&#8221;</p>
<p>So how do companies become great and create ground-breaking products? The answer partly lies in the underlying philosophy behind the organization.</p>
<p>Here is an excerpt from &#8220;What defines Hulu&#8221;: <span style="color:#333333;">&#8220;We are passionate in our opinion that the world has long since exceeded its quota in the mediocrity department.</span></p>
<p><span style="color:#333333;">We believe our professional calling is to deliver quality. And not simply run-of-the-mill, five-star quality. For Hulu, nothing less than brain-spray awesome quality* will do, down to the finest detail. This atypically high quality bar leads us to sweat every pixel, every second of transcode, every customer.&#8221;</span></p>
<p>So when you are making your next product, ask yourself this question: what is the definition of quality for you? Will your product get a response like &#8220;<span style="color:#191919;">My first hulu experience made my head explode in a brain-spray of awesome.&#8217;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/10/06/great-philosophies-underlie-great-products/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Let your code automatically open defects</title>
		<link>http://userharmony.com/blog/2008/10/06/let-your-code-automatically-open-defects/</link>
		<comments>http://userharmony.com/blog/2008/10/06/let-your-code-automatically-open-defects/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:17:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=35</guid>
		<description><![CDATA[Opening defects is time consuming. So why not let the code automatically enter defects in your bug tracking system. Of course, this means your bug tracking software should provide ability to open defects via APIs, via Emails, or any other programmatic means. Second, all untrapped exceptions must be logged as defects automatically by the exception [...]]]></description>
			<content:encoded><![CDATA[<p>Opening defects is time consuming. So why not let the code automatically enter defects in your bug tracking system. Of course, this means your bug tracking software should provide ability to open defects via APIs, via Emails, or any other programmatic means. </p>
<p>Second, all untrapped exceptions must be logged as defects automatically by the exception handling code. Now how do you determine if the same defect is already logged and prevent a flood of the such defects?</p>
<p>One easy way to uniquely identify a defect is Line Number of the Code. Every time an exception occurs it originates at a certain line of code in a certain class. Thats the unique identification. </p>
<p>Before opening a new defect, the bug tracker should check if a defect exists with same class and same line number. If it does exist, then the new event gets appended to the existing defect instead of creating a new one. </p>
<p>Want a bug tracking/project tracking software that already does all of the above? Try <a href="http://www.fogcreek.com/FogBugz/" rel="nofollow">FogBugz.</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/10/06/let-your-code-automatically-open-defects/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&quot;No matter how cool your interface, less would be better.&quot;</title>
		<link>http://userharmony.com/blog/2008/10/06/no-matter-how-cool-your-interface-less-would-be-better/</link>
		<comments>http://userharmony.com/blog/2008/10/06/no-matter-how-cool-your-interface-less-would-be-better/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:17:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=36</guid>
		<description><![CDATA[How long will we keep building software that has 10 search boxes on its search page? Google launched in year 1999, and its user interface has one text field and two buttons(one too many in my opinion). Today we are still building screens with more than 50 items, numerous buttons, drop-downs, long scroll after scroll. [...]]]></description>
			<content:encoded><![CDATA[<p>How long will we keep building software that has 10 search boxes on its search page? Google launched in year 1999, and its user interface has one text field and two buttons(one too many in my opinion). Today we are still building screens with more than 50 items, numerous buttons, drop-downs, long scroll after scroll. When will we learn that users need less not more user interface.<a href="http://www.joelonsoftware.com/items/2006/11/21.html" rel="nofollow">Choices = Headaches</a></p>
<p>Imagine you are building a user interface for the Army, for a battle decision control system, where pushing wrong buttons could result in loss of lives. Now rethink the interface from the army commander&#8217;s perspective &#8211; how would you present this information. Suddenly you become sensitive to throwing more drop-downs, text boxes and buttons on there. I think you have started to see the picture of the impact of your user interface on the day to day life of the end user.</p>
<p>How do we innovate our user interfaces. Certainly not by &#8220;asking&#8221; the users what they would like. Innovation is creative solutions to user pains that may come by &#8220;observing&#8221; the user, their context and their larger world in general. It cannot be accomplished simply by &#8220;asking&#8221; the user. &#8220;Why&#8221; is a friendly weapon in an innovator&#8217;s arsenal to determine what the user motivations are, and what the current pain points are. Of course, it takes creative software development team to convert the idea into working software that resembles something that understands the user. This is why it is my firm belief that great software can only come from teams that have user empathy at the core of their effort, whether their contribution is that of a requirement writer, designer, developer, or tester. If every single person on the team cannot envision their product in the hands of the eventual user, they will not be able to build a very effective piece of software. Every small decision that a requirement writer, developer or tester takes has eventual impact on the usability of the software. It is virtually impossible to make software development &#8220;factory like&#8221; work with specifications, in my opinion. The states that the executing code be in at any given moment explodes once developers start converting requirements specifications into executable code. At this point, developer make conscious decisions on the behavior of the software, sort of &#8220;reading in-between the lines&#8221; of the specifications. How good the product will end up to be will depend on what developer wrote and what the tester interpreted as the requirement to be.This is as much art as much it is science. The quality of your people will determine the end result.</p>
<p>  So we owe it to our teams to teach them to write software with less interface and coming up with innovative ways to solve the problems that the users don&#8217;t know need solving yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/10/06/no-matter-how-cool-your-interface-less-would-be-better/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Need for Speed</title>
		<link>http://userharmony.com/blog/2008/10/06/need-for-speed/</link>
		<comments>http://userharmony.com/blog/2008/10/06/need-for-speed/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:16:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=34</guid>
		<description><![CDATA[When porting a thick client application to a web based application, there are some significant challenges that the team needs to think about. Let me illustrate this transition by hypothetically taking away some of your favorite thick client applications. Imagine your boss comes in one day, and tells you &#8220;We are getting rid of all [...]]]></description>
			<content:encoded><![CDATA[<p>When porting a thick client application to a web based application, there are some significant challenges that the team needs to think about. </p>
<p>Let me illustrate this transition by hypothetically taking away some of your favorite thick client applications. Imagine your boss comes in one day, and tells you &#8220;We are getting rid of all thick client applications because this is 2008 and we will be moving all application to web based interface. So tomorrow you will be receiving new computers that will only have a web browser (kinda like the machines you see if you ever used Denver Public Library computer). </p>
<p>No more MS Word or Excel or PowerPoint or even Outlook. Eclipse? ha! use an online text editor. Instant Messenger? use web based chat. </p>
<p>Just imagine going one day by just using web based versions of your favorite applications. Not a pretty picture. Why is this? Many reasons, but primarily because most web based applications do not provide the same user experience as a thick client does. That and our need for speed. Many web based application still perform poorly compared to their thick client cousins. </p>
<p>Web usability guru Jacob Nielsen <a href="http://www.useit.com/papers/responsetime.html" rel="nofollow">talks about response times</a> highlights pretty interesting facts:</p>
<p>1) 0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.</p>
<p>2) 1.0 second is about the limit for the user&#8217;s flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data. </p>
<p>Jacob also provides some <a href="http://www.useit.com/alertbox/9703a.html" rel="nofollow">useful advice</a> on how to design the interface so as to make it more responsive to user needs. Notice that there is a difference between actual response times and perceived response times. What matters to end user is perceived response time. </p>
<p>So when rewriting an existing thick client application to a web based interface, these challenges must be kept on top of list or the application will be what Outlook for Web Access has become. A nice to have alternative that you will use only if Outlook thick client is not available. </p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/10/06/need-for-speed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Performance and Usability &#8211; The missing link</title>
		<link>http://userharmony.com/blog/2008/10/06/performance-and-usability-the-missing-link/</link>
		<comments>http://userharmony.com/blog/2008/10/06/performance-and-usability-the-missing-link/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:12:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=33</guid>
		<description><![CDATA[When an existing application is being replaced by a new application, performance and usability requirements become intricately linked. In case of data entry applications, what matters is the speed and agility with which the user can get through a given scenario. This is where things get tricky. The speed is not only a function of [...]]]></description>
			<content:encoded><![CDATA[<p>When an existing application is being replaced by a new application, performance and usability requirements become intricately linked. In case of data entry applications, what matters is the speed and agility with which the user can get through a given scenario. This is where things get tricky. The speed is not only a function of how fast the system responds (performance) but also how is the interaction design of the application aiding in that agility(usability).</p>
<p>Consider a call center customer care application. If your boss comes to you and says &#8220;I need you to plan a new call center. Let me know how many people will you need to answer calls and manager those who are answering calls&#8221;, you may naturally ask questions such as &#8220;how many calls do we receive on average and peak times?&#8221; and &#8220;what types of calls are coming in?&#8221; and &#8220;how long does it take typically to get through a single call?&#8221;. Since you are a math genius, you figure, you will do some math and take number of calls on an average day, multiply by time it takes to handle a single call and divide by 8 hours.. and ta da you should have a magic figure of how many people you need. So some years pass by and existing application must be replaced with a new application. How is your life as a call center manager going to change?</p>
<p>Is the new application making the customer service representative take longer to get through each call or its making their life easier by taking less time than before? Is the application high friction and making the life of the customer and the service representative much harder?</p>
<p> So how do performance and usability play into this? Performance testing in isolation is only step one. Step two must be a combined usability drill during peak load conditions to validate that the new application indeed makes life better.</p>
<p>  If you were the customer paying for the new application, wouldn&#8217;t you expect this validation?</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/10/06/performance-and-usability-the-missing-link/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Maxims I learned from my latest project</title>
		<link>http://userharmony.com/blog/2008/08/03/new-maxims-i-learned-from-my-latest-project/</link>
		<comments>http://userharmony.com/blog/2008/08/03/new-maxims-i-learned-from-my-latest-project/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 02:21:00 +0000</pubDate>
		<dc:creator>Amit</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://userharmony.com/blog/?p=32</guid>
		<description><![CDATA[&#8230;.until newer Maxims demolish old ones: 1. Time taken to do reviews(all artifacts &#8211; requirement specs, design spec, code, test cases etc) is directly proportional to application quality and inversely proportional to number of defects. 2. Definition of &#8220;Done&#8221; = QA executes the software with acceptable types and amounts of defects. 3. &#8220;Working code against [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;.until newer Maxims demolish old ones:</p>
<p>1. Time taken to do reviews(all artifacts &#8211; requirement specs, design spec, code, test cases etc)<br />   is directly proportional to application quality and inversely proportional to number of defects.</p>
<p>2. Definition of &#8220;Done&#8221; = QA executes the software with acceptable types and amounts of defects. </p>
<p>3. &#8220;Working code against tiny database&#8221; !=  &#8220;Working code against production size database&#8221;<br />   or &#8220;Tested against tiny database or tiny files&#8221; != &#8220;Production Ready Application&#8221;</p>
<p>4. Cross vertical understanding by developers is directly proportional to code quality in a given vertical.</p>
<p>4a. Business understanding by developers is directly proportional to Quality of software.</p>
<p>5. Agile development != Automatic Quality and Success<br />   or Speed of agility is directly proportional to Risk of Architecture shifting requirements discovered late in the cycle.</p>
<p>6. Not integrated software = Not working software.</p>
<p>7. Nightly Trunk Building, Deploying and Smoke Tested = Stability.</p>
<p>7a. Nightly Master Build = Successful Compilation + Successful Unit Tests + Successful Integration Tests + Successful Deployment + Successful Smoke Testing</p>
<p>8. Number of Branches is indirectly proportional to Stability of Code.</p>
<p>9. Duration of Branches is indirectly proportional to Stability of Code.</p>
<p>10. Developer Estimate != Commitment</p>
<p>11. Contract = Commitment</p>
<p>12. Probability that Estimate in Contract is in vicinity of accuracy = 0.</p>
<p>13. Probability that Contract will be altered as project progresses = 0.</p>
<p>15. The usability of a product is directly proportional to the hourly salary of the intended end-users.</p>
<p>16. Defect Fixing &#8211; Root Cause Analysis and Addressal = Lost Opportunity for better quality.</p>
<p>17. Probability of defects slipping in is indirectly proportional to build, test, deploy speed.</p>
]]></content:encoded>
			<wfw:commentRss>http://userharmony.com/blog/2008/08/03/new-maxims-i-learned-from-my-latest-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

