<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7762060438677881359</id><updated>2012-02-16T14:15:59.781-06:00</updated><title type='text'>What to do? we are like this only</title><subtitle type='html'>Observations on Agile practices</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-1890784157948264669</id><published>2010-12-16T08:45:00.004-06:00</published><updated>2010-12-16T08:53:28.730-06:00</updated><title type='text'>Product development - Needs versus Wants</title><content type='html'>One of the primary role of a product manager is to prioritize the numerous features into a release of a product. Some of these features may be a "need to have" feature while the rest will be a "want to have" feature.&lt;br /&gt;&lt;br /&gt;How do you differentiate a need from a want?&lt;br /&gt;"Need" is something that your end users are assuming your product has and won't necessarily be wowed by its presence. This feature is usually something like a regulatory requirement or security feature or may be the basic feature set of your product. Lets take an web email portal as an example, any new client would expect to be able to send and receive emails. There is an expectation that only an authorized user can view their emails. You cannot have a viable web based email without out a log in and log out feature. However something like tagging emails or being able to search all your inbox blazing fast is not a need.&lt;br /&gt;&lt;br /&gt;"Want" is something that will set you apart from competition, this could be anything from a killer feature set like the touch screen interface when the iphone first came out or performance feature that out paces everything in the market . Like what google was when it first released its software.&lt;br /&gt;&lt;br /&gt;It is a product managers job to balance the need and want feature set and come up with a compelling product that both satisfies all the target demographics needs as well has enough wow features to  make users want to use your software over the competitors software.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One way to come up with the right mix is  to split  all your features into  "Needs" and "Wants" category and then pick the highest priority wants and needs. Making a clear distinction between the two types of features, lets you maintain a right balance.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xIeQgW2t_cg/TQonpgjahuI/AAAAAAAAAJ8/RGnefuV-BBY/s1600/WantsVsNeeds.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 314px; height: 400px;" src="http://1.bp.blogspot.com/_xIeQgW2t_cg/TQonpgjahuI/AAAAAAAAAJ8/RGnefuV-BBY/s400/WantsVsNeeds.jpg" alt="" id="BLOGGER_PHOTO_ID_5551293084754151138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are trying to build a &lt;a href="http://martinfowler.com/bliki/UtilityVsStrategicDichotomy.html"&gt;utility&lt;/a&gt; software, then your final list should probably be heavy on the "needs", while if you are in the business of building &lt;a href="http://martinfowler.com/bliki/UtilityVsStrategicDichotomy.html"&gt;Strategic&lt;/a&gt; software, then you are better off going with the bare minimum need features and pick and choose your highest wants.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-1890784157948264669?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/1890784157948264669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2010/12/product-development-needs-versus-wants.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/1890784157948264669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/1890784157948264669'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2010/12/product-development-needs-versus-wants.html' title='Product development - Needs versus Wants'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xIeQgW2t_cg/TQonpgjahuI/AAAAAAAAAJ8/RGnefuV-BBY/s72-c/WantsVsNeeds.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-8047763396698114666</id><published>2009-02-11T10:04:00.006-06:00</published><updated>2010-01-26T07:21:28.657-06:00</updated><title type='text'>They don't have the right to read a book out loud</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xIeQgW2t_cg/S17sIe30QbI/AAAAAAAAAIA/GPNas7JTSbw/s1600-h/Exteinct-dino.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_xIeQgW2t_cg/S17sIe30QbI/AAAAAAAAAIA/GPNas7JTSbw/s400/Exteinct-dino.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5431037831125680562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;"They don't have the right to read a book out loud" said Paul Aiken, executive director of the Authors Guild&lt;br /&gt;&lt;br /&gt;http://online.wsj.com/article/SB123419309890963869.html&lt;br /&gt;&lt;br /&gt;Really !!! REALLYY!!!&lt;br /&gt;&lt;br /&gt;Businesses need to keep up with technological advances. Some people are incapable dealing with change, so they hold on to old tested ideas.&lt;br /&gt;Instead of trying to find ways to leverage a new innovative technology, they try to fight it. These people will eventually lose, because there is a demand and the some publisher/author will break ranks and satiate that demand.&lt;br /&gt;&lt;br /&gt;The question is will the book industry go the music industry way. Do a bunch of publishers have to fail before the industry realizes that the only way forward is to embrace change.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div cc="http://creativecommons.org/ns#" about="http://www.flickr.com/photos/vintfalken/2291908986/"&gt;&lt;a rel="cc:attributionURL" href="http://www.flickr.com/photos/vintfalken/"&gt;http://www.flickr.com/photos/vintfalken/&lt;/a&gt; / &lt;a rel="license" href="http://creativecommons.org/licenses/by-nd/2.0/"&gt;CC BY-ND 2.0&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-8047763396698114666?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/8047763396698114666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2009/02/they-dont-have-right-to-read-book-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/8047763396698114666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/8047763396698114666'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2009/02/they-dont-have-right-to-read-book-out.html' title='They don&apos;t have the right to read a book out loud'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xIeQgW2t_cg/S17sIe30QbI/AAAAAAAAAIA/GPNas7JTSbw/s72-c/Exteinct-dino.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-8890203015004747652</id><published>2009-01-22T07:05:00.012-06:00</published><updated>2010-01-10T06:39:48.114-06:00</updated><title type='text'>Is QA incented to release software in the traditional development model</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xIeQgW2t_cg/SjIZinAknlI/AAAAAAAAAHU/wVvupj68GuE/s1600-h/QAInspection.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 133px;" src="http://3.bp.blogspot.com/_xIeQgW2t_cg/SjIZinAknlI/AAAAAAAAAHU/wVvupj68GuE/s200/QAInspection.jpg" alt="" id="BLOGGER_PHOTO_ID_5346363790019829330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Two years ago I was part of a team that built a large insurance system and released it to group of beta customers. The response from the customer was positive. The development aspect of the project got done and I left the client. Last week I happened to meet with someone associated with the project, and he told me that the software had never made it to GA (General Availability). Apparently the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QA&lt;/span&gt; folk were not 'done' with their work and were unwilling to certify the software.&lt;br /&gt;&lt;br /&gt;Even though this may seem odd, it makes perfect sense if you understand the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SDLC&lt;/span&gt; cycle.  The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;QA&lt;/span&gt; folk have no say in the development of the software, when the development team gets done, it throws the software over the wall into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;QA&lt;/span&gt; land. If a bug is discovered once the software is in production, management comes down on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;QA&lt;/span&gt; team like a ton of bricks for not catching the bug, if everything goes well in production the development team gets congratulated for the superior product.&lt;br /&gt;It is a typical case of heads you win, tails I lose.&lt;br /&gt;&lt;br /&gt;This makes me wonder, what is a QA manager's incentive to release software to production.&lt;br /&gt;&lt;div&gt;&lt;br /&gt; Contrast this with a typical Agile team, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;where QA&lt;/span&gt; would be part of your development team, this helps you to bake quality into the software as it is being built, rather come back and find defects once the whole software has been developed.&lt;br /&gt;As QA is part of the development process, it gives them more time to test the new features as they are being built and regression test the software in every iteration also the cost of fixing defects go down as the developers are more familiar with the code during the iteration than coming back and picking it up at the end of the development cycle.&lt;br /&gt;&lt;br /&gt;The cost of fixing bugs in production should be brought down.&lt;br /&gt;The process where from the time the bug is identified and to the time the software is patched (hotfixed) and put in production should be minimum. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;If we do this QA&lt;/span&gt; will be more confident to release the software because  even if something went wrong the team can fix it at a low cost and in minimum time.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-8890203015004747652?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/8890203015004747652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2009/01/is-qa-incented-to-release-software-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/8890203015004747652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/8890203015004747652'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2009/01/is-qa-incented-to-release-software-in.html' title='Is QA incented to release software in the traditional development model'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xIeQgW2t_cg/SjIZinAknlI/AAAAAAAAAHU/wVvupj68GuE/s72-c/QAInspection.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-6033197050612930072</id><published>2008-09-04T05:41:00.005-06:00</published><updated>2008-09-10T05:50:44.947-06:00</updated><title type='text'>Developing on Windows: Reinstalling disabled services</title><content type='html'>As part of our project we have automated installing a service as part of our deployment script. However services  go into a zombie state of 'disabled' if you have given the service a wrong password and tried to start it up.&lt;br /&gt;Once a service gets disabled you cannot start, stop or uninstall it from the services console (services. msc). Rebooting the machine gets rid of the disabled service, and we can reinstall the service, however rebooting isn't an option for production machines.&lt;br /&gt;&lt;br /&gt;We finally realized that we could reinstall the service over a disabled service as long as the "service console" (Service.msc) was closed.&lt;br /&gt;&lt;br /&gt;It is annoying how having the GUI for service manager open, somehow stops me from reinstalling a service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-6033197050612930072?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/6033197050612930072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/09/developing-on-windows-reinstalling.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/6033197050612930072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/6033197050612930072'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/09/developing-on-windows-reinstalling.html' title='Developing on Windows: Reinstalling disabled services'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-5128562060617395370</id><published>2008-08-02T08:10:00.021-06:00</published><updated>2008-08-03T11:21:55.978-06:00</updated><title type='text'>The Agile Maturity Model</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Note: This blog is a companion to the talk given by Ravi Gujral and Shaun Jayaraj at Agile Philly &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.agilephilly.com/Agile%20Maturity%20Model.ashx"&gt;http://www.agilephilly.com/Agile%20Maturity%20Model.ashx&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The best way to start describing the Agile Maturity Model (AMM) is by talking about what it is not.&lt;br /&gt;&lt;br /&gt;The AMM is not&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A mechanism to measure the performance of a team&lt;/li&gt;&lt;li&gt;A pre-defined set of practices, whose adoption guarantees successful delivery of projects in time  and within a budget&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The AMM, in contrast, tries to quantify degree of responsiveness of a team to an organization's business needs. The philosophy being that increasing the discipline and proficiency of executing some best practices will increase the degree of responsiveness. The AMM primarily focuses on  application development activities; the dimensions of the AMM are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Testing&lt;/li&gt;&lt;li&gt;Source code management&lt;/li&gt;&lt;li&gt;Collective code ownership&lt;/li&gt;&lt;li&gt;Collaboration&lt;/li&gt;&lt;li&gt;Responsiveness to business&lt;/li&gt;&lt;li&gt;Assurance and governance&lt;/li&gt;&lt;li&gt;Story formation&lt;/li&gt;&lt;li&gt;Design simplicity&lt;/li&gt;&lt;li&gt;Build process&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For each of the above dimensions, the AMM lists behavioral patterns exhibited by teams.  Teams can use the AMM as a reference to identify and compare the behavior that they currently exhibit and plan to alter and tailor them.&lt;br /&gt;&lt;br /&gt;For example the behaviors identified in the testing dimension are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Acceptance testing in lieu of all other tests&lt;/li&gt;&lt;li&gt;No unit testing framework, ad hoc testing (Manual testing of individual components /controls)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unit testing, manual functional testing; application has a testable architecture&lt;/li&gt;&lt;li&gt;Unit testing integrated into build process, testing automated as much as reasonable given application&lt;/li&gt;&lt;li&gt;Developers write unit tests before writing functional code&lt;/li&gt;&lt;li&gt;Test are identified and produced as part of a story creation&lt;/li&gt;&lt;li&gt;Automated functional testing (e.g.. GUI testing); stories remain in development until all bugs are fixed or deferred&lt;/li&gt;&lt;/ul&gt; Consider a team that develops websites. Their testing strategy is to only have manual testers test the application just before deploying it to production. All the tests performed by the tester are acceptance tests.  This would put this team on the level of "Acceptance testing in lieu of all other tests"&lt;br /&gt;&lt;br /&gt;Using the AMM this team can then introspect and choose to introduce unit testing as a best practice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The AMM Dimensions &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let us now look at the various dimensions of the AMM and the behavioral patterns that are identified within each dimension. The behavior listed at the start of each dimension is an undesirable behavior and teams should try and move away from them as soon as possible. However to what extent a team would like to mature in a given dimension is the team's choice.&lt;br /&gt;&lt;br /&gt;The practices can be classified as&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Regressive&lt;/li&gt;&lt;li&gt;Neutral or Chaotic &lt;/li&gt;&lt;li&gt;Collaborative&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Operating  (Consistent exhibition of competance)&lt;/li&gt;&lt;li&gt;Adaptive  (Expertise to adapt to change)&lt;/li&gt;&lt;li&gt;Innovating  (Creative evolution of practice, and spread these practices throughout the organization)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Testing&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Acceptance testing in lieu of all other tests&lt;/li&gt;&lt;li&gt;No unit testing framework, ad hoc testing (Manual testing of individual components/ controls)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unit testing, manual functional testing; application has a testable architecture&lt;/li&gt;&lt;li&gt;Unit testing integrated into build process, testing automated as much as reasonable given application&lt;/li&gt;&lt;li&gt;Developers write unit tests before writing functional code&lt;/li&gt;&lt;li&gt;Test are identified and produced as part of a story creation&lt;/li&gt;&lt;li&gt;Automated functional testing (e.g.. GUI testing); stories remain in development until all bugs are fixed or deferred&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Source Code Management&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Traditional schemes based on fire-locking and time-sharing&lt;/li&gt;&lt;li&gt;SCM supports version of code&lt;/li&gt;&lt;li&gt;IDE(s) integrate with SCM; developers include meaningful comments in commits&lt;/li&gt;&lt;li&gt;SCM support merging; optimistic check-ins&lt;/li&gt;&lt;li&gt;SCM support atomic commits&lt;/li&gt;&lt;li&gt;All development collateral is in SCM&lt;/li&gt;&lt;li&gt;SCM is transparent to delivery team, behind build process&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Collective code ownership&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Knowledge held by specific team members; people work in isolation&lt;/li&gt;&lt;li&gt;No pairing, people work alone, some informal process for keeping people informed&lt;/li&gt;&lt;li&gt;Pairing; no code locking&lt;/li&gt;&lt;li&gt;Pairing scheme ensures rotation&lt;/li&gt;&lt;li&gt;Team signs up for functionality rather than assignment to individuals&lt;/li&gt;&lt;li&gt;Within an sprint, functionality delivery is signed up for just in time&lt;/li&gt;&lt;li&gt;Old (bugs) and new functionality is queued, development team pops the stack in real time&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Collaboration&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Regular progress updates from management to the delivery team (as opposed to the other way around); irregular team meetings&lt;/li&gt;&lt;li&gt;Project collaboration tools (wiki, mailing list, IM) in place and used throughout project team; project status published and visible to all&lt;/li&gt;&lt;li&gt;Daily stand-ups and sprint meetings; problem solving is bottom-up as opposed to top-down; team sets sprint objectives and agrees on estimates.&lt;/li&gt;&lt;li&gt;Integrated, continuous build process, with build status notification to the team and collective responsibility for state of the build&lt;/li&gt;&lt;li&gt;Business is part of the team, stakeholders accept working software at reviews in lieu of other tracking or progress metrics&lt;/li&gt;&lt;li&gt;Frequent (near-real time) prioritization of old and new functionality &lt;/li&gt;&lt;li&gt;Build automatically deploys to QA environment available to any interested party &lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Responsiveness to business&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Frozen specification, unresponsive to business value&lt;/li&gt;&lt;li&gt;Team tries to accommodate new requirements by ad hoc change requests ("pile it on")&lt;/li&gt;&lt;li&gt;Iterative process with sprints of length short enough to respond to business change&lt;/li&gt;&lt;li&gt;Showcases per sprint; business prioritizes functionality per sprint&lt;/li&gt;&lt;li&gt;Continuous involvement of the business on the team: business certifies story complete out of dev; involved in (rather than approval of) story definition and acceptance tests&lt;/li&gt;&lt;li&gt;Business writes high-level stories for all requests; organizational story queue exists; prioritization decisions made from full story backlog&lt;/li&gt;&lt;li&gt;Development process is integral to business initiatives; development teams work as a part of the business unit rather than as a service to the business unit&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Assurance and Governance &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Status reports document progress; schedule acts as plan&lt;/li&gt;&lt;li&gt;Concept of release planning is introduced&lt;/li&gt;&lt;li&gt;Sprint planning is introduced&lt;/li&gt;&lt;li&gt;Plan becomes communication and tracking tool rather than an exception report&lt;/li&gt;&lt;li&gt;Every sprint review examines value delivered and assesses next sprint by need, priorities (and delivery)&lt;/li&gt;&lt;li&gt;Organizational adoption: Introduction of Portfolio Planning and global optimization of resources (use of metric and standard measures)&lt;/li&gt;&lt;li&gt;Business review of value and return helps teams on regular basis based upon status&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Story Formation (Requirements)&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Development tasks extracted from voluminous, frozen requirements artifacts&lt;/li&gt;&lt;li&gt;Production of lightweight artifacts (e.g. panel flows) to drive high-level requirements development&lt;/li&gt;&lt;li&gt;Mapping granular requirements (e.g., use cases) in high level user requirements&lt;/li&gt;&lt;li&gt;Marshaling use cases into discreet statements of functionality that can be delivered in time boxed development sprints&lt;/li&gt;&lt;li&gt;Stories are an expression of end-to-end functionality to be developed, including testable acceptance criteria and a statements of value&lt;/li&gt;&lt;li&gt;Spontaneous story development provided by business for in-flight projects; stories not derived from extant sources but are immediate expressions of customer demand/need&lt;/li&gt;&lt;li&gt;Global repository of functional requirements for stories developed by business for any business requirements, including a formal measure of business value delivered&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Simplicity&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Big up-front design that attempts to accommodate all potential future needs&lt;/li&gt;&lt;li&gt;Application of fundamental design patterns&lt;/li&gt;&lt;li&gt;Structural refactoring to decouple application architecture&lt;/li&gt;&lt;li&gt;Doing only what needs to be done&lt;/li&gt;&lt;li&gt;Aggressive and constant refactoring to improve code quality/simplicity extant code&lt;/li&gt;&lt;li&gt;Spiking solution with each release to introduce new ideas and challenge architectural decision&lt;/li&gt;&lt;li&gt;Technical design decisions taken with each story&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Build&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ad-hoc build requests; scripting and component marshalling performed manually&lt;/li&gt;&lt;li&gt;Consistent, repeatable build process with durable artifacts executed manually with each release&lt;/li&gt;&lt;li&gt;Build is automated, executed on a timed basis&lt;/li&gt;&lt;li&gt;Unit tests are integrated with the automated build; team is constantly notified of the status of the build; build triggered by SCM updates &lt;/li&gt;&lt;li&gt;Test and metrics (e.g., code quality, complexity, check style, etc.) are integrated as gatekeeper events; build data archived and reported in build portal/dashboard&lt;/li&gt;&lt;li&gt;All product components advertise dependencies; master repository established&lt;/li&gt;&lt;li&gt;Product integration tests included; build process executes automatic deployment to QA testing environment&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;We will be talking about the above AMM model during the Agile Philly and discussing the interconnections between the various dimensions.&lt;br /&gt;&lt;br /&gt;Ackowledgements&lt;br /&gt;&lt;a href="http://agilemanager.blogspot.com/"&gt;Ross Pettit&lt;/a&gt;  , Gerg Reiser, ThoughtWorks Inc.&lt;br /&gt;&lt;br /&gt;Related Blogs and Articles&lt;br /&gt;&lt;ol&gt;&lt;li&gt;An "Agile Maturity Model?" by Ross Pettit &lt;a href="http://www.agilejournal.com/component/option,com_magazine/func,show_article/id,44/"&gt;http://www.agilejournal.com/component/option,com_magazine/func,show_article/id,44/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Agile made us better but we signed up for great By Ross Pettit &lt;a href="http://agilemanager.blogspot.com/2008/06/agile-made-us-better-but-we-signed-up.html"&gt;http://agilemanager.blogspot.com/2008/06/agile-made-us-better-but-we-signed-up.html&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-5128562060617395370?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/5128562060617395370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/08/agile-maturity-model.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/5128562060617395370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/5128562060617395370'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/08/agile-maturity-model.html' title='The Agile Maturity Model'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-5709451047149740443</id><published>2008-05-13T08:34:00.016-06:00</published><updated>2008-12-08T15:26:25.875-06:00</updated><title type='text'>User stories in the Enterprise Integration space</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xIeQgW2t_cg/SHXzbK1vo_I/AAAAAAAAAFg/q9lYgMW-O2A/s1600-h/Gears.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_xIeQgW2t_cg/SHXzbK1vo_I/AAAAAAAAAFg/q9lYgMW-O2A/s320/Gears.jpg" alt="" id="BLOGGER_PHOTO_ID_5221346991097750514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the 'user story' approach to requirements, it is considered a good practice to write your story's objective in the form "&lt;span style="font-weight: bold;"&gt;As a&lt;/span&gt; user &lt;span style="font-weight: bold;"&gt;I would like to&lt;/span&gt; perform some action &lt;span style="font-weight: bold;"&gt;so that &lt;/span&gt;I can get some business value/benefit. For example &lt;span style="font-style: italic;"&gt;"As an insurance claims processor I would like to flag duplicate claims as 'duplicate' so that I don't process and pay for the claim more than once."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If you are developing software in your typical enterprise, soon or later you will come to a point where your application has to integrate with some external system. Writing user stories in such a scenario can be quite challenging.&lt;br /&gt;&lt;br /&gt;Ideally the business should be able to assign some dollar amount to the business value called out in the 'so that" phrase. It is critical to call out the benefits of having the systems communicate with each other and share data.&lt;br /&gt;&lt;br /&gt;Let us consider this example:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"As a user of system Foo  I would like to create a new account and the new account creation message should be broadcast over a message queue."&lt;/span&gt;&lt;br /&gt;The above story objective describes the implementation details and it does not call out the business value in this story. This is a poor objective for a user story.&lt;br /&gt;&lt;br /&gt;An improvement will be to identify which systems will be consuming this message. Here is what the modified story would look like.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"As a new user of system Foo I would like to create a new account and the new account creation message should be broadcast over a message queue so that the SAP application can be informed of the new account."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This was slightly better than the earlier version, however it still isn't easy to associate a dollar amount to the 'so that' portion of the story title. To get to the business value in this story we need to look at what the SAP system does with the new account message.&lt;br /&gt;&lt;br /&gt;Here is a final version of the story&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"As new user of system Foo  I would like to create a new account and inform the SAP system of the new account so that the SAP system can create a corresponding account for the user and bill the user for the services provided."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you define integration stories in this manner, firstly it clarifies the business value obtained by implementing the story and it also makes it easier to test the application end to end. The other desirable side effect of this is to allow the business analyst to talk purely in terms of the expectations of the business and let the developers (who are more qualified than Business analysts when it comes to implementation) find optimal ways to make this integration work.&lt;br /&gt;&lt;br /&gt;It could be argued that the architecture demands  System Foo not be aware of the nature of the consuming application, and by calling SAP out by name we might tempt the developers to violate this requirement. Such details are important and need to be part of the acceptance criteria of the story.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:0.5em;" &gt;Photo licensed under creative commons, photograph credited to &lt;/span&gt;&lt;a style="font-style: italic; font-size: 0.5em;" href="http://www.flickr.com/photos/rogersmith/"&gt;Roger Smith&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-5709451047149740443?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/5709451047149740443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/05/user-stories-in-enterprise-integration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/5709451047149740443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/5709451047149740443'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2008/05/user-stories-in-enterprise-integration.html' title='User stories in the Enterprise Integration space'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xIeQgW2t_cg/SHXzbK1vo_I/AAAAAAAAAFg/q9lYgMW-O2A/s72-c/Gears.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-4204689081061237812</id><published>2007-05-09T21:59:00.000-06:00</published><updated>2008-12-08T15:26:26.054-06:00</updated><title type='text'>Stages of IT maturity</title><content type='html'>In my last post I mentioned that every development decision should be tested against the question "Is this helping my customer?".&lt;br /&gt;&lt;br /&gt;Last week I came across a project team that did just that. They had asked the customer what she/he wanted and built the system exactly to those specifications.&lt;br /&gt;&lt;br /&gt;I was called in to do an IT assessment of the progress of this project and I soon realised that this project was an abysmal failure. But how could that be, here was a project that was built exactly to specification and was delivered more or less on time.&lt;br /&gt;&lt;br /&gt;The problem was that the project team built a system, based on what the business users wanted without considering if there is any business value in it. The business users were line managers and clerks and they had a very limited view of what the business was about, and how their day to day actions affected the top line/ bottom line performance of the company. So this resulted in a very narrow view of the requirements, and sure enough when the system went live it did not deliver as much value as top management expected it would.&lt;br /&gt;&lt;br /&gt;So how does one get past a problem like this ? Here is where stories play a very crucial role, and the importance of the "As a role I would like to do some action &lt;span style="font-weight: bold;"&gt;so that&lt;/span&gt; I achieve some business value" format.&lt;br /&gt;&lt;br /&gt;Some people feel that we are being pedantic if we insist on every story adhering to this format. But if the team had stuck to this format, they would have realised early in the game that the requirements being given to them were probably not adding any business value. This visibility would have allowed upper management to terminate the project early and reevaluate their strategy.&lt;br /&gt;&lt;br /&gt;The other aspect to this problem is the maturity of an organization to consume a custom built software. For custom built software it is critical for the users to be able to clearly articulate the need of the business. They should be able to tie every requirement to the bottom line or top line performance of the company. This implicitly means that the business users have exhausted all means to improve performance by business process modifications. Only in such a situation should the business consider using technology to get them that extra bit of competitive advantage.&lt;br /&gt;&lt;br /&gt;In my opinion the IT maturity of an organization is closely linked with the business maturity. I can think of four stages of IT maturity an organization can be in.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Chaotic tactical business processes (use of spread sheets and multiple point solution)&lt;/li&gt;&lt;li&gt;Business processes which provide accurate and up to date information to the upper management to make decisions. But the processes themselves don't adhere to a overarching strategy&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Business processes tied to a strategy that is clearly articulated by the upper management&lt;/li&gt;&lt;li&gt;Business processes which are flexible and can easily shift and align themselves to the subtle strategy changes being employed by the upper management&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;To get to the Nirvana state of business, it is important for information systems to support them&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 1:&lt;/span&gt;  To start with you have a bunch of spread sheets and custom point solutions spread out through the organization&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 2: &lt;/span&gt;Fewer spread sheets and some central solution which can provide some business intelligence&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 3:&lt;/span&gt;  Collection of commercial off the shelf (COTS) best of breed solutions integrated with glue code&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 4:&lt;/span&gt;  Collection of COTS as well as custom solutions in areas which give the organization a competitive advantage integrated with glue code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a  href="http://1.bp.blogspot.com/_xIeQgW2t_cg/RlRboPxqu5I/AAAAAAAAAA0/zWDM_qd6M7Q/s1600-h/Stages+of+IT+maturity.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_xIeQgW2t_cg/RlRboPxqu5I/AAAAAAAAAA0/zWDM_qd6M7Q/s320/Stages+of+IT+maturity.jpg" alt="" id="BLOGGER_PHOTO_ID_5067776227686398866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pros and cons of each stage&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pros:&lt;/span&gt; Relatively easy to stand up spread sheets for your day to day work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Cons:&lt;/span&gt; Virtually impossible to get any sort of business intelligence at an over all enterprise level&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pros:&lt;/span&gt; Easy to obtain business intelligence&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Cons:&lt;/span&gt; If the team supporting the central application is small, they become the bottleneck.&lt;br /&gt;   The whole enterprise will over time become overly dependent on a small group of people who control the application.&lt;br /&gt;   The single application is critical to the functioning of the organization, this reduces the number of upgrades and changes that you can make to the application. Over time the application become out dated and &lt;a href="http://en.wikipedia.org/wiki/Cruft"&gt;crufty.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pros:&lt;/span&gt;  Allows flexibility&lt;br /&gt;    Can get the best of breed for each individual functional area&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Cons  :&lt;/span&gt; Can't get competitive advantage from such a solution (if you can glue together off the shelf products, then so can your competitor)&lt;br /&gt;    Will have greater IT spend because the skill level required to maintain this kind of an architecture is quite high&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stage 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Pros:&lt;/span&gt;  Competitive advantage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Cons:  &lt;/span&gt;Increased IT spend&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-4204689081061237812?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/4204689081061237812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/4204689081061237812'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2007/05/stages-of-it-maturity.html' title='Stages of IT maturity'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xIeQgW2t_cg/RlRboPxqu5I/AAAAAAAAAA0/zWDM_qd6M7Q/s72-c/Stages+of+IT+maturity.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-7762060438677881359.post-1784921759030309817</id><published>2007-04-29T12:48:00.000-06:00</published><updated>2007-05-17T20:42:48.617-06:00</updated><title type='text'>Responsible Developers: Does IBatis help my customer?</title><content type='html'>Agile (especially the XP flavor) empowers developers a great deal. Being an ex developer turned IM, I am starting to see that this is a double edged sword. It is dangerous to empower incompetent developers.&lt;br /&gt;Incompetence can come in various flavors, You have your garden variety junior developer, who just wants to get his 40 hours in. Or the grand and wise 'architect' who wants to build a unified framework, which will encompass all knowledge.  Finally you get the super dev, who wants to do everything his way, because his way is the coolest.&lt;br /&gt;In an agile team, one of the most important characteristic expected from a developer is responsibility.&lt;br /&gt;Responsibility towards his customer, every decision (which build tool to use, which persistence framework to use, which database to use, MVC or just write to the DB directly) taken by the development team, should have been tested against the question "How does this help my customer"?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7762060438677881359-1784921759030309817?l=whattodowearelikethatonly.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whattodowearelikethatonly.blogspot.com/feeds/1784921759030309817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2007/04/responsible-developers-does-ibatis-help.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/1784921759030309817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7762060438677881359/posts/default/1784921759030309817'/><link rel='alternate' type='text/html' href='http://whattodowearelikethatonly.blogspot.com/2007/04/responsible-developers-does-ibatis-help.html' title='Responsible Developers: Does IBatis help my customer?'/><author><name>Shaun Jayaraj</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
