<?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>Tales From The Cloud &#187; Agile</title>
	<atom:link href="http://blog.newsplore.com/tag/agile/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.newsplore.com</link>
	<description>Everything beta</description>
	<lastBuildDate>Tue, 07 Sep 2010 10:40:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Continuous everything?</title>
		<link>http://blog.newsplore.com/2009/10/15/continuous-everything</link>
		<comments>http://blog.newsplore.com/2009/10/15/continuous-everything#comments</comments>
		<pubDate>Thu, 15 Oct 2009 06:16:09 +0000</pubDate>
		<dc:creator>Florin</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.newsplore.com/?p=1376</guid>
		<description><![CDATA[I admit that I regard automation as a dull but vital part in the success of a project. Automation had evolved into Continuous Integration, a powerful toolset allowing frequent and regular building and testing of the code. I won&#8217;t get into what CI is (check the internets). Instead, I am going to explore a couple [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="padding-right:0;margin-top:3px"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F10%2F15%2Fcontinuous-everything"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F10%2F15%2Fcontinuous-everything" height="61" width="51" /></a></div><p>I admit that I regard automation as a dull but vital part in the success of a project. Automation had evolved into <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous Integration</a>, a powerful toolset allowing frequent and regular building and testing of the code. I won&#8217;t get into what CI is (<a href="http://martinfowler.com/articles/continuousIntegration.html">check</a> the internets). Instead, I am going to explore a couple of aspects of CI that can be added to the artifacts of the development process and note some others that cannot.</p>
<p><b>Continuous performance</b><br />
You wrote performance tests. You can run performance tests by firing a battery of tests from a client machine and targeted on an arbitrary environment where the application lives. The test results are collected on the client and you can publish them on a web server. Why not automating this completely then? To accomplish this, automate the execution, gathering and publishing of the performance results. Daily performance indicators not only increase visibility of the progress of the application but it becomes much easier to fix a performance degradation on a daily changeset than between two releases. There are a couple of factors that may add complexity to establishing performance tests:<br />
<i>Dealing with dependencies</i><br />
The obvious rule of thumb is to minimize dependencies. However, if there still are dependencies on other (perhaps external) systems, use mocks and to isolate the system you&#8217;re testing for performance. We&#8217;re talking about nightly performance tests so don&#8217;t put unnecessary stress where you shouldn&#8217;t.<br />
Finally, the main artifact of the final integration (done once per iteration) is a running environment where all components run together, in a production-like setup. Use this environment to run your system performance test where you measure the current performance against the baseline.<br />
<i>Measuring relative performance</i><br />
The environment you&#8217;re using for the nightly PT cycle most likely will not be a perfect mirror of production (especially true when dealing with geographically distributed systems). Use common-sense to establish the ratio between the two environments then derive rough production performance numbers using it (assuming a linear CPU/Throughput relationship).</p>
<p><b>Continuous deployment</b><br />
This is as simple as it sounds: automate the install. Make it dead easy to deploy the application in any environment by providing installation scripts. Simplify the configuration down to a single file that is self-documented and easily understood by non-programmers (read Operations Teams). The goal here is to unlock a powerful tool: making the application installable and upgradable with a click of a button. If all the other pieces of the continuum are in place then you could confidently deploy your application in production it on a much tighter release cycle, even on a daily basis. Deployment and integration become tasks in the background rather than first-class events.</p>
<p><b>More continuous</b><br />
Since I am just fresh off the Agile Testing Days conference and I have learned a few more Cs from the distinguished speakers which I term as Soft Cs since they involve constant human engagement:<br />
- Continuous learning (Declan Whelan)<br />
- Continuous process improvement (Stuart Reid)<br />
- Continuous acceptance testing (i.e. stakeholder signoff at the end of every sprint) &#8211; Anko Tijman<br />
- Continuous customer involvement (Anko Tijman)</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://blog.newsplore.com/2009/10/15/continuous-everything" /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.newsplore.com/2009/10/15/continuous-everything/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A project triumvirate</title>
		<link>http://blog.newsplore.com/2009/07/05/the-project-triumvirate</link>
		<comments>http://blog.newsplore.com/2009/07/05/the-project-triumvirate#comments</comments>
		<pubDate>Mon, 06 Jul 2009 00:11:11 +0000</pubDate>
		<dc:creator>Florin</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Project management]]></category>

		<guid isPermaLink="false">http://blog.newsplore.com/?p=1302</guid>
		<description><![CDATA[There are three forces that shape a project: domain, process and technology. Add the &#8220;-driven&#8221; suffix to any of them and you&#8217;ll perhaps recognize some of the methods used in projects you&#8217;ve been involved in and yet, as soon as one takes too much of a lead against the other two, failure will follow almost [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="padding-right:0;margin-top:3px"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F07%2F05%2Fthe-project-triumvirate"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F07%2F05%2Fthe-project-triumvirate" height="61" width="51" /></a></div><p>There are three forces that shape a project: domain, process and technology. Add the &#8220;-driven&#8221; suffix to any of them and you&#8217;ll perhaps recognize some of the methods used in projects you&#8217;ve been involved in and yet, as soon as one takes too much of a lead against the other two, failure will follow almost inevitably. At the intersection of these three forces we find familiar terms and concepts but first a word or two about each of them:</p>
<p><b>Technology</b><br />
Back in the days of the tech bubble, tech was allmighty. Buzzwords like Java, EJBs, PHP defined entire projects. It was the time where software became accessible to a much larger audience. The new wave of enthusiastic geeks embraced everything from new languages to professional certifications to the then-nascent open source. I admit having my share of technology-driven projects back in the day&#8230;</p>
<p><b>Process</b><br />
Process brings structure and pace to a project. The two complementary components of a project process are methodology and integration. We are all too familiar with <em>methodology</em>: waterfall, RUP or agile methods of software development are vastly documented and practiced; <em>integration</em> largely is defect management, testing, build, deployment and documentation. Today they all come together in what is called <a href="http://www.martinfowler.com/articles/continuousIntegration.html">continuous integration</a> where all these concepts become interrelated in a repetitive process that produces accountability and visibility into the progress of a project. Process is also the one force that tends to disappear first after a project is finished.</p>
<p><b>Domain</b><br />
The domain captures entities and business logic, is driven by the business requirements and is in no way influenced by the two other forces. The most successful way to employ the domain is through <a href="http://en.wikipedia.org/wiki/Domain-driven_design">Domain Driven Design</a> where the main focus of software development is neither technology nor process but the business requirements.</p>
<p><span id="more-1302"></span><br />
There are times in the life cycle of a project where these forces have to be kept separate but most of the time they shape each other. At their confluence there are several artifacts that are paramount to a project&#8217;s success with <em>code</em> being at their core.</p>
<div><img class="alignnone size-full wp-image-1303" src="http://blog.newsplore.com/wp-content/uploads/2009/07/Project_Triumvirate.png" alt="Project_Triumvirate" width="500" height="500" /></div>
<p><i>Code</i><br />
Although each force is important during a project life-cycle, they all work towards producing code. No matter how many <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML diagrams</a>, <a href="http://www.codingthearchitecture.com/2008/03/18/software_architecture_document_guidelines.html">software architecture documents</a> or <a href="http://en.wikipedia.org/wiki/Burn_down_chart">burn down charts</a> are produced the most valuable and tangible value that a project creates is runnable code.</p>
<p><i>APIs</i><br />
Application Programming Interfaces represent the external view of runnable software products. APIs state the intent of the software. They should be cared-for and refined during a project lifecycle, until they become the best representation of the domain they are modeling. APIs also serve for integration purposes and so they should be extended to blend into the domain of the consumers as needed.</p>
<p><i>Features</i><br />
Features are defined within a project scope. They can be fully defined prior to coding in a waterfall process or, defined and/or shaped during the project development in an Agile setup. Features specify a system&#8217;s requirements (they are called <a href="http://en.wikipedia.org/wiki/User_story">user stories</a> in an agile project).</p>
<p><i>Test, Build, Deploy, Run</i><br />
Projects have to be monitored since inception to their natural end. Just like a child&#8217;s development stages, projects need to touch milestones, assess velocity and health. They do so by constant testing, building, deploying and running.</p>
<p><b>Roles</b><br />
Project roles that drive each of these forces can also be mapped in the above figure. Take the <a href="http://en.wikipedia.org/wiki/Scrum_(development)#Roles">Agile roles</a> for instance:</p>
<div><img class="alignnone size-full wp-image-1309" src="http://blog.newsplore.com/wp-content/uploads/2009/07/Roles_Forces.png" alt="Roles_Forces" width="600" height="500" /></div>
<p><b>A fine balance</b><br />
Imagine any of the forces represented by circles in the picture becoming disproportionally larger than the others. As a result, one or more of the artifacts at the intersection of the forces will become disproportionally smaller than the others upsetting the equilibrium. Whether is less features, less APIs or less testing, the end result is still unbalanced.</p>
<p>As always, people (roles) will drive the forces. Balancing them requires skill from all parts involved and the success or failure of a project depends on giving enough power to each not to overturn the balance. If <a href="http://en.wikipedia.org/wiki/First_Triumvirate">ancient romans</a> could do it two millennia ago, so can we.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://blog.newsplore.com/2009/07/05/the-project-triumvirate" /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.newsplore.com/2009/07/05/the-project-triumvirate/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Process Journalism really is Agile Journalism</title>
		<link>http://blog.newsplore.com/2009/06/13/process-journalism-really-is-agile-journalism</link>
		<comments>http://blog.newsplore.com/2009/06/13/process-journalism-really-is-agile-journalism#comments</comments>
		<pubDate>Sun, 14 Jun 2009 00:25:20 +0000</pubDate>
		<dc:creator>Florin</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[journalism]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[media]]></category>

		<guid isPermaLink="false">http://blog.newsplore.com/?p=1267</guid>
		<description><![CDATA[&#160;&#160;&#160; There&#8217;s an interesting story rippling the news stream these days: The New York Times is questioning the ways Techcrunch reports on news. The crux of the issue is product journalism v. process journalism, the act of producing news only after all facts have been verified versus just writing the story based on what the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="padding-right:0;margin-top:3px"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F06%2F13%2Fprocess-journalism-really-is-agile-journalism"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F06%2F13%2Fprocess-journalism-really-is-agile-journalism" height="61" width="51" /></a></div><table>
<tr>
<td>
<img src="http://blog.newsplore.com/wp-content/uploads/2009/06/Media.jpg" alt="Media" width="260" height="200" class="alignnone size-full wp-image-1272" />
</td>
<td>&nbsp;&nbsp;&nbsp;</td>
<td align='justify'>There&#8217;s an interesting story rippling the news stream these days: The New York Times is <a href='http://www.techcrunch.com/2009/06/07/the-morality-and-effectiveness-of-process-journalism/'>questioning</a> the ways Techcrunch reports on news. The crux of the issue is <a href='http://www.techcrunch.com/2009/06/13/interview-with-npr-on-process-journalism/'>product journalism v. process journalism</a>, the act of producing news only after all facts have been verified versus just writing the story based on what the author best knows about an event at that moment then let the story evolve and provide rigorous updates and corrections once it does.</td>
</tr>
</table>
<p>As I was reading, I got an epiphany. The &#8220;old media&#8221; is following the old methods, much like the <a href='http://en.wikipedia.org/wiki/Waterfall_model'>waterfall process</a> where the story (the requirements) has to be fully known before proceeding with actually breaking the story (the implementation). The <a href='http://en.wikipedia.org/wiki/New_media'>new media</a> follows a radical approach: it starts with a lead (or rumor) that is initially published in a somewhat crude form, then the story evolves based on field feedback and facts drawn from the actual reality, until it becomes accurate. Even the language of the aforementioned references use words like &#8220;iterative process&#8221;, &#8220;transparent&#8221; and &#8220;standards&#8221; the same way I&#8217;d use them when talking about developing software.</p>
<p>This method of early release followed by incremental improvements resembles so much the agile methods of software development, I&#8217;m calling it <b>Agile Journalism</b>. </p>
<p>A revolution is happening in the media. Old methods are swiftly pushed aside; the emergence of the Internet as <i>the</i> news dissemination medium is fundamentally changing the ways the reality is reported upon. Who wants to read a story that is already obsolete or wrong altogether and impossible to be corrected/evolved until a new paper edition is off the press? The new media not only breaks news faster (release early) but gets the stories right eventually, simply because the new rules (standards) are clearly stating that until confirmed, the product -otherwise useful- is still a beta representation of the reality and the consumers already know how to consume such product.</p>
<p>From blogs to real time news streams, the new media&#8217;s aspiration is to bring the most accurate information yet to the consumers. It can and will do it by revolutionizing the way the stories are iteratively discovered based on constant feedback, the same way agile methods are revolutionizing the software industry.</p>
<p><span style="font-size: x-small;">Image courtesy <a href='http://www.flickr.com/photos/hirefrank/'>hirefrank</a></span></p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://blog.newsplore.com/2009/06/13/process-journalism-really-is-agile-journalism" /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.newsplore.com/2009/06/13/process-journalism-really-is-agile-journalism/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Thinking in&#8221; what?</title>
		<link>http://blog.newsplore.com/2009/05/23/thinking-in-what</link>
		<comments>http://blog.newsplore.com/2009/05/23/thinking-in-what#comments</comments>
		<pubDate>Sat, 23 May 2009 13:46:03 +0000</pubDate>
		<dc:creator>Florin</dc:creator>
				<category><![CDATA[opinions]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://blog.newsplore.com/?p=1097</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; &#8220;Thinking in&#8230;&#8221; anything has been a marketing quirk for a while now, being used and abused from the field of language learning to computer science. Thinking in Java is the title of a well known book written by Bruce Eckel. I am passing a &#8220;Think in Spanish&#8221; course flyer ad every time I stroll [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="padding-right:0;margin-top:3px"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F05%2F23%2Fthinking-in-what"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.newsplore.com%2F2009%2F05%2F23%2Fthinking-in-what" height="61" width="51" /></a></div><table>
<tr>
<td><img src="http://blog.newsplore.com/wp-content/uploads/2009/05/image010.jpg" alt="image010" width="160" height="213" class="alignnone size-full wp-image-1257" /></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>
&#8220;Thinking in&#8230;&#8221; anything has been a marketing quirk for a while now, being used and abused from the field of language learning to computer science. <a href='http://www.mindview.net/Books/TIJ4'>Thinking in Java</a> is the title of a well known book written by Bruce Eckel. I am passing a &#8220;Think in Spanish&#8221; course flyer ad every time I stroll on Bloor Street West here in Toronto.<br />
Funny, thinking within the rigors of a discipline is the very definition of thinking inside the box. </p>
<p>With respect to programming languages, it encourages one to think within the limits of a single language which is the exact opposite of what one should do when developing software.
</td>
<tr></table>
<p>The hegemony of agile methodologies inflicted a disruptive change on the face of the software industry and amongst the established roles within a team. The legions of &#8220;coders&#8221; bred by the tech bubble of 2000 are facing extinction; the roles of the software designer and Technical Architect are fuzzier than ever. Thinking inside of the language box makes a better coder but not a better software engineer.</p>
<p>Modern software design methodologies shatter that box. Domain Driven Design disconnects the developer from the technology and places domain rules before the intricacies of a language. Test Driven Development brings the Domain in the software realm and it does it by forcing to write the tests first, then write the actual code. Test-first forces you to think behavior and APIs <i>first</i> then perform the act of coding which is nothing more than implementing that behavior.<br />
Eric Evans&#8217;s <a href='http://www.infoq.com/presentations/strategic-design-evans'>DDD: Strategic Design</a> is an eye opener. And while you&#8217;re at it, check his other <a href='http://www.infoq.com/presentations/model-to-work-evans'>presentation</a> about domain modeling.</p>
<p>So instead of &#8220;Thinking in Java&#8221;, think Domain and APIs first then act. In Java.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://blog.newsplore.com/2009/05/23/thinking-in-what" /></p>]]></content:encoded>
			<wfw:commentRss>http://blog.newsplore.com/2009/05/23/thinking-in-what/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
