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

<channel>
	<title>Xebia Blog &#187; Articles</title>
	<atom:link href="http://blog.xebia.com/category/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Release Automation: The Missing Step in Release Management</title>
		<link>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/</link>
		<comments>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 05:31:10 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[release automation]]></category>
		<category><![CDATA[release management]]></category>

	<!-- AutoMeta Start -->
	<category>8230</category>
	<category>industries</category>
	<category>release</category>
	<category>automation</category>
	<category>critical</category>
	<category>considerations</category>
	<category>scalability</category>
	<category>outline</category>
	<category>8230</category>
	<category>industries</category>
	<category>release</category>
	<category>automation</category>
	<category>critical</category>
	<category>considerations</category>
	<category>scalability</category>
	<category>outline</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7243</guid>
		<description><![CDATA[Across all industries, the services delivered by business applications have become an essential part of an enterprise&#8217;s customer offering. Bringing new features to market quickly is thus a critical factor in determining a company&#8217;s success. In this post (an extended version of which is available as a whitepaper), we will outline today&#8217;s Release Management challenges [...]]]></description>
			<content:encoded><![CDATA[<p>Across all industries, the services delivered by business applications have become an essential part of an enterprise&#8217;s customer offering. Bringing new features to market quickly is thus a critical factor in determining a company&#8217;s success.</p>
<p>In this post (an extended version of which is <a href="http://www.xebialabs.com/DeploymentAutomation_Whitepaper" target="_new">available as a whitepaper</a>), we will outline today&#8217;s Release Management challenges and discuss the need for Release Automation. </p>
<p>We&#8217;ll identify key considerations for successful solutions and highlight why &#8220;Zero-Maintenance&#8221; is a critical requirement for Release Automation that provides the scalability required in an agile landscape and enables the delivery of continuous business value.</p>
<p><a href="http://blog.xebialabs.com/2011/08/03/release-automation-the-missing-step-in-release-management/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F08%2F03%2Frelease-automation-the-missing-step-in-release-management%2F&amp;title=Release%20Automation%3A%20The%20Missing%20Step%20in%20Release%20Management" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment is the new build (part 1)</title>
		<link>http://blog.xebia.com/2011/05/03/deployment-is-the-new-build-part-1/</link>
		<comments>http://blog.xebia.com/2011/05/03/deployment-is-the-new-build-part-1/#comments</comments>
		<pubDate>Tue, 03 May 2011 19:35:06 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[devops]]></category>

	<!-- AutoMeta Start -->
	<category>devopsdays</category>
	<category>boston</category>
	<category>devopsdays</category>
	<category>boston</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6782</guid>
		<description><![CDATA[Earlier this year, I was invited to present a talk at Devopsdays Boston about deployment as the new build: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, it just works&#8482; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Earlier this year, I was invited to present a <a href="http://www.devopsdays.org/events/2011-boston/proposals/deployment_is_the_new_build/" target="_new">talk</a> at <a href="http://www.devopsdays.org/events/2011-boston/" target="_new">Devopsdays Boston</a> about </em><a href="http://www.slideshare.net/apwashere/deployment-is-the-new-build" target="_new">deployment as the new build</a><em>: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, </em>it just works&trade;<em> experience build is today.</em></p>
<p>In this first post, we&#8217;ll focus on some of the changes and trends across the industry that have brought such increased business attention to the area of release, deployment and management of applications.<br />
<span id="more-6782"></span><br />
As companies focus on tuning their IT environment on rapid delivery of business value, more and more projects and initiatives within organisations are looking at the entire value chain of software production.</p>
<p>Whether under the banner of <a href="http://www.devopsdays.org" target="_new">Devops</a>, via integrated project teams or as part of the introduction of new development methodologies like <a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_new">Agile</a><sup>1</sup> or infrastructure technologies such as <a href="http://www.nist.gov/itl/cloud/" target="_new">cloud</a><sup>2</sup>, there is a growing awareness of the need for automated, reliable and flexible deployment procedures.</p>
<p>Whilst it&#8217;s clear that the generation of customer features takes place within the development, testing and QA teams, the business value inherent in these features is only unlocked once the application is actually running in a target environment, accessible to users. And it&#8217;s not just the final release to production that requires a deployment: every UAT, performance or integration test generally needs an application running in a &#8220;real&#8221; environment, not a developer&#8217;s local machine. One test, one deployment. </p>
<p>Given the well-known costs and adverse effects of faulty software in production, the ability to raise quality, usability and performance through a greatly increased number of testing cycles represents significant added value in itself.</p>
<p>One of the consequences of this increased attention is that the importance of build, release and deployment professionals as deliverers of business value is being recognized more and more. The heightened focus also means, though, that many companies are realizing that the effectivity, simplicity and overhead of their release and deployment processes lag far behind that of build and continuous integration.</p>
<p>As my role at <a href="http://www.xebialabs.com" target="_new">XebiaLabs</a> involves studying, automating and improving deployment processes across the industry and helping developing our vision for deployment into the future, the question of why deployment is so different from build in today&#8217;s enterprises was bound to raise its head sooner or later. The resulting discussions and reflections formed the basis for this series.</p>
<h3>What&#8217;s in a word?</h3>
<p>One of the challenges surrounding the discussion of deployment in relation to build, release, provisioning and other tasks in the <a href="http://en.wikipedia.org/wiki/Application_lifecycle_management" target="_new">ALM</a> space is the &#8211; decreasing, thankfully &#8211; lack of a clear shared definition for <em>deployment</em>. Without wanting to promulgate this as the correct definition, for the context of this discussion I&#8217;d like to treat deployment as the process that</p>
<blockquote><p><em>takes the components that make up a release (typically a specific version of an application) and getting them correctly set up in an infrastructure environment so that the release is accessible to (end) users</em>
</p></blockquote>
<p>This would differentiate it from <em>build</em> and <em>release</em> in that it assumes that the application components have already been created, and from <em>provisioning</em> and other infrastructure tasks in that the target infrastructure is already assumed to be present. </p>
<p>On-demand virtual or cloud environments, or virtual appliances, put a bit of a different spin on the issue, and will be a topic for a subsequent blog.</p>
<h3>Blast from the past</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p1-1.png" alt="" title="deployment-is-the-new-build-p1-1" width="131" height="127" class="alignnone size-full wp-image-6785" /></div>
<p>Taking the above as our working definition, the sobering picture is that, with very few exceptions, deployment now is pretty much at the stage where build was in the days of the make guru: a black box put together and operated by a specialist that somehow works. With luck, this precious resource is still employed and around to fix or extend things when required, but if he or she is out to lunch you&#8217;re simply out of luck.</p>
<p>To be fair, there are quite a few places where there is least tooling or automation in place that tries to map out the sequence of steps or actions required to carry out a deployment, to at least bring some visibility and traceability and shine some light on the &#8216;magic&#8217;. But this is still a long way away from the push-button experience that build is nowadays. Laboriously visualizing and walking through a process step-by-step is still a sign ultimately of a lack of trust; a truly mature process doesn&#8217;t display its internals any more, it &#8220;just works&#8221;. Much like build today.</p>
<h3>The road to &#8220;just works&#8221;</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p1-2.png" alt="" title="deployment-is-the-new-build-p1-2" width="131" height="136" class="alignnone size-full wp-image-6786" /></div>
<p> Of course, build didn&#8217;t start out as a &#8220;just works&#8221; process either, so what actually were the steps that made this transition possible? Looking at the evolution of Java build tooling over the past decade or so, there have been at least three main developments:</p>
<ol>
<li><strong>Reusable commands</strong></li>
<li><strong>Models</strong></li>
<li><strong>Conventions++</strong></li>
</ol>
<p>We&#8217;ll dive into the details of these three concepts in the <a href="http://blog.xebia.com/2011/05/deployment-is-the-new-build-part-2/" target="_new">next blog</a>&#8230;</p>
<div style="background-color: #EFEEEA; border: 1px solid #AAAAAA; margin: 0.8em; padding: 0.4em; font-size: 85%;">
<strong>Footnotes</strong></p>
<ol>
<li>Which my colleagues from Xebia, as recognised <a href="http://www.xebia.com/agile-consultancy" target="_new">world-wide Agile experts</a>, are much better positioned to <a href="http://blog.xebia.com/category/agile/" target="_new">talk about</a>.</li>
<li>For which there are almost as many alternative definitions as <a href="http://cloud-standards.org/wiki/index.php?title=Main_Page" target="_new">standards and industry organisations</a>, admittedly.</li>
</ol>
</div>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/05/03/deployment-is-the-new-build-part-1/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F05%2F03%2Fdeployment-is-the-new-build-part-1%2F&amp;title=Deployment%20is%20the%20new%20build%20%28part%201%29" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/05/03/deployment-is-the-new-build-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NoSQL, NoJAVA, No[you name it]</title>
		<link>http://blog.xebia.com/2011/01/06/nosql-nojava-no-you-name-it/</link>
		<comments>http://blog.xebia.com/2011/01/06/nosql-nojava-no-you-name-it/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 16:58:06 +0000</pubDate>
		<dc:creator>Wilfred Springer</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[nojava]]></category>
		<category><![CDATA[NoSQL]]></category>

	<!-- AutoMeta Start -->
	<category>music</category>
	<category>artists</category>
	<category>pullquote</category>
	<category>enthusiasts</category>
	<category>music</category>
	<category>artists</category>
	<category>pullquote</category>
	<category>enthusiasts</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5697</guid>
		<description><![CDATA[On the resemblance between Java and Madonna]]></description>
			<content:encoded><![CDATA[<p>I was listening to the <a href="http://javaposse.com/">JavaPosse</a> a minute ago. Dick Wall is saying that he figures there is never going to be anything as big as Java ever again.</p>
<p>A couple of weeks ago, I overheard a discussion between a couple of people involved in the music business. They concluded that the days of the megastars are officially over; they didn&#8217;t think there would ever be another artist rising to the same levels of stardom as Madonna, Elvis, Michael Jackson or the Beatles.<br />
<span id="more-5697"></span></p>
<h4>The Music Industry</h4>
<p>The reason why these people from the music industry figured there&#8217;d never be anything as big as the artists mentioned, ever again, is because of the Internet. It just has never been as easy as it is today to share music. I can put something together in an afternoon, and have it available on <a href="http://bandcamp.com/">Bandcamp</a> or Facebook that same night. And if it&#8217;s any good, it will spread like wildfire.</p>
<p>But, hold on, it has not only become way easier to put something out there on the Internet. It <em>also</em> became much easier to pull something down from the Internet. I recently switched over to Spotify. Even though I have a convenient setup that allows me to listen to my (legally acquired) MP3 all over my place, I haven&#8217;t touched it since then. And before that, I tried Last.fm for a while and found a load of new artists. The collection of music I listen to has grown significantly, last year. (As an example, I found <a href="http://thejackstaffordfoundation.com/fr_music.cfm">about the &#8220;Wifi?&#8221; song</a> through Facebook. A song right from the heart for many of us, I&#8217;m sure.)</p>
<p>Back in the days, both the artist and the listener depended on the record labels to tie supply to demand. That basically acted as a big funnel. In went all artists, out came the ones that were most likely to generate a lot of money. For a record label, it made way more sense to have one world-famous artist, than having several targeting a smaller audience. Because of that, <em>some</em> artists got all the exposure (radio, TV) and others hardly any at all.</p>
<p>The Internet has changed that. It basically short circuited this relationship, and boosted the supply.</p>
<h4>The Software Industry</h4>
<p>Let&#8217;s assume for a while that there is some truth in all of this. I can imagine that marketing funding has contributed a lot to putting <em>some</em> artists in the spotlight, and keeping others out in the dark. That seems to be exactly what happened to Java as well; only this time it wasn&#8217;t one single vendor, but a lot of them; and the same goes for SQL. (IBM, Sun, Hewlett Packard, Sybase, Oracle, etc.)</p>
<p>That doesn&#8217;t mean Java is awful or SQL is a piece of crap. Au contraire. It just means that because of critical mass of these big corporations, Java got more visibility, and therefore more momentum than any of its competitors.</p>
<p>It&#8217;s interesting that Java may actually both have profited and &#8216;suffered&#8217; from the Internet. Java&#8217;s appearance coincided with the rise of the Internet. The first people enthusiastic about Java liked it because of its Internet potential. (I remember my boss at Sun saying that, one day, his friend passed by and showed him Java tooth tumbling inside an Applet; that&#8217;s the day he applied for a job at Sun.)</p>
<p>These were probably also the people who started to talk about their ideas on how to use Java in new ways. Java dates from 1995. Sourceforge from 1999; it now provides a home for 45,186 Java projects. (And remember, they got some competition since then: Github, Java.net, Codehaus, Apache, etc.) At OOPSLA 2004, in Vancouver, all posters where about Java, with the exception of the ones that were not about programming at all. Sharing has been the basic attitude of the Java world, and that &#8211; I feel &#8211; contributed a lot to its popularity.</p>
<p>The same also goes for having other languages running on the Java VM. And in that sense Java (the language) also &#8216;suffered&#8217; from the Internet. The first other language running on the Java VM <a href="http://www.adahome.com/Tutorials/Lovelace/java.htm">might have been Ada </a>(back in 1996), but now it&#8217;s hard to keep up with the numbers: Clojure, Scala, Jerlang, JRuby, Mirah, JavaScript, and I could go on for a while.</p>
<p>So, the genie is out of the bottle. People got used to polyglot programming, and no marketing budget will ever be able to make any more noise than the buzz coming from the community directly. Again, it&#8217;s not unlike the demise of the music industry. The Internet short circuited supply-demand both in the music industry as well as in the software industry.</p>
<p>And alternatives to Java on the Java VM are not the exception. The same goes for storage solutions. Back in the days, the only real option for storing your data used to be a SQL database. (In fact, in many cases, the only option used to be Oracle or DB2.) But since then, people started to scratch their head, wondering how on earth SQL solutions would solve their scalability problems, and came up with other, sometimes simpler ways to store their data. And then, they spread it through the Internet.</p>
<h4>Conclusion</h4>
<p>In summary, it seems our world is coming to a joint conclusion that Java and SQL are no longer the only options out there. Phew! That&#8217;s a breeze of fresh air! I therefore declare this year to be the year to celebrate the &#8220;No&#8221; movement: NoSQL (<em>Not only</em> SQL), NoJAVA (<em>Not only</em> Java) and &#8211; well &#8211; basically No[you name it] (<em>Not only</em> &#8216;you name it&#8217;). Back in the days, all we had was NoCHOICE. But now we have. Let&#8217;s take advantage of that.</p>
<p>The image that pops up in my head when I think about NoSQL and alternative languages on the Java VM (and the music industry) is one of a lava lamp. Down at the bottom, you see blobs of wax trying to cut loose to make their escape. Often they get pulled back, only to settle back at the bottom and wait for a new opportunity to make their way. It sort of reminds me of the big corporations and monumental industry standards preventing creative ideas to escape. But now, the old industry seems to loose its grip. The knot is slipping. Many bright ideas managed to cut themselves loose and have crossed the chasm. It&#8217;s unlikely that anything will be able to pull them back now. Welcome to 2011. Up, up, and away!</p>
<p><br/><br />
<br/><br />
<i>(And for that reason, it might also be good to mention the <a href="http://www.meetup.com/nosql-nl/">NoSQL NL meetup scheduled for January 24</a>, the <a href="http://dutch-scala-enthusiasts.ning.com/">Dutch Scala Enthusiasts</a>, and the <a href="http://ams-clj.github.com">Clojure meetup</a>. If you want to learn more about your options, it might be good to drop by somewhere soon.)</i></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/01/06/nosql-nojava-no-you-name-it/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/01/06/nosql-nojava-no-you-name-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agile tester is not responsible for testing!! 4 essential differences</title>
		<link>http://blog.xebia.com/2010/09/30/agile-tester-is-not-responsible-for-testing-4-essential-differences/</link>
		<comments>http://blog.xebia.com/2010/09/30/agile-tester-is-not-responsible-for-testing-4-essential-differences/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 12:00:10 +0000</pubDate>
		<dc:creator>Geert Bossuyt</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[ACT]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5339</guid>
		<description><![CDATA[The tester is a member of a Scrum team. This is a different mindset from the traditional views on testers in software development. The agile tester focuses on delivering value instead of on testing. The agile tester is responsible for delivering what the business needs instead of just finding bugs. Most importantly: the agile tester [...]]]></description>
			<content:encoded><![CDATA[<p>The tester is a member of a Scrum team. This is a different mindset from the traditional views on testers in software development. The agile tester focuses on delivering value instead of on testing. The agile tester is responsible for delivering what the business needs instead of just finding bugs. Most importantly: the agile tester is not responsible for testing!</p>
<p>Recently I published an article on testing in a Scrum team for the <a href="http://qualtech.newsweaver.ie/startester/1pa06khqy5i">Eurostar 2010 newsletters</a>. It’s about the mindset of an Agile tester. This blog post summarizes the core of that article.</p>
<p><span id="more-5339"></span><strong>To get there, together!</strong></p>
<p>Good interaction is the key to good results. An agile mindset and working in an agile process facilitates a cooperative spirit: “To get there, together !”. To have that ‘<a href="http://blog.xebia.com/2010/06/11/agile-is-not-a-methodology-its-a-mindset/">Agile Mindset</a>’ means to respect the balance that is presented by the Agile Manifesto and take all decisions you make ( big or small) in the spirit of these principles.</p>
<p>A good Scrum Team feels responsible for the delivery of the desired software on time and according to the agreed quality standards. From a testing perspective some modern test approaches like <a href="http://www.smartest.nl/">SmarTEST</a> are designed for ‘agility’ in the testing process. Although SmarTEST has a strong focus on people and interaction, the big change for the tester may still not be fully perceived.   Full adaptation of agile principles means that the <strong>agile tester</strong> <strong>is not responsible for testing</strong>!  How about that?! The team as a whole is responsible for the collective result, which includes testing as one of the steps.</p>
<p><strong>What does this mean for the role of the tester?</strong></p>
<p>For a tester to be truly successful in an agile team he needs to change in four way. These four points describe the heart of the mindset of an agile tester.</p>
<ol>
<li>The tester is responsible for delivering what the business needs (not for finding bugs).</li>
<li>The tester is focussed on delivering business value (not on just writing, executing and reporting tests)</li>
<li>The tester is a full-time member of the team (not just at the start and end of a sprint)</li>
<li>The tester is no longer a tester, he&#8217;s a team member with a talent for testing</li>
</ol>
<p>Of course this is only the top of the agile testers mindset.</p>
<p><strong>How about independent testing ?</strong></p>
<p><strong> </strong> Independent testing in an agile environment doesn&#8217;t differ much from the more traditional approach.     Some of the testing is moved to the team&#8217;s responsibility. Things like integration testing and user acceptance testing allow the team to learn.   They need to learn from executing these tasks themselves so that they can understand their customers and their environment better.<br />
Choose independent testing for cross team testing, regression testing and non functional testing.</p>
<p><strong>Conclusion</strong><br />
The agile tester feels responsible for the whole, is fulltime committed to the result, is focussed on delivering business value and acts like a true member of the team.</p>
<p>Independent testing is still desired.   It’s important to leave integration testing and user acceptance testing to the responsibilities of the Team so they can keep on learning from what they deliver.</p>
<p><strong>Parting thoughts</strong></p>
<p>Not every tester will be able to change his mindset and become team member first and tester second.   These testers can provide most value when working in an independent test team.<br />
Finding those really great testers that are able to become part of the Scrum Team is a challenge. Having them in the teams is a critical factor the success of your teams.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/09/30/agile-tester-is-not-responsible-for-testing-4-essential-differences/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F09%2F30%2Fagile-tester-is-not-responsible-for-testing-4-essential-differences%2F&amp;title=Agile%20tester%20is%20not%20responsible%20for%20testing%21%21%204%20essential%20differences" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/09/30/agile-tester-is-not-responsible-for-testing-4-essential-differences/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Cross dimensional teams</title>
		<link>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/</link>
		<comments>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 13:16:38 +0000</pubDate>
		<dc:creator>Rik de Groot</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Articles]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=4900</guid>
		<description><![CDATA[Working in multidisciplinary teams is common in Agile. In practice this means that the team consists of people with different skills, but work in the same dimension (for instance software). What about cross dimensional teams? In cross dimensions teams not only the skills differ, but also the area of expertise. For instance developing an electronic [...]]]></description>
			<content:encoded><![CDATA[<p>Working in multidisciplinary teams is common in Agile. In practice this means that the team consists of people with different skills, but work in the same dimension (for instance software). What about cross dimensional teams? In cross dimensions teams not only the skills differ, but also the area of expertise. For instance developing an electronic device includes electronics and software. They work on the same project, but can they act as one team?<br />
<span id="more-4900"></span><br />
<strong>Teams</strong><br />
There are all sorts of teams, but the most common in agile and lean are multidisciplinary teams and multidimensional teams. The multidisciplinary teams consist of people that together cover all the skills needed for the product. Whereas the multi-dimensional teams consist of different teams with different skills that work together in sequences (lean).<br />
In a cross dimensional team, the team consist of multiple teams developing one product in parallel. The difficulty with cross dimensional teams is that they have a different heart beat, problems and constraints while working one product. For instance developing an electronic device like a touch MP4 player consist of the electronics for the device and the software that drives the electronics.<br />
Developing in these two dimensions require both doing research and development. They also depend on each other in a way. Without the software the hardware team cannot check whether the touch hardware is working and vice versa. On the other side there are some areas in which they don’t depend on each other, but can influence each other. For instance a hardware component can limit the features in the software and vice versa.<br />
Putting these dimensions in one team with one backlog does not make them more effective. Due the different heartbeat it could mean that they have to wait for each other. However they do have some areas in common. For instance the interface between the hardware and software. This is the contract between the two worlds. The earlier this interface is clear the more freedom the teams have.<br />
The figure below shows the time line of a cross dimensional team working on one product in an agile way. Purple for the development of the electronics (hardware) and red for the development of the software.<br />
￼<img src="http://blog.xebia.com/wp-content/uploads/2010/06/CDT1.png" alt="Timeline Cross Dimensional Team" title="Timeline Cross Dimensional Team" width="375" height="126" class="alignnone size-full wp-image-4903" /><br />
The dimensions of the team start at the same time. In this first period it’s important to do the things in common first. Later on in time there is no possibility to change decisions. The reason for this is that electronics production has a lead-time. Once this process is started, there are only some small changes possible due to high costs. Therefore the early stage is important to get things clear.</p>
<p><strong>Dimensional planning</strong><br />
Dimensional planning (story mapping) can help with this. Usually interfaces and prototyping are put in the first slices. The features that can be addressed later on should be in later slices.<br />
Most of the times the different dimensions of the team work from separate backlogs, but are aligned in the dimensional planning. Although they work from a different backlog they can discuss the problems together. Often this leads to better solutions due to the different views on the problem. In some cases this leads to backlog items for the different dimensions.</p>
<p><strong>Freeze</strong><br />
Somewhere in time the electronics development is frozen in order to start the hardware production on time. From this moment on only small changes are possible. For instance to lower the radiation levels or things that need to be done in order to get an CE certification. Meanwhile the other dimension still continues to develop software for the device. Sometimes solving some hardware issues. Depending of the requirements of the CE certification the main software features needs to be frozen too. Fortunately software updates can be applied in a late stadia. </p>
<p><strong>Conclusion</strong><br />
In conclusion a cross dimensional team can work in an agile way. Using dimensional planning brings focus to the cross dimensional teams. Important is to freeze the interfaces between the hardware and software in an early stage. This will reduce the dependencies of the dimensions. Problems that occur during the prototyping can be solved by working closely together in an early stage.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/06/18/cross-dimensional-teams/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F06%2F18%2Fcross-dimensional-teams%2F&amp;title=Cross%20dimensional%20teams" id="wpa2a_8"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/06/18/cross-dimensional-teams/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Article Series: &#8220;Automated code reviews with Checkstyle&#8221; on JavaWorld</title>
		<link>http://blog.xebia.com/2008/11/26/article-series-automated-code-reviews-with-checkstyle-on-javaworld/</link>
		<comments>http://blog.xebia.com/2008/11/26/article-series-automated-code-reviews-with-checkstyle-on-javaworld/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 23:23:44 +0000</pubDate>
		<dc:creator>ShriKant Vashishtha</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Frameworks]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=821</guid>
		<description><![CDATA[Today JavaWorld published my article series &#8220;Automated code reviews with Checkstyle&#8221; in 2 parts. Part 1: Automated code reviews with Checkstyle, Part 1 Part 2: Automated code reviews with Checkstyle, Part 2 This article series attempts to bridge the gap of code review with applying automated Checkstyle checks in a complete and proactive way. First [...]]]></description>
			<content:encoded><![CDATA[<p>Today JavaWorld published my article series &#8220;Automated code reviews with Checkstyle&#8221; in 2 parts.</p>
<p>Part 1:<br />
<a href="http://www.javaworld.com/javaworld/jw-11-2008/jw-11-checkstyle1.html ">Automated code reviews with Checkstyle, Part 1</a></p>
<p>Part 2:<br />
<a href="http://www.javaworld.com/javaworld/jw-11-2008/jw-11-checkstyle2.html ">Automated code reviews with Checkstyle, Part 2</a></p>
<p>This article series attempts to bridge the gap of code review with applying automated Checkstyle checks in a complete and proactive way. First goal is to make the task of custom Checkstyle rules creation so simple so that any enterprise IT team could create new custom rules suiting to their project (IT standards) needs.</p>
<p>Second goal is to apply these rules in PROCTIVE fashion. Instead of waiting the build to fail or waiting for rule violation reports and working on them in a reactive way, the idea is to apply these checks proactively with Checkstyle Eclipse plugin or applying them at SVN level itself. Irrespective of which IDE you are using, if your code contains some of the high severity violations, you will not be able to commit the code in SVN. You will see the same kind errors and location on SVN console as you see with Eclipse plugin. This is achieved using SVN pre-commit hooks.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/11/26/article-series-automated-code-reviews-with-checkstyle-on-javaworld/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F11%2F26%2Farticle-series-automated-code-reviews-with-checkstyle-on-javaworld%2F&amp;title=Article%20Series%3A%20%26%238220%3BAutomated%20code%20reviews%20with%20Checkstyle%26%238221%3B%20on%20JavaWorld" id="wpa2a_10"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/11/26/article-series-automated-code-reviews-with-checkstyle-on-javaworld/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Article: &#8220;Writing JEE applications with Grails and Flex&#8221; on InfoQ</title>
		<link>http://blog.xebia.com/2008/11/03/writing-jee-applications-with-grails-and-flex/</link>
		<comments>http://blog.xebia.com/2008/11/03/writing-jee-applications-with-grails-and-flex/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 18:14:28 +0000</pubDate>
		<dc:creator>Maarten Winkels</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Grails]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=786</guid>
		<description><![CDATA[Today InfoQ has posted my article Writing JEE applications with Grails and Flex. The article describes how the combination of Flex and Grails leads to a highly productive platform for writing JEE applications. It discusses the problems one faces when integrating Flex as client technology and Grails as server technology and details solutions for each [...]]]></description>
			<content:encoded><![CDATA[<p>Today InfoQ has posted my article <a href="http://www.infoq.com/articles/flex-grails">Writing JEE applications with Grails and Flex</a>.</p>
<p>The article describes how the combination of Flex and Grails leads to a highly productive platform for writing JEE applications. It discusses the problems one faces when integrating Flex as client technology and Grails as server technology and details solutions for each of these problems.</p>
<p>The article can be used as a tutorial for writing simple client-server applications with Grails and Flex.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/11/03/writing-jee-applications-with-grails-and-flex/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F11%2F03%2Fwriting-jee-applications-with-grails-and-flex%2F&amp;title=Article%3A%20%26%238220%3BWriting%20JEE%20applications%20with%20Grails%20and%20Flex%26%238221%3B%20on%20InfoQ" id="wpa2a_12"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/11/03/writing-jee-applications-with-grails-and-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presented at Agile 2008 &#8211; The secret sauce of Fully Distributed Scrum</title>
		<link>http://blog.xebia.com/2008/08/21/agile2008-fully-distributed-scrum/</link>
		<comments>http://blog.xebia.com/2008/08/21/agile2008-fully-distributed-scrum/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 15:33:54 +0000</pubDate>
		<dc:creator>Guido Schoonheim</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[offshore]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[prorail]]></category>
		<category><![CDATA[sutherland]]></category>
		<category><![CDATA[Xebia]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=718</guid>
		<description><![CDATA[Agile 2008 At Agile2008 in Toronto Jeff Sutherland and myself presented our article outlining how to achieve hyperproductivity in distributed Scrum when working in an offshore situation. InfoQ recorded our presentation and will publish it online in November as the end of a series of Agile2008 talks. Download article&#160;&#160;&#160;&#160;Download presentation Also see this InfoQ article [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://blog.xebia.com/wp-content/uploads/2008/08/secretsauce.jpg'><img src="http://blog.xebia.com/wp-content/uploads/2008/08/secretsauce.jpg" alt="The secret sauce" title="secretsauce" width="450" height="337" class="aligncenter size-full wp-image-720" /></a></p>
<h3>Agile 2008</h3>
<p><strong>At <a href="http://agile2008.org/">Agile2008</a> in Toronto <a href="http://jeffsutherland.com/scrum/">Jeff Sutherland</a> and myself presented <a href='http://blog.xebia.com/wp-content/uploads/2008/08/xebia-distributed-scrum-final.pdf'>our article</a> outlining how to achieve hyperproductivity in distributed Scrum when working in an offshore situation. <a href="http://www.infoq.com/agile2008">InfoQ recorded our presentation</a> and will publish it online in November as the end of a series of Agile2008 talks.</strong></p>
<p><strong><a href='http://blog.xebia.com/wp-content/uploads/2008/08/xebia-distributed-scrum-final.pdf'><img src="/wp-includes/images/crystal/document.png">Download article</a></strong>&nbsp;&nbsp;&nbsp;&nbsp;<strong><a href='http://blog.xebia.com/wp-content/uploads/2008/08/fully-distributed-scrum-sutherlandxebia-agile2008.pdf'><img src="/wp-includes/images/crystal/document.png">Download presentation</a></strong></p>
<p>Also see <a href="http://www.infoq.com/articles/dutch-railway-scrum">this InfoQ article</a></p>
<h3>Agile and Offshoring, oil and water?</h3>
<p>If you are reading the Xebia blog chances are that you are already familiar with the benefits of Agile development. Practicing Agile (in our case Scrum combined with XP) delivers hyperproductivity combined with very high quality. The promise of offshoring in the modern IT industry is also clear: more available talent, scaling up and down without local layoffs or knowledge drain, and of course cost reduction. Together they make a killer combo!</p>
<p>However, Agile and offshoring seem like oil and water, they don&#8217;t seem to mix. How to get a focus on individuals and interactions when your people are distributed across the globe? What is the secret sauce to use to get it running smoothly?<br />
<span id="more-718"></span><br />
<h3>Distributed Outsourcing Styles</h3>
<p><a href='http://blog.xebia.com/wp-content/uploads/2008/08/outsourcing-styles.jpg'><img src="http://blog.xebia.com/wp-content/uploads/2008/08/outsourcing-styles-300x204.jpg" alt="Distributed Outsourcing Styles" title="outsourcing-styles" width="300" height="204" class="alignnone size-medium wp-image-723" /></a><br />
There are different models that you can consider when distributing Scrum. The most primitive model that is often applied is to create fully separate Scrum teams that work on unrelated work. Slightly more advanced is the usage of isolated Scrum teams that connect regularly via a distributed Scrum of Scrums. This is the model that the Scrum Alliance currently advocates.</p>
<p>Much more effective is a <strong>Fully Distributed Scrum</strong> model where each team consists of members on both locations. In this model there is no division of teams based on geography, teams span the globe! At Xebia we came to this model simply by reasoning from the Agile manifesto. The main issue in offshoring is communication. When creating a geographical division between teams you create another communication barrier that you need to take. People tend to take the road of the least resistance and end up with all sorts of processes and tools.</p>
<p><strong>When creating a distributed team, with members on both locations, the team members have no choice but to resolve their communication problems.</strong></p>
<p>Once these are resolved you can operate on a basis of equality, providing your offshore team members with responsible intelligent work, thus giving them the job that they deserve as 21st century knowledge workers. </p>
<h3>Shared mindspace</h3>
<p>Setting the team up for success has a lot of it has to do with getting into a shared mindspace across locations. This means developing a shared ownership of the code and architecture, a shared domain context and a shared value system and culture. In order to set this up you need to think carefully about traveling, about building personal relationships, about finding the commonalities that Agile developers the world over share. Setting this up and cherishing it is vital to a smooth operation</p>
<h3>The presentation</h3>
<p>Presenting these concepts that I am so passionate about at a conference like Agile2008 is a fantastic experience. Distributed Agile is a topic that is obviously very much in the spotlight. The audience had a lot of questions and it was great to share ideas after the presentation.</p>
<p>When talking to the people that attended our presentation I noticed that a lot of people are in the process of training their offshore partner to become more Agile. Usually first through a Scrum of Scrums model and eventually aiming for a Fully Distributed Scrum. Setting it up in this way, by changing your suppliers habits, is a very slow and costly process.</p>
<p>Inspired by the success of projects like this one we are building distributed teams now for partners, with a match on Agile and quality. If you have an Agile business where you are looking to include the benefits of offshoring then we can help by hooking you up to Xebia India. Have a look at <a href="http://xebia.com/nl/about-xebia/xebia-global-services.html">Xebia Global Services</a> for more information.</p>
<p>Next step is <a href="http://jaoo.dk/presentation/Fully+Distributed+Scrum%3A+The+Secret+Sauce+for+Hyperproductive+Outsourced+Development+Teams">JAOO in Aarhus, Denmark</a> where Jeff and I will present about this topic. </p>
<p><strong><i>Guido Schoonheim, CTO</i></strong></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/08/21/agile2008-fully-distributed-scrum/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F08%2F21%2Fagile2008-fully-distributed-scrum%2F&amp;title=Presented%20at%20Agile%202008%20%26%238211%3B%20The%20secret%20sauce%20of%20Fully%20Distributed%20Scrum" id="wpa2a_14"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/08/21/agile2008-fully-distributed-scrum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Static Code Analysis is just tip of the Iceberg!</title>
		<link>http://blog.xebia.com/2007/12/09/static-code-analysis-is-just-tip-of-the-iceberg/</link>
		<comments>http://blog.xebia.com/2007/12/09/static-code-analysis-is-just-tip-of-the-iceberg/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 17:44:49 +0000</pubDate>
		<dc:creator>Vikas Hazrati</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Quality Assurance]]></category>

	<!-- AutoMeta Start -->
	<category>violation</category>
	<category>violations</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/12/09/static-code-analysis-is-just-tip-of-the-iceberg/</guid>
		<description><![CDATA[Most of the times we are content that our code is of the right quality, if somehow, we manage to get the Static Code Analysis (SCA) tools like Checkstyle, PMD etc. report less number of severe violations. As an example if we see that the class is big in size then we conveniently split it [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the times we are content that our code is of the right quality, if somehow, we manage to get the Static Code Analysis (SCA) tools like <a href="http://http://checkstyle.sourceforge.net/index.html">Checkstyle</a>, <a href="http://pmd.sourceforge.net/">PMD</a> etc. report less number of severe violations. As an example if we see that the class is big in size then we conveniently split it into two or more classes to get rid of the violation. The tool is happy and so are we and most of the times that is the end of the story.</p>
<p>However more frequently than not getting an SCA violation is the start of the story. If you start associating the question “Why&#8217; with every SCA violation found then the real reasons start unfolding. </p>
<p>This is similar to the way we resolve impediments on an Scrum project. The impediments rarely represent the isolated incidences of inefficiency. Rather, most of the times they are a part of a larger problem. The way to work out an impediment is fix it so that the team can work effectively and then to look at the root cause which caused the impediment so that the main cause can be fixed. This is called “Bottom-up process re-engineering.”</p>
<p>Similarly the way to work out an SCA violation is to remove it so that the code looks clean and good and then to hunt for the real cause.<br />
<span id="more-341"></span><br />
I got first hand insight into this when I was doing an audit for a large system which is being used online by millions of people. While doing the analysis my co-auditor suggested that let us look for hot spots which are highlighted by the SCA tools. Then, let us dive into the code at those places to find out bigger issues. At that time I was skeptical if that approach would work however now I am a firm believer of his philosophy. </p>
<p>The SCA tools do a great job of pointing out the hot spots. You can either patch the hot spots to make the SCA tool happy or you could look at the bigger issues so that the root cause of the problem is eliminated.</p>
<p>I would take some examples from my audit to make it more clear. <strong>Let me warn you that these problems look too simple for any deeper analysis but believe me once you do the analysis you do manage to uncover some unexpected thought provoking findings</strong>. And of course these are just a few examples for illustration, you could apply this to ideally every violation that you get.</p>
<p>1.<strong>Size violation:</strong> We found that there were servlets in the application which were more than 3000 lines, having methods more than 800 lines each. A quick fix to this might have been to reduce the method size by splitting the methods and moving some methods out of the class to a helper class so that the class size and method size violations are taken care of.</p>
<p>However, when we looked deeper to answer the question  “<em>Why do the servlets have so much lines and such big methods?</em>” we realized that all of the business logic was present in the servlets. There was a bigger violation of <a href="http://www.objectmentor.com/resources/articles/srp.pdf">Single Responsibility Principle</a> where all the logic was present in the single class. The presentation logic, business logic and data access logic were all clubbed together thus leading to fragile design which is hard to change without breaking. There was no layering and no separation of concerns.</p>
<p>The design of the system was a culprit here and probably none of the developers or the architect on the project felt so.</p>
<p>2.<strong>Methods with large number of parameters:</strong> A quick way to solve this and make the SCA tool happy would be to introduce an object and populate the object with the required parameters.</p>
<p>However, when we took a deep dive we realized that the system did not have any 	abstraction. There were no domain objects in the system either. When data had to be passed between method calls, all of that would be passed as primitive data, mostly strings. There was no focus on domain driven design. The methods were overloaded with every extra parameter that would be required in a different situation which suggested that the system was open for modification and closed for extension. For any small change a new method had to be written. This violated the <a href="http://www.objectmentor.com/resources/articles/ocp.pdf">Open Close Principle</a>. </p>
<p>Again design was the culprit here.</p>
<p>3.<strong>Large Cyclomatic complexity and NPath:</strong> We were baffled to see CC numbers > 50 for some methods and NPath figures of > 1.7 million. </p>
<p>When we dived deep we found that the methods in question had a lot of nested if..else logic. So far so good, but what is the reason for the nested logic? We found that the method contained all the dispatch logic for the request. If the request has these attributes do this else do that and so on. This also explained why the system had low code coverage by unit tests. A unit test to test 1.7 million possible paths would take weeks if not months to write.	Clearly nobody had thought about introducing one of the many readily available MVC frameworks. When we questioned the team on why they did not use a MVC framework we were told that they did not feel the need in the beginning because the system was too small. Once it started growing they never had the time to refactor and introduce a framework.</p>
<p>This could have several causes ranging from lack of communication between the client and the vendor about realistic time lines, refactoring not being a part of the standard development process, lack of interest of the team in project, lack of interest in achieving the right quality and focusing on just getting the work done.</p>
<p>4.<strong>Missing braces and wrong variable naming:</strong> This is probably one of those violations which is immediately reported by a SCA tool and is easy to correct.</p>
<p>However, when we started looking at it deeply we found that certain modules of the application 	reported huge violations as compared to others. When we compared two modules with highest number of violations we found that both of them were using very different naming strategies. Further investigation revealed that there were no coding standards which were used on the project. Every module and each developer was free to use a nomenclature which went well with his taste. There was no conceptual integrity and no uniformity in which the entire software was built.</p>
<p>Improper software development process along with lack of coordinated  communication between the teams were the obvious culprits in this case.</p>
<p>5.<strong>Large number of unused imports, variables and methods:</strong> This is again something which is readily reported and is easy to fix.</p>
<p>However, when we questioned the developers about the reason to have unused code, we were told that they never removed the unused code lest they should need it some day. It would save 	them time in the future.<br />
Obviously nobody was thinking about the time lost when we had to scroll through tons of unused code and probably they were never educated on the principle of <a href="http://c2.com/xp/YouArentGonnaNeedIt.html">YAGNI</a>.</p>
<p>Again improper development process and lack of developer education were the culprits here.</p>
<p>You would concur with me that all these violations were very small and could have easily been fixed without resolving to deeper analysis. However, if you try to dig deeper then most of them would point to bigger issues which need a more focussed approach to fix. <strong>We saw that relatively small problems reported by the SCA tools could be attributed to bigger issues like improper design, sub standard development process, lack of communication and lack of proper education towards effective software development for the development team</strong>.</p>
<p>Hence though doing a root cause analysis for small violations might sound like an overkill but a lot of times the small violation is just the tip of the iceberg! </p>
<p><strong>Next time when you are resolving the SCA tool reported violation just pause for a moment and ask “<em>Why do I have this violation in the first place?</em>”</strong></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/12/09/static-code-analysis-is-just-tip-of-the-iceberg/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F12%2F09%2Fstatic-code-analysis-is-just-tip-of-the-iceberg%2F&amp;title=Static%20Code%20Analysis%20is%20just%20tip%20of%20the%20Iceberg%21" id="wpa2a_16"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/12/09/static-code-analysis-is-just-tip-of-the-iceberg/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>15 Stand-up commitments to a greater Scrum</title>
		<link>http://blog.xebia.com/2007/04/27/15-stand-up-commitments-to-a-greater-scrum/</link>
		<comments>http://blog.xebia.com/2007/04/27/15-stand-up-commitments-to-a-greater-scrum/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 11:38:39 +0000</pubDate>
		<dc:creator>Vikas Hazrati</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Articles]]></category>

	<!-- AutoMeta Start -->
	<category>commit</category>
	<category>stand</category>
	<category>commitments</category>
	<category>ritual</category>
	<category>opportunity</category>
	<category>backlog</category>
	<category>member</category>
	<category>listen</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/04/27/15-stand-up-commitments-to-a-greater-scrum/</guid>
		<description><![CDATA[15 Stand-up commitments for those crucial 15 minutes It is another great day, sun shining bright, traffic snarls continuing on roads, the team getting ready for another productive agile day with droopy faces! Droopy faces , why ??? Well because they have to get over the stand-up ritual first before they can get started with [...]]]></description>
			<content:encoded><![CDATA[<h3>15 Stand-up commitments for those crucial 15 minutes</h3>
<p>It is another great day, sun shining bright, traffic snarls continuing on roads, the team getting ready for another productive agile day with droopy faces! Droopy faces , why ???</p>
<p>Well because they have to get over the <strong>stand-up ritual</strong> first before they can get started with some real work. </p>
<p>But is the stand up a ritual??? Aren&#8217;t stand-ups supposed to be exciting and energizing???</p>
<p>If this a common question disturbing you for a while then it is time to <strong>stand up for the stand-up</strong>. The details that follow are meant for any team practicing any <strong>Agile methodology like Scrum </strong>and who has started thinking that stand-ups are no more than an empty ritual which has to be pushed out at the start of the day.<br />
<span id="more-219"></span></p>
<p>If you are a stand up team member a.k.a <em>pig</em> then you must commit to the list below to make sure that you do your part for a successful stand-up. If you are not a stand up team member a.k.a <em>chicken</em> then the list below would let you know what not to do and what to expect. </p>
<p>Say aloud, <strong>I am committed to the success of the project and I make the following commitments</strong></p>
<ol>
<li><em>I commit</em> to make sure that the stand up is a lively huddle and not a formal status meeting.</li>
<li><em>I commit</em> never to say that “I do not remember what I did yesterday” nor “I am not sure what I would do today”, I shall come prepared with my points for the stand up on a post it or in my notebook after looking at the Sprint Backlog or the story board.</li>
<li><em> I commit</em> to focus on the sprint backlog during stand up, it is easy to wander in all directions during the stand up but I commit to bring the team back to the backlog.</li>
<li><em>I commit</em> to raise impediments and blocking issues, ensure that the impediments are added to the impediment list and are taken care of in a timely fashion, this might require my taking initiative to point the impediments to the scrum master.</li>
<li><em>I commit</em> that I would attentively listen to what everyone has to say and not just listen to the person standing next to me just before my turn.</li>
<li><em>I commit </em>that on hearing an issue to which I know the solution I would not resort to problem solving, I would state that I know of a possible solution which we can discuss after the stand up.</li>
<li><em>I commit</em> that I shall not address my points to the scrum master but would talk to the whole team, since I am not reporting my status but I am stating facts and commitments to my team.</li>
<li><em>I commit</em> that I would not use the stand-up for socializing even though I or a team member came back from an exotic vacation.</li>
<li><em>I commit </em>that I would be loud and clear with my information so that everyone can listen and high energy is maintained. </li>
<li><em>I commit</em> that keeping the length of meeting in mind, my information in a stand up would be to the point but still informative enough, I would not just say that I am working on issue number x but would also give a brief description of what it is about.</li>
<li><em>I commit</em> that if I am in a distributed stand-up across continents, I would make sure that the tools and machines used for stand-up are ready before the stand-up starts.</li>
<li><em>I commit</em> that if I cannot come to a stand-up I would make sure that my input information is sent or announced via an email or a telephone call with a colleague.
<li><em> I commit</em> that I would not delay a stand-up because it is not just my time but the entire teams time.</li>
<li><em>I commit</em> to be involved only if I am committed to the project else I would just observe and not interrupt / disrupt the proceedings.</li>
<li><em> Last but not the least I commit</em> that whenever I see a deviation from these commitments from anybody I would openly debate that and initiate corrective action.</li>
</ol>
<p><strong>Conclusion: </strong>The daily stand-up meeting is meant to be an opportunity for the team members to communicate to the team on their progress and obstacles. It is an opportunity to share commitment and set direction for the team. Most of all it is a medium to build a closely knit team. Let us commit to the power of this simple opportunity and stand up for stand-ups.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/04/27/15-stand-up-commitments-to-a-greater-scrum/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F04%2F27%2F15-stand-up-commitments-to-a-greater-scrum%2F&amp;title=15%20Stand-up%20commitments%20to%20a%20greater%20Scrum" id="wpa2a_18"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/04/27/15-stand-up-commitments-to-a-greater-scrum/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/category/articles/feed/ ) in 0.81336 seconds, on Feb 9th, 2012 at 5:06 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 6:06 pm UTC -->
