<?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"
	>

<channel>
	<title>Journey in Software</title>
	<atom:link href="http://www.journeyinsoftware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.journeyinsoftware.com</link>
	<description>A blog on software engineering</description>
	<pubDate>Tue, 28 Dec 2010 12:33:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Agile Development - Weekly Planning</title>
		<link>http://www.journeyinsoftware.com/2010/12/24/agile-development-weekly-planning/</link>
		<comments>http://www.journeyinsoftware.com/2010/12/24/agile-development-weekly-planning/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 06:33:53 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=225</guid>
		<description><![CDATA[Make the Right Moves Each Step of the Way
The  premise that software projects cannot follow a fixed plan and expect to  succeed due to its complexity, is the basis of agile software  development.  We have to make course corrections each step of the way. However in  agile projects, we can [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Make the Right Moves Each Step of the Way</strong></p>
<p><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">The  premise that software projects cannot follow a fixed plan and expect to  succeed due to its complexity, is the basis of agile software  development.  We have to make course corrections each step of the way. However in  agile projects, we can get lost in a set of practices, and miss the  element of course correction. This is an attempt to emphasize the  importance of investing time and effort into making the right decisions  for course correction throughout an agile software project.</p>
<p>This  article is not only about projects that follow an agile methodology like  Extreme Programming or Scrum religiously, but this is applicable to any  software project that has an agile nature, where the project team  believes in making incremental changes and frequent course corrections.<br />
</span><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;"><br />
</span>A  project team should have a weekly planning session with the  participation of project leader, customer or customer representative,  developers, and QA representatives. The weekly planning meeting should  be an investment in time and effort, that would help the team make the  best possible moves for the week. Although hours spent in meetings may  sound like loss of productivity, the benefits that a project can get  from properly conducted planning sessions is immense. Such sessions  would help iron out ambiguous or vague requirements, help come up with  proper design solutions that would avoid the need of rework, help  breakdown stories into detailed tasks and more accurate estimates.  Insight gained during such sessions of analysis and assessment is  invaluable when deciding on the best possible course for the week.</p>
<p><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">The team should pick stories based on priority for the week, and for each selected story perform the following tasks:<br />
</span></p>
<ol>
<li><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">Analyze requirements in detail.</span></li>
<li><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">Come up with a solution</span></li>
<li><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">Come up with a detailed task breakdown<br />
</span></li>
<li><span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;">Estimate effort for each task in the story<br />
</span></li>
</ol>
<p>The outcomes for each selected story should be tracked on a mind map<span style="background-color: transparent; color: #000000; font-family: Arial; text-decoration: none;"></span> (this can be a single sheet of paper). This mind map can be used by  developers as a reference. This will also be a valuable tool to organize  thoughts, and will be useful for reference in future.</p>
<p><a href="http://knol.google.com/k/himath-dissanayake/agile-development-weekly-planning/160cn8j3yu46r/5#view" target="_self">Read the full article</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2010/12/24/agile-development-weekly-planning/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook users, why it&#8217;s worth looking at Twitter</title>
		<link>http://www.journeyinsoftware.com/2009/05/09/facebook-users-why-its-worth-looking-at-twitter/</link>
		<comments>http://www.journeyinsoftware.com/2009/05/09/facebook-users-why-its-worth-looking-at-twitter/#comments</comments>
		<pubDate>Sat, 09 May 2009 11:46:46 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Cool Software]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=210</guid>
		<description><![CDATA[It takes a while to get the hang of Twitter. For a first time user, it is not obvous how to use Twitter effectively. I have a few friends who are somewhat active on Facebook, but have inactive Twitter accounts. This post is an attempt to compare Facebook and Twitter, show how Twitter is different, [...]]]></description>
			<content:encoded><![CDATA[<p>It takes a while to get the hang of Twitter. For a first time user, it is not obvous how to use Twitter effectively. I have a few friends who are somewhat active on Facebook, but have inactive Twitter accounts. This post is an attempt to compare Facebook and Twitter, show how Twitter is different, and hopefully convince some of my friends to be active Twitter users.</p>
<p>Facebook is a social network with a lot more features than the simple Twitter. Other than that, I see one major difference between the two. On Facebook one can add another user as a friend only with that user&#8217;s authorization. The default behavior on Twitter is to let anyone follow anyone else&#8217;s updates. This fundamental difference has resulted in me using these two social networks in two different ways. Majority of my friends on Facebook are my existing friends. I have made very few new contacts using Facebook. I use Facebook mainly to keep in touch with my existing friends. The conversation there is casual.</p>
<p>I use Twitter differently. Only a few of the people I follow on Twitter were known to me before.<br />
On Twitter, I follow a lot of people in the software industry. Although I Tweet about personal activities, the focus of my tweets has mainly been on Software Engineering related topics. I find Twitter a great way to learn about software engineering or any other specific topics of interest.</p>
<p>There is a lot of interesting and well-known people on Twitter. Here&#8217;s a list of Twitter users worth following:</p>
<p><strong>Well known personalities in the software industry</strong></p>
<ul>
<li><a href="http://twitter.com/KentBeck">Kent Beck</a></li>
<li><a href="http://twitter.com/martinfowler">Martin Fowler</a></li>
<li><a href="http://twitter.com/RonJeffries">Ron Jeffries</a></li>
<li> <a href="http://twitter.com/timoreilly"><span class="fn">Tim O&#8217;Reilly</span></a></li>
<li> <a href="http://twitter.com/WardCunningham"><span class="fn">Ward Cunningham</span></a></li>
</ul>
<p><strong>Other well known Twitter users I follow</strong></p>
<ul>
<li><a href="http://twitter.com/gtdguy">David Allen</a></li>
<li><a href="http://twitter.com/guykawasaki">Guy Kawasaki</a></li>
<li><a href="http://twitter.com/jack_welch">Jack Welch</a></li>
<li><a href="http://twitter.com/StephenRCovey">Stephen Covey</a></li>
<li><a href="http://twitter.com/tonyrobbins">Tony Robbins</a></li>
</ul>
<p><strong>Enrich your Twitter experience using TweetDeck</strong></p>
<p>Although you can always use the simple web interface given by Twitter, you can have a richer experience by using a client like <a href="http://www.tweetdeck.com/beta/">TweetDeck</a>, which is my favorite Twitter client.</p>
<p>TweetDeck is an Adobe Air application and you can install it in a few minutes. It allows you to group tweets. For example you can have a group of favorite users, or have another group with tweets on Twitter that has the words “Unit Testing”. I find this very useful as it&#8217;s a great way to know what&#8217;s happening right now related to a particular key word.</p>
<p><a href="http://www.journeyinsoftware.com/wp-content/uploads/2009/05/tweetdeck1.png"><img class="alignnone size-full wp-image-214" title="tweetdeck1" src="http://www.journeyinsoftware.com/wp-content/uploads/2009/05/tweetdeck1.png" alt="" width="662" height="376" /></a></p>
<p><a href="http://twitter.com/himath">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2009/05/09/facebook-users-why-its-worth-looking-at-twitter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The story of software freedom</title>
		<link>http://www.journeyinsoftware.com/2009/05/01/the-story-of-software-freedom/</link>
		<comments>http://www.journeyinsoftware.com/2009/05/01/the-story-of-software-freedom/#comments</comments>
		<pubDate>Fri, 01 May 2009 12:34:56 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=188</guid>
		<description><![CDATA[I switched from Windows XP on my laptop to the free and open source Ubuntu Linux (vrsion 8.04) about an year ago. Before that I was frustrated with Windows more than once. There were occasional crashings and subsequent loss of data, increased slowness, and vulnerability to viruses. Getting used to Ubuntu was easy, and I [...]]]></description>
			<content:encoded><![CDATA[<p>I switched from Windows XP on my laptop to the free and open source Ubuntu Linux (vrsion 8.04) about an year ago. Before that I was frustrated with Windows more than once. There were occasional crashings and subsequent loss of data, increased slowness, and vulnerability to viruses. Getting used to Ubuntu was easy, and I could find free and open source software for Ubuntu that met my needs. On Ubnutu, I can do almost everything I did on Windows, and more with less disruptions to my work.</p>
<p>As a beneficiary of “free” and “open source” software, I thought of tracing its history.</p>
<h2>Free Software</h2>
<p>Let&#8217;s try to understand what &#8220;free&#8221; software is from a layman&#8217;s perspective.  In the following video, Stephen Fry presents the argument: if you  own your house, you can improve the plumbing or do any changes you want. Why can&#8217;t you do the same to software. Why can&#8217;t the community alter and improve software? That is how science works. All knowledge is free all knowledge is shared.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/3dcxtEKShXA&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/3dcxtEKShXA&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Now let&#8217;s look at a more formal definition of free software by Richard Stallman, the president of the Free Software Foundation (http://www.fsf.org/)<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/uJi2rkHiNqg&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/uJi2rkHiNqg&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Note, the word &#8220;free&#8221; here means &#8220;free&#8221; as in free speech, “free” not as in free beer.</p>
<p>Stallman lists the following freedoms that software should have:</p>
<ul>
<li>Freedom 0 - Freedom to run the program however you wish</li>
<li>Freedom 1 - Freedom to study source code and change it to do what you wish</li>
<li>Freedom 2 - Freedom to distribute copies of the program as you wish</li>
<li>Freedom 3 - Freedom to distribute modified copies as you wish</li>
</ul>
<p>According to Stallman, if one of the freedoms is missing, it&#8217;s proprietary software; it should not exist; we should reject proprietary software, and replace its unjust social system with the ethical social system of free software.</p>
<h2>Is proprietary software really evil and should we reject them?</h2>
<p>The argument is that knowledge (like science) should be shared. Good scientists share knowledge, and all knowledge is open and free.</p>
<p>However, software is also a business. Had it not been a business, software may not have advanced to where it is now. Let&#8217;s for a moment look at the analogy of buying a car. What if the buyer could replicate the car and freely distribute clones. If it were possible, the auto industry would collapse. Therefore, if we allow the sharing of software, the business model of selling or renting software would fail. The ability to easily replicate software mandates this restriction of freedom.</p>
<p>Could there be a better software business model that allows freedom, as well as generates revenue. Yes. The commercial value in the software industry has started to move from the product to related services like technical support, trainings, customizations of the product.</p>
<p>“&#8230;  software itself is no longer the primary locus of value in the computer industry. The commoditization of software drives value to services enabled by that software. New business models are required. “ - <a href="http://www.oreillynet.com/pub/a/oreilly/tim/articles/paradigmshift_0504.html">Open Source Paradigm Shift</a></p>
<p>In my view, in the coming years, we will see a competion between these two business models. In some cases, proprietary software would find it difficult to compete with free and open source software with large developer communities, and service based business models, while in some other cases community based open source software that fail to attract large developer communities could lag behind proprietary software. My view is that free and open source software and proprietary software could co-exisit to provide maximum value to consumers.</p>
<h2>Open Source</h2>
<p>Now let&#8217;s look at how the term &#8220;Open Source&#8221; originated.</p>
<p><em>&#8220;The Open Source Initiative is a marketing program for free software. It&#8217;s a pitch for &#8220;free software&#8221; on solid pragmatic grounds rather than ideological tub-thumping. The winning substance has not changed, the losing attitude and symbolism have.&#8221;</em> - Producing Open Source Software , Karl Fogel (http://producingoss.com/)</p>
<p>The difficulty to market &#8220;Free&#8221; software in the business world resulted in the origination of the term &#8220;Open Source&#8221;.  However it has resulted in some friction between the Free Software movement and the Open Source movement.</p>
<p>The following videos discuss the switch to open source.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Acy2sgae5eY&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Acy2sgae5eY&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/UhXrUh9TT3o&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/UhXrUh9TT3o&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Related videos: <a href="http://video.google.com/videoplay?docid=7707585592627775409">Revolution OS</a></p>
<p><a href="http://twitter.com/himath">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2009/05/01/the-story-of-software-freedom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Book: Super Flexibility for the Knowledge Enterprises</title>
		<link>http://www.journeyinsoftware.com/2009/02/14/book-super-flexibility-for-the-knowledge-enterprises/</link>
		<comments>http://www.journeyinsoftware.com/2009/02/14/book-super-flexibility-for-the-knowledge-enterprises/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 08:50:13 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Entrepreneurship]]></category>

		<category><![CDATA[Great  Books]]></category>

		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=180</guid>
		<description><![CDATA[I recently read the book: “Super-Flexibility for the Knowledge Enterprises” by Homa Bahrami and Stuart Evans. It discusses the concept of a knowledge enterprise being super-flexible to harness the inevitable uncertainty. This is highly applicable to start-ups that have to go through uncertain periods as well as to any organization being affected by the current [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.journeyinsoftware.com/wp-content/uploads/2009/02/suferflexibility.jpg"><img class="alignleft size-medium wp-image-181" title="suferflexibility" src="http://www.journeyinsoftware.com/wp-content/uploads/2009/02/suferflexibility.jpg" alt="" width="160" height="173" /></a>I recently read the book: “<a href="http://www.amazon.com/Super-Flexibility-Knowledge-Enterprises-Homa-Bahrami/dp/3540205764">Super-Flexibility for the Knowledge Enterprise</a><a href="http://www.amazon.com/Super-Flexibility-Knowledge-Enterprises-Homa-Bahrami/dp/3540205764">s</a>” by Homa Bahrami and Stuart Evans. It discusses the concept of a knowledge enterprise being super-flexible to harness the inevitable uncertainty. This is highly applicable to start-ups that have to go through uncertain periods as well as to any organization being affected by the current economic environment.</p>
<p>The book is not an easy read, and it does not provide prescriptive actions similar to 10 steps to building your start-up. However, it has a lot of insights that you would be able to apply, if you read carefully with your organization in mind.</p>
<p><a href="http://twitter.com/himath">Follow me on Twitter</a></p>
<p><a href="http://www.amazon.com/Super-Flexibility-Knowledge-Enterprises-Homa-Bahrami/dp/3540205764"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2009/02/14/book-super-flexibility-for-the-knowledge-enterprises/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pain in fingers with computer use</title>
		<link>http://www.journeyinsoftware.com/2009/01/27/fight-with-pain-in-my-fingers/</link>
		<comments>http://www.journeyinsoftware.com/2009/01/27/fight-with-pain-in-my-fingers/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 09:50:58 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[carpal tunnel syndrome]]></category>

		<category><![CDATA[ergonomics]]></category>

		<category><![CDATA[keyboard]]></category>

		<category><![CDATA[laptop]]></category>

		<category><![CDATA[mouse]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=160</guid>
		<description><![CDATA[Do you use your laptop as a desktop? Then be aware!
How convenient is it to use a laptop instead of a desktop computer? The amount of space it saves is amazing, and when you use the same computer both at home and at work, there is no need to synchronize data. I stopped using a [...]]]></description>
			<content:encoded><![CDATA[<h2 class="western">Do you use your laptop as a desktop? Then be aware!</h2>
<p style="margin-bottom: 0cm;">How convenient is it to use a laptop instead of a desktop computer? The amount of space it saves is amazing, and when you use the same computer both at home and at work, there is no need to synchronize data. I stopped using a desktop when I bought my first laptop about four years ago. Since then I have been using my laptop as a desktop, working on it many hours a day.</p>
<p style="margin-bottom: 0cm;">Recently I started feeling tingling sensations in my fingers and occasional sharp pains in my hands while working on the computer. When I searched the web, I realized that I had the symptoms of  Carpal Tunnel Syndrome. Further look up revealed that I have been having a poor posture while working on the laptop all these years.</p>
<h2 class="western">The correct way to use a laptop as a desktop</h2>
<p style="margin-bottom: 0cm;"><span style="font-style: normal;">The website: <a href="http://ergo.human.cornell.edu/culaptoptips.html">http://ergo.human.cornell.edu/culaptoptips.html</a></span><span style="font-style: normal;"><span style="text-decoration: none;"> </span></span><span style="color: #000000;"><span style="font-style: normal;"><span style="text-decoration: none;">gives the following advice about using your laptop as a desktop:</span></span></span></p>
<p><em>if you use your laptop at work as your main computer you should: </em></p>
<ul>
<li> <em>position this on your desk/worksurface in front of you so that you can see the screen 	without bending your neck. This may require that you elevate the 	laptop off the desk surface using a stable support surface, such as a computer monitor pedestal. </em></li>
<li><em>use a separate keyboard and mouse. You should be able to 	connect a keyboard and mouse directly to the back of the laptop or 	to a docking station”</em></li>
</ul>
<p><em></em></p>
<h2 class="western">The correct way to use a mouse</h2>
<p style="margin-bottom: 0cm;">After switching to the recommended set-up, I could feel a slight improvement in my condition. However, the issue did not disappear, especially on the right hand which  I use to hold the mouse. It seemed that mouse use contributed a lot to my condition. Further search brought me to the an <a href="http://www.rsicover.com/help/mouseusage.htm">article</a> that described how to use the mouse properly:</p>
<p style="margin-bottom: 0cm;">I started practicing the advice, especially when using mouse buttons, and although it took some time to get used to, it further improved my condition.</p>
<p style="margin-bottom: 0cm;">However, the discomfort returned with many hours of mouse use, that prompted me to look for ways to use the comptuer with minimum use of the mouse.</p>
<h2 class="western">How to use computer with minium use of the mouse</h2>
<h3 class="western">Gmail shortcuts</h3>
<p>I spend one to two hours everyday on my email using Gmail as the mail client. I learnt that it&#8217;s in fact possible to <a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;answer=6594">configure Gmail to use keyboard short cuts</a>. This is a very convenient way to use Gmail. Even when you have the option of using the  mouse, using Gmail shortcuts can be faster.</p>
<h3 class="western">Mouseless Browsing</h3>
<p>I use the web a lot as well as use a lot of hosted services with Firefox as my browser. The Firefox plugin: <a href="https://addons.mozilla.org/en-US/firefox/addon/879?id=879"><em>Mouselss Browsing</em></a> allows one to perform almost all operations on the browser without using the mouse. Although it takes a while to get used it I found it quite effective.</p>
<h2 class="western">Exercises</h2>
<h2 class="western"><a href="http://www.journeyinsoftware.com/wp-content/uploads/2009/01/carpaltunnelsyndrome.jpg"><img class="size-medium wp-image-163 alignleft" style="margin: 5px 10px;" title="carpaltunnelsyndrome" src="http://www.journeyinsoftware.com/wp-content/uploads/2009/01/carpaltunnelsyndrome-225x300.jpg" alt="" width="180" height="240" /></a></h2>
<p>Although all these changes helped, they did not completely cure me. So, I bought the book: <a href="http://www.amazon.com/Conquering-Carpal-Tunnel-Syndrome-Repetitive/dp/1572240393/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1232624877&amp;sr=8-1">Conquering Carpal Tunnel  Syndrome</a> from amazon.</p>
<p>I am glad I bought the book as following the simple exercises mentioned in the book gave me instant relief.</p>
<p>I continue to follow the exercises and use correct posture when I work at the computer. Even though I still have a little bit of pain, it is gradually reducing, and it has not prevented me from spending many hours at the computer.</p>
<p><a href="http://twitter.com/himath">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2009/01/27/fight-with-pain-in-my-fingers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>It ain&#8217;t a Unit Test just because you used xUnit</title>
		<link>http://www.journeyinsoftware.com/2008/12/02/it-aint-a-unit-test-just-because-you-used-xunit/</link>
		<comments>http://www.journeyinsoftware.com/2008/12/02/it-aint-a-unit-test-just-because-you-used-xunit/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 11:06:11 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Project Management]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[extreme programming]]></category>

		<category><![CDATA[Tech Talk]]></category>

		<category><![CDATA[test driven development]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[unit testing]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=136</guid>
		<description><![CDATA[Test Driven Development (TDD) is great. When I started unit testing and TDD with JUnit about six years ago, it was a relatively new concept. I was impressed by the way it helped development, and led to developing better code. However, it&#8217;s only now that I realize how little I knew about unit testing back [...]]]></description>
			<content:encoded><![CDATA[<p>Test Driven Development (TDD) is great. When I started unit testing and TDD with JUnit about six years ago, it was a relatively new concept. I was impressed by the way it helped development, and led to developing better code. However, it&#8217;s only now that I realize how little I knew about unit testing back then.</p>
<p>I can remember an XP project where we developed an enterprise application which had two layers of session beans, and entity beans that got persisted in an Oracle database. We used to have unit tests (that&#8217;s what we called them) testing all layers, accessing the session beans and propagating all the way down to the entity beans and to the database. As a result of testing all layers, running the whole suite of tests took us about one and a half hours. We were not convinced that our so called unit tests added any value to the project as it took us so much time to use them properly. So we ended up running only groups of tests together, and not the whole suite.</p>
<p>Recently I stumbled upon an <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=126923">article</a> by Michael Feathers that literally describes the same issue we faced. He lays down the following rules:</p>
<p>A test is not a unit test if:<br />
1.It talks to the database<br />
2.It communicates across the network<br />
3.It touches the file system<br />
4.It can&#8217;t run at the same time as any of your other unit tests<br />
5.You have to do special things to your environment (such as editing config files) to run it.</p>
<p>The main takeway from this is that the purpose of a unit test is to test the functionality of a particular unit of code. It need not test all the layers of functionality upon which the class being tested depends (e.g. entity beans, databases etc.). In our case, we could have used mock objects to separate the business logic from the underlying persistence layers. This should have allowed us to simply test the business logic of our classes using unit tests without effectively writing comprehensive but bulky functional tests. We could have defined our classes with dependency injection in mind. Dependency injection is the practice of writing testable code by separating code for object creation and business logic, and passing all dependent objects through the constructors of objects.</p>
<p>The Google tech-talk below provides a great explanation of this concept:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="349" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/wEhu57pih5w&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" /><embed type="application/x-shockwave-flash" width="425" height="349" src="http://www.youtube.com/v/wEhu57pih5w&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>So, just because you use an xUnit framework and write automated tests for your classes, they don&#8217;t necessarily become unit tests.<br />
<!-- AddThis Button BEGIN --><a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;pub=hiranya&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"><img src="http://s7.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a><br />
<!-- AddThis Button END --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2008/12/02/it-aint-a-unit-test-just-because-you-used-xunit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Are XP User Stories the same as Use Cases?</title>
		<link>http://www.journeyinsoftware.com/2008/11/30/are-xp-user-stories-the-same-as-use-cases/</link>
		<comments>http://www.journeyinsoftware.com/2008/11/30/are-xp-user-stories-the-same-as-use-cases/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 11:46:19 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Project Management]]></category>

		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[estimation]]></category>

		<category><![CDATA[extreme programming]]></category>

		<category><![CDATA[unified process]]></category>

		<category><![CDATA[use cases]]></category>

		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=131</guid>
		<description><![CDATA[A topic which often surfaces in discussions about XP is, whether Stories in XP are the same as Use Cases under a different name. Apparently, they seem to be the same. However, if you analyze a little deeper it&#8217;s possible to identify subtle differences between the 2 approaches.
In my view, the main difference is their [...]]]></description>
			<content:encoded><![CDATA[<p>A topic which often surfaces in discussions about XP is, whether Stories in XP are the same as Use Cases under a different name. Apparently, they seem to be the same. However, if you analyze a little deeper it&#8217;s possible to identify subtle differences between the 2 approaches.</p>
<p>In my view, the main difference is their purpose of existence. The main purpose of a user story in XP is to identify the scope of the project as early as possible and to track project progress. While a use case tries to capture requirements at the required level of detail. The XP approach is to have the story defined in simple words and to get more details from the customer before development starts.</p>
<p><span style="font-weight: bold;">User Stories in XP<br />
</span></p>
<ol>
<li>Purpose: Estimation, identification of scope early, and tracking progress.</li>
<li>Characteristics: Simple; any customer visible functionality.</li>
<li>Approach: Meet customer face-to-face and get details before implementing.</li>
<li>Suitability: Projects that need early implementation.</li>
</ol>
<p><span style="font-weight: bold;">Use Cases as used in the Unified Process<br />
</span></p>
<ol>
<li>Purpose: Describe all tasks that users will need to perform with the system.</li>
<li>Characteristics: Can be scaled to have many details; functional and behavioral requirements.</li>
<li>Approach: Gathered mainly initially (inception &amp; elaboration phases).</li>
<li>Suitability: complex large projects.</li>
</ol>
<p><!-- AddThis Button BEGIN --><a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;pub=hiranya&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"><img src="http://s7.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a><br />
<!-- AddThis Button END --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2008/11/30/are-xp-user-stories-the-same-as-use-cases/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Testing</title>
		<link>http://www.journeyinsoftware.com/2008/11/23/agile-testing/</link>
		<comments>http://www.journeyinsoftware.com/2008/11/23/agile-testing/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 09:44:39 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Great Videos]]></category>

		<category><![CDATA[Project Management]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[extreme programming]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Tech Talk]]></category>

		<category><![CDATA[Testing]]></category>

		<category><![CDATA[Video]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=124</guid>
		<description><![CDATA[Today I watched a talk from the Google Tech talk series by Elisabeth Hendrickson on YouTube. This talk provides a good overview of testing in an agile project. She talks about:

Agile methodologies in general
Test driven coding
User stories and acceptance test cases
Documenting test cases
Testing when all features are not complete.

Watch Video:

To understand this talk, it requires [...]]]></description>
			<content:encoded><![CDATA[<p>Today I watched a talk from the Google Tech talk series by Elisabeth Hendrickson on YouTube. This talk provides a good overview of testing in an agile project. She talks about:</p>
<ul>
<li>Agile methodologies in general</li>
<li>Test driven coding</li>
<li>User stories and acceptance test cases</li>
<li>Documenting test cases</li>
<li>Testing when all features are not complete.</li>
</ul>
<p>Watch Video:<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/bqrOnIECCSg&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bqrOnIECCSg&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>To understand this talk, it requires no previous knowledge of agile methodologies as the presenter starts with an explanation of agile methodologies.</p>
<p>We adopt some of these practices at <a href="http://www.orangehrm.com">OrangeHRM</a>, which uses a hybrid process that includes chosen practices from both agile and plan-driven methodologies. I am planning watch the whole video again with the team and have a discussion. It&#8217;ll be interesting to identify how we could further improve the way we do things.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2008/11/23/agile-testing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>5 Qualities of a Customer for Software Project Success</title>
		<link>http://www.journeyinsoftware.com/2008/11/20/5-qualities-of-a-customer-for-software-project-success/</link>
		<comments>http://www.journeyinsoftware.com/2008/11/20/5-qualities-of-a-customer-for-software-project-success/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 12:49:54 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Project Management]]></category>

		<category><![CDATA[processes]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=70</guid>
		<description><![CDATA[
The search for the so called &#8220;silver bullet&#8221; or the cure-all in software development has been there for ages. Many methodologies were developed, each claiming to be the solution. However, still there is no one universally accepted methodology that can solve all the inherent issues in software development. While all these approaches try to find [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div>
<p><!-- 	 -->The search for the so called &#8220;silver bullet&#8221; or the cure-all in software development has been there for ages. Many methodologies were developed, each claiming to be the solution. However, still there is no one universally accepted methodology that can solve all the inherent issues in software development. While all these approaches try to find an ideal development methodology for success in software projects, an important variable is usually forgotten. That is, the role of a customer in the success of a software project.</p>
<p>A good customer has an enormous impact on the success of a software project. A bad customer may fail a project which has the best engineering and project management skills.</p>
<p>The acronym CRACK   	 	 	 	<!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 	  --><sup>1 </sup> <!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } -->represents 5 qualities of a good customer (or customer representative).</p>
<ul>
<li><strong>Collaborative</strong>, and willing to work with the project team toward the same goals, initially with requirements, and later with deployments and any integrations.</li>
<li><strong>Representative</strong> of the end users of the software, and is able to speak on behalf of them.</li>
<li><strong>Authorized</strong> to make decisions that have a significant impact on the project. If the customer is not authorized, there could be delays in proceedings until the necessary approvals are received.</li>
<li><strong>Committed</strong>, willing to see the project to the end, and willing to put effort to eliminate inevitable hurdles that software projects face.</li>
<li><strong>Knowledgeable</strong> about the organization and the requirements.</li>
</ul>
<p>Here&#8217;s a comparison of two customers I have worked with in the past (Each quality is scored on a scale from 1-5, 5 being excellent)</p>
<table border="2" cellspacing="0" cellpadding="4" width="100%" bordercolor="#000000"><col width="43"></col> <col width="99"></col> <col width="114"></col></p>
<tbody>
<tr valign="top">
<td width="17%"></td>
<td width="39%">Customer #1 (project #1)</td>
<td width="44%">Customer #2 (project #2)</td>
</tr>
<tr valign="top">
<td width="17%">Collaborative</td>
<td width="39%">5 - Communicated the requirements clearly including the 			required screens. Replied to emails fast. Always clear in 			communication. Available over phone when needed.</td>
<td width="44%">1 - Sometimes took weeks to reply to emails. Rarely available 			for calls.  Vague requirements. Did not give timely feedback to 			specifications and early releases of the software.</td>
</tr>
<tr valign="top">
<td width="17%">Representative</td>
<td width="39%">4 - He was in a position to directly answer questions about 			requirements based on his understanding of the end user 			requirements.</td>
<td width="44%">1 - He had to go back to the end users and come back to us to 			answer questions about requirements. The answers usually were 			copied and pasted from answers  received from end users.</td>
</tr>
<tr valign="top">
<td width="17%">Authorized</td>
<td width="39%">4 - Had authority.</td>
<td width="44%">4 - Had authority.</td>
</tr>
<tr valign="top">
<td width="17%">Committed</td>
<td width="39%">5 - Committed to make the project a success.</td>
<td width="44%">2 - Partly committed. The project was a low priority among 			other commitments.</td>
</tr>
<tr valign="top">
<td width="17%">Knowledgable</td>
<td width="39%">4 - Had a good understanding of the end user needs and the 			needs of the company.</td>
<td width="44%">2 - Did not have much understanding of the end user needs.</td>
</tr>
</tbody>
</table>
<p>Project #2 continued to be in an uncertain state with periods of inactivity and late change requests leading to indefinite delays in project completion. Although Project #1 had its share of issues, most the issues were related to engineering (e.g. performace), and with a little bit extra work, the team was able to overcome them.</p>
<p>It&#8217;s good to know what sort of a customer you&#8217;re dealing with before you start a software project. Although most of the time we don&#8217;t have the luxury to pick and choose customers, knowing the customer characteristics makes is possible to do the necessary precautionary process adjustments.</p>
<p style="margin-bottom: 0cm;">[1]<!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --><span style="font-family: times new roman;"><span style="font-size: x-small;">Boehm, Barry, and Richard Turner. <em>Balancing Agility and Discipline</em>. Addison-Wesley, 2006. </span></span></p>
<p><!-- AddThis Button BEGIN --><a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;pub=hiranya&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"><img src="http://s7.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a><br />
<!-- AddThis Button END --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2008/11/20/5-qualities-of-a-customer-for-software-project-success/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Book to read: The 7 Habits of Highly Effective People</title>
		<link>http://www.journeyinsoftware.com/2008/11/17/book-to-read-the-7-habits-of-highly-effective-people/</link>
		<comments>http://www.journeyinsoftware.com/2008/11/17/book-to-read-the-7-habits-of-highly-effective-people/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 16:12:55 +0000</pubDate>
		<dc:creator>himath</dc:creator>
		
		<category><![CDATA[Great  Books]]></category>

		<category><![CDATA[7 habits]]></category>

		<category><![CDATA[productivity]]></category>

		<category><![CDATA[stephen covey]]></category>

		<guid isPermaLink="false">http://www.journeyinsoftware.com/?p=63</guid>
		<description><![CDATA[Dr. Stephen R. Covey&#8217;s bestseller: The 7 Habits of Highly Effective People presents a simple principle centered approach for solving personal and professional problems. If you want to build a highly effective team at work, I recommend you expose your team members to the invaluable material in this book. The book discusses how to be [...]]]></description>
			<content:encoded><![CDATA[<p>Dr. Stephen R. Covey&#8217;s bestseller: The 7 Habits of Highly Effective People presents a simple principle centered approach for solving personal and professional problems. If you want to build a highly effective team at work, I recommend you expose your team members to the invaluable material in this book. The book discusses how to be effective in leadership, time management, negotiation, and most importantly, how to be a better person.</p>
<p style="margin-bottom: 0cm;">A few years ago, I read the book and used its material in the trainings I conducted for my team of software engineers. Now, it&#8217;s time to have a similar training at <a href="http://www.orangehrm.com">OrangeHRM</a> (where I work now). So I started reading the book again to refresh my memory. As I move from habit to habit, I plan to blog about how to apply the principles in a software company.</p>
<p style="margin-bottom: 0cm;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.journeyinsoftware.com/2008/11/17/book-to-read-the-7-habits-of-highly-effective-people/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

