<?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>21apps &#187; Agile</title>
	<atom:link href="http://www.21apps.com/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.21apps.com</link>
	<description>Inspiring people to change the way they work</description>
	<lastBuildDate>Sun, 05 Feb 2012 17:23:42 +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>How can 21apps make your day better?</title>
		<link>http://www.21apps.com/21apps/how-can-21apps-make-your-day-better/</link>
		<comments>http://www.21apps.com/21apps/how-can-21apps-make-your-day-better/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 09:58:23 +0000</pubDate>
		<dc:creator>Ant Clay</dc:creator>
				<category><![CDATA[21apps]]></category>
		<category><![CDATA[21Shift]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business use of SharePoint]]></category>
		<category><![CDATA[Gamestorming]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[Innovation Games]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[Serious Games]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Social Computing]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=2444</guid>
		<description><![CDATA[After a stack of research, deep thinking, lots of tea and coffee and a stack of customer conversations we&#8217;ve developed a whole new breed of exciting and innovative services designed for: Making your working day better for you, your colleagues, your &#8230; <a href="http://www.21apps.com/21apps/how-can-21apps-make-your-day-better/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After a stack of research, deep thinking, lots of tea and coffee and a stack of customer conversations we&#8217;ve developed a whole new breed of exciting and innovative services designed for:</p>
<blockquote><p><strong>Making your working day better for you, your colleagues, your organisation and customers!</strong></p></blockquote>
<p>Of course there&#8217;s still SharePoint stuff, but we&#8217;re evolving as an organisation, so we can now offer a greater breadth of services to you like &#8220;Serious Games&#8221;, &#8220;Innovation Consultancy&#8221; and SharePoint focussed personal development!</p>
<p>We&#8217;ve updated our <a href="http://www.21apps.com/what-we-do/" target="_blank">&#8220;What we Do&#8221; page</a>, go and check-it out for a greater insight to the awesome services we can now offer you!</p>
<p>Take a look below at an overview of what services we can now offer you, and get in touch with us to discuss how we can help change the way you work, bring innovation to the workplace and make your business life much easier!</p>
<h2><strong>Innovation Services:</strong></h2>
<ul>
<li><strong>Serious Games Consultancy &amp; Facilitation<br />
</strong>The seriously fun way to do serious work &#8211; seriously..!<br />
Let 21apps (The UK’s only Qualified Innovation Games® Instructors) work with your organisation to bring Serious Games such as Gamestorming, Innovation Games® and other innovative techniques into your business and get the leading edge on your competitors. Serious Games can help you be successful in delivering your projects, innovating, engaging stakeholders, prioritisation, identifying requirements, gaining customer feedback, product development, market research, workplace development and more..<br />
Find out more on the <a href="http://www.21apps.com/what-we-do/serious-games-facilitation/" target="_blank">21apps website</a></li>
<li><strong>Technology Innovation Consultancy</strong><br />
Work with 21apps to deliver innovation into your organisation, team, projects and technology platforms including Microsoft SharePoint, <a href="http://www.spigit.com/solutions/products/spigitengage/sharepoint" target="_blank">Spigit</a>, social media and more.<br />
We can help you with technology change management, business and stakeholder engagement, technology platform choices and project delivery.<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
</ul>
<h2><strong>SharePoint Rescue Missions:</strong></h2>
<ul>
<li><strong>Emergency!<br />
</strong>Our “Emergency! “ offering is a full-on, targeted, sort-us-out service, designed to help you resolve your most pertinent, “I need help now!” SharePoint problems, whether its technology, business, governance, IA, infrastructure or user adoption issues you’re having.<br />
We will leave you with a pragmatic action plan and a huge sigh of relief!<br />
Find out more on the <a href="http://www.21apps.com/what-we-do/sharepoint-rescue-mission/" target="_blank">21apps website</a></li>
<li><strong>SharePoint Governance Kick-Start<br />
</strong>We’ll review your current Governance and work with you to take action to start your SharePoint Governance on the right foot.<br />
Find out more on the <a href="http://www.21apps.com/what-we-do/governance-kickstart/" target="_blank">21apps website</a></li>
<li><strong>SharePoint Business Analysis Kick-Start<br />
</strong>We’ll work with you to bring your BA’s up to speed in the world of SharePoint, think facilitation not analysis and a whole lot more.<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
</ul>
<p><strong> </strong></p>
<h2><strong>Be Awesome:</strong></h2>
<ul>
<li><strong>SharePoint Team Awesome<br />
</strong>We’ll work on-site with you or remote-mentor your SharePoint team to become truly awesome in all aspects of delivering SharePoint Business Value.<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
<li><strong>SharePoint Sensei</strong><br />
We’ll work one-on-one on-site or remote-mentor your ‘Wannabe SharePoint Sensei’s” and train them like Ninjas in the craft of delivering SharePoint projects.<br />
Find out more on the <a href="http://www.21apps.com/what-we-do/sharepoint-sensei/" target="_blank">21apps website</a></li>
<li><strong>SharePoint Awesome++</strong><br />
“SharePoint Awesome++” parachutes someone from 21apps into your organisation to work directly with you and mentor you in the most advanced concepts to ensure that your SharePoint capability rocks from both a business and technology perspective! Not for the feint hearted!<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
</ul>
<p><strong> </strong></p>
<h2><strong>Training Services:</strong></h2>
<ul>
<li><strong>Innovation Games® Training Services </strong>(<a href="http://www.InnovationGames.com">www.InnovationGames.com</a>)<br />
21apps are the UK’s only Qualified Instructors!<br />
Let us show you how “Serious Games = Serious Fun” and how these collaborative play techniques can help your organisation innovate, engage stakeholders, prioritise, identify requirements, gain customer feedback and more..<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
<li><strong>SharePoint Innovation Games® Training</strong><strong> Services </strong><br />
We offer SharePoint specific Innovation Games® Training or Facilitation Services designed to help you be successful in delivering your SharePoint projects, realising business value and getting the leading edge on your competitors.<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
<li><strong>21apps SharePoint Delivery Workshop<br />
</strong>1 day workshop based on our proven method for delivering high quality, business value focussed SharePoint Solutions (<a href="http://www.21apps.com/ourmodel">www.21apps.com/ourmodel</a>)<br />
<a href="http://www.21apps.com/get-in-touch/" target="_blank">Give us a call</a> to find out more.</li>
<li><strong>SharePoint Governance and IA Master Class</strong> (<a href="http://www.spgovia.com">www.spgovia.com</a>)<br />
Run as either public (See <a href="http://www.spiauk.Eventbrite.com">www.spiauk.Eventbrite.com</a>) or private courses (<a href="http://www.21apps.com/get-in-touch/" target="_blank">Contact us</a>).<br />
Let us show you how to view the SharePoint world through a different lens. This Master Class pinpoints the critical success factors for SharePoint governance and Information Architecture and rectifies this blind spot with great tools and techniques</li>
</ul>
<h2><strong>Just a Resource:</strong></h2>
<p>Subject to availability, we can deliver awesome SharePoint  resources and guru’s from a range of other disciplines from within 21apps and our trusted friends across the globe for your project whether you need someone for pre-sales, a client workshop, onsite consultancy or project delivery&#8230;<br />
Find out more on the <a href="http://www.21apps.com/what-we-do/just-a-resource/" target="_blank">21apps website</a></p>
<h2>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</h2>
<p>We hope you like what you see here and hope that you&#8217;ll give us a call today to discuss how we can help you make a difference in your organisation!</p>
<p><strong>By email:</strong> Ant Clay (<a href="mailto:Ant@21apps.com">Ant@21apps.com</a>) / Andrew Woodward (<a href="mailto:Andrew@21apps.com">Andrew@21apps.com</a>)</p>
<p><strong>Or phone:</strong> Ant Clay +44 7887 553551 / Andrew Woodward +44 7970 126829</p>
<p><strong>Or on Twitter:</strong> <a href="http://twitter.com/#!/21apps" target="_blank">@21apps</a> / <a href="http://twitter.com/#!/Soulsailor" target="_blank">@Soulsailor</a> / <a href="http://twitter.com/#!/andrewwoody" target="_blank">@AndrewWoody</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/21apps/how-can-21apps-make-your-day-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m the business and agile was my idea</title>
		<link>http://www.21apps.com/agile/im-the-business-and-agile-was-my-idea/</link>
		<comments>http://www.21apps.com/agile/im-the-business-and-agile-was-my-idea/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 08:13:23 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Systems Thinking]]></category>

		<guid isPermaLink="false">http://www.21apps.com/agile/im-the-business-and-agile-was-my-idea/</guid>
		<description><![CDATA[I&#8217;ve been brought up on trying to improve the way I develop software, starting from ISO9001 and TickIT and the formalities this tended to promote through Xtreme Programming (XP), Agile, Lean, Scrum.  What has been great is that I have &#8230; <a href="http://www.21apps.com/agile/im-the-business-and-agile-was-my-idea/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been brought up on trying to improve the way I develop software, starting from ISO9001 and TickIT and the formalities this tended to promote through Xtreme Programming (XP), Agile, Lean, Scrum.  What has been great is that I have seen first hand the real benefit from looking at things differently, not being happy with the &#8220;it&#8217;s how we do it here mentality&#8221; and the focus on teams and what motivates people.</p>
<p>My work has shifted away from development and towards business &#8211; and it is in the business context that I am seeing so much opportunity to improve.  It might be me but it feels like stepping back in time,  back to the days of battling with &#8220;because that&#8217;s what the policy says&#8221; mentality.  The focus on micro management, performance reviews and over bureaucratic HR.   People don&#8217;t ask the questions &#8216;why&#8217; they just seem to accept this is how it&#8217;s done and it&#8217;s their job to enforce it, rather than thinking about what&#8217;s most valuable to the business.</p>
<p>I watched this video,  and it&#8217;s where I borrowed the title of the post as I think <a href="https://twitter.com/#!/smithcdau" target="_blank">Craig Smith</a> covers a lot of my thoughts on how an agile approach in business can really add value.</p>
<p><img src="http://cdn2.infoq.com/styles/i/logo-infoq.gif" alt="InfoQ" /></p>
<p><a title="http://www.infoq.com/interviews/caig-smith-business-agile" href="http://www.infoq.com/interviews/caig-smith-business-agile">http://www.infoq.com/interviews/caig-smith-business-agile</a></p>
<p>And the related <a href="http://cds43.wordpress.com/2010/09/04/agile-2010-im-the-business-agile-was-my-idea/" target="_blank">presentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/agile/im-the-business-and-agile-was-my-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Requirements&#8211;we don&#8217;t need them!</title>
		<link>http://www.21apps.com/21shift/norequirements/</link>
		<comments>http://www.21apps.com/21shift/norequirements/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 09:00:25 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[21shift]]></category>
		<category><![CDATA[21Shift]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1984</guid>
		<description><![CDATA[The thing I love about twitter is that we get to have great conversations with people who are passionate about a subject in the same way we would over a beer.  Take for example the conversation I stumbled upon on &#8230; <a href="http://www.21apps.com/21shift/norequirements/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The thing I love about twitter is that we get to have great conversations with people who are passionate about a subject in the same way we would over a beer.  Take for example the conversation I stumbled upon on the evening of 15th April..</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0pt none;" title="SharePoint Requirements documents we need a template" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb.png" border="0" alt="SharePoint Requirements documents we need a template" width="308" height="94" /></a></p>
<p>Richard Harbridge was looking for a decent template to capture SharePoint requirements to which 21apps own Ant Clay responded:</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0pt none;" title="SharePoint Requirements are dead to me, long live outcomes" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb1.png" border="0" alt="SharePoint Requirements are dead to me, long live outcomes" width="306" height="95" /></a></p>
<p>Ant was referring the the <a href="http://www.21apps.com/our-model/" target="_blank">21Shift Model</a> where we focus teams on outcomes.  This started what turned out to be a very lively and ultimately agreeable discussion</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb2.png" border="0" alt="image" width="310" height="98" /></a></p>
<p>Richard responded with the idea that requirements were a journey, an opportunity for Shared Understanding and more than just outcomes.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb3.png" border="0" alt="image" width="309" height="98" /></a></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb4.png" border="0" alt="image" width="309" height="95" /></a></p>
<p>At this point there was agreement in that we needed to get a Shared Understanding, but a clear view from Ant that Requirements documents were not what was needed; and the journey was absolutley part of the the process of defining outcomes and being able to track these back to the vision.  Requirements documents carry too much baggage and tend to focus on stakeholder &#8216;wants&#8217;</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb5.png" border="0" alt="image" width="312" height="97" /></a></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb6.png" border="0" alt="image" width="311" height="96" /></a></p>
<p>Dux joins the conversation, noting that ideally requirements should not be a document of &#8216;wants&#8217; which, and I think this is shared by Dux as he used the &#8216;ideally&#8217; word, is often not the case.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image7.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb7.png" border="0" alt="image" width="313" height="97" /></a></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image8.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb8.png" border="0" alt="image" width="312" height="95" /></a></p>
<p>I joined in the conversation to reiterate where we (21apps) see the value in aligning the organisation vision to measureable outcomes mapped to a solution, which some may choose to document as Requirements.  This was in agreement with Richard in that there needs to be a journey in order to get Shared Understanding &#8211; but I disagree that Requirements collection facilitate that journey in and of themselves, and as Ant pointed out more often than not they result in a lack of alignment to a vision or worse a list of technology features with no coherent view of what the goal is.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/image9.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2011/04/image_thumb9.png" border="0" alt="image" width="312" height="97" /></a></p>
<p>The conversation, as is often the case with twitter chats or conversation over beer, went on to talk about the baggage that is associated with terms and how words like Requirements or Project Management can carry a lot of implied meaning.  Something for another blog post perhaps, for this post I want to reflect on Requirements and why we don&#8217;t need them!</p>
<p>But we ended with agreement that we are all on the &#8220;Same Page&#8221;, and that the journey, discovery and Shared Understanding are the essential elements.</p>
<p>Which is why I reiterate that <strong>Requirements &#8211; we don&#8217;t need them!</strong></p>
<h2>What no Requirements?</h2>
<p>My background is in development, I worked with eXtreme Programming in early 2000 and have used agile techniques ever since.  The benefits of agile development over the traditional waterfall approach has been debated long and hard and its generally accepted that adopting agile approaches lead to delivery of solutions much more closely aligned to what the business needs.</p>
<p>So why do I think that we need to move on from the use of Requirements in our SharePoint Projects?</p>
<h3>The Waterfall Model</h3>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/350px-Waterfall_model_svg.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="350px-Waterfall_model_svg" src="http://www.21apps.com/wp-content/uploads/2011/04/350px-Waterfall_model_svg_thumb.png" border="0" alt="350px-Waterfall_model_svg" width="370" height="283" /></a></p>
<p><a title="http://en.wikipedia.org/wiki/Waterfall_method" href="http://en.wikipedia.org/wiki/Waterfall_method">http://en.wikipedia.org/wiki/Waterfall_method</a></p>
<p>Right there at the top of the Waterfall Model is the Requirements step.  This is where, in the waterfall approach, you write down everything it is that you want from the system and then this is fed into the next steps until it ultimately is delivered.</p>
<p>The problem with the waterfall approach is that it assumes you (and I mean the users, managers, business) actually know what it is you want.  What actually happens is people are given &#8216;one shot&#8217; at getting their requirements written down before it gets taken on by the SharePoint team to build and configure and six months later presented back to the users as the solution they supposedly asked for.</p>
<p>Most users will never have seen the version of SharePoint being deployed, they won&#8217;t really have had time to think about what they want to use it for or how it could help them change the way they work &#8211; how do you expect the user to be able to write down their requirements?</p>
<p>Even if you are an experienced SharePoint consultant it is hard for you to be able to get the users to articulate exactly what it is they need &#8211; you and the users will find it hard to be on the same page.</p>
<p><strong>A warning: </strong>Often you will attend meetings where the technology solution is discussed, agreements are reached and everyone is happy with what&#8217;s being decided.  A good SharePoint consultant will be able to ensure that the solution doesn&#8217;t have any horrors, but they will often get carried away by the desire to cover all of the product features and forget about the real goals &#8211; it&#8217;s not their fault Microsoft themselves promote solutions based on product features.</p>
<blockquote><p>Lack of user involvement traditionally has been the No. 1 reason for project failure. Conversely, it has been the leading contributor to project success. Even when delivered on time and on budget, a project can fail it it doesn&#8217;t meet user needs or expectations.</p>
<p>Project Management: Criteria for Success &#8211; Feb 2001</p></blockquote>
<h2>Lesson from Agile</h2>
<p>A lot of what I will cover here is based on a great post by James Shore, <a href="http://jamesshore.com/Presentations/Beyond%20Story%20Cards.html" target="_blank">Agile Requirements Collaboration</a>. James talks about this with regards to software development, which is where a lot of the innovation and mainstreaming of these techniques has developed, but the concepts are equally valid in SharePoint projects and form a basis of our <a href="http://www.21apps.com/our-model/" target="_blank">21Shift Model</a>.</p>
<p>In agile projects, be they Scrum or otherwise, we refer to &#8216;requirements&#8217; as stories.  In the 21Shift model we also use the term &#8216;outcomes&#8217; &#8211; the stories define the outcomes that we use to measure the success of the project.</p>
<blockquote><p>So where do stories come from in the first place? Well&#8230; somebody makes them up. Somebody has to have a vision of what the product is going to be. On an XP project, that person is usually called the &#8220;on-site customer.&#8221; You&#8217;ll also hear terms like &#8220;lead customer&#8221; and &#8220;product manager.&#8221; <em> or &#8220;Product Owner&#8221; in Scrum.</em></p></blockquote>
<p>This is the first and one of the biggest challenge we face on SharePoint projects, in fact a lot of agile development projects also face this problem.  Who is able to be &#8220;Product Owner&#8221;</p>
<blockquote><p>The product <em>owner</em> needs to have a strong, clear vision of the <em>solution</em>, but that doesn&#8217;t mean he or she is solely responsible for it. The product <em>owner</em> will work with interaction designers, business analysts, real customers, marketers, users&#8230; Ultimately, though, somebody has to coalesce all these conflicting views and come up with a clear, unifying vision. That&#8217;s the role of the product <em>owner</em>.</p></blockquote>
<p><strong>The Product Owner needs a clear, unifying vision.</strong></p>
<p>In order to define the outcomes, or requirements if you insist, the Product Owner needs to have a clear vision of what it is the SharePoint project is going to deliver. They have to work with a diverse group of people and ensure they have a Shared Understanding amongst all stakeholders so that they can define these outcomes.</p>
<blockquote><p><em>See the </em><a href="http://www.21apps.com/sharepoint/spiauk2/" target="_blank"><em>SharePoint Governance and Information Architect Master class</em></a><em> for ways to get that Shared Understanding and the Vision stage of the <a href="http://www.21apps.com/our-model/" target="_blank">21Shift Model</a> </em></p></blockquote>
<h3>Iterations</h3>
<p>Unlike the the waterfall approach we do not expect the Product Owner to define all of the outcomes upfront, the solution should be delivered in an iterative approach adding value to the solution in manageable chunks.  Why is this so important?</p>
<p>In waterfall we expect all requirements upfront,  but how can you expect a user to tell you want they want when they don&#8217;t know what they want?  By using an iterative approach your users get to see the solution as it&#8217; develops, this results in a great understanding of the solution but also the problem they are trying to solve.</p>
<p>The high level vision could remain the same, but through each iteration the details of how to achieve that vision are discovered.</p>
<blockquote><p><em>This</em> brings us to the idea of &#8220;latest responsible moment.&#8221; &#8220;Latest responsible moment&#8221; is a core agile idea. The term comes from <span style="text-decoration: underline;">Lean Software Development</span>. The idea is that you want to put off decisions as long as you can: to the latest responsible moment. But it&#8217;s the latest <em>responsible</em> moment, not the &#8220;last possible&#8221; moment. That wouldn&#8217;t be responsible.</p>
<p>The reason we do this is because putting off decisions is cheaper and results in better decisions. Money we spend tomorrow is cheaper than money we spend today, and between now and tomorrow, we&#8217;ll learn more things about our environment and the decisions we need to make. Plus, things could change so much that the decision isn&#8217;t relevant any more. If we&#8217;ve spent the time and effort to make the decision, that money is wasted. So we wait as long as we responsibly can.</p>
<p><strong>Focus on more detail over time</strong></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2011/04/21apps-Cone-of-Uncertainty.jpg"><img class="alignnone size-full wp-image-1993" title="21apps-Cone-of-Uncertainty" src="http://www.21apps.com/wp-content/uploads/2011/04/21apps-Cone-of-Uncertainty.jpg" alt="21apps Cone of Uncertainty" width="300" height="240" /></a></p></blockquote>
<p>The diagram above I have heard referred to as the &#8220;Cone of Uncertainty&#8221;,  the further away from the delivery of the solution the less certain the Product Owner is about the precise details needed to implement the solution.</p>
<p>As an example:</p>
<blockquote><p>Vision:</p>
<p>The Vision could state that we need a consistent approach to project documentation across the organisation to reduce rework, improve quality and align our delivery to the professional image we aspire to.</p>
<p>Outcomes:</p>
<p>We understand what it is the business needs, avoid technology discussions, and focusing on measurable improvements.  This stage really does help with an Retrun on Investment (ROI) needs.<br />
In this example a measurable outcome could include (avoiding platitudes):</p>
<ul>
<li> 80% of  project documents based on the correct template.</li>
<li> 50% decrease in the time taken to locate previous project documents based on similar technology.</li>
</ul>
<p>Solutions:</p>
<p>As we move into the solutions stage we could identify that we needed to have standard document templates, with defined metadata, that are managed centrally and used for all projects and that the refinements are reflected in search centre.</p>
<p>Delivery:</p>
<p>We need 5 document templates, 8 metadata columns defined, any integration with the actual document template, perhaps use of a content type hub for central management and a policy around the use of the platform. We also need to develop features to configure the project templates automatically.</p></blockquote>
<p>What this allows us to do is break the solution down into manageable iterations, where the specific details around each of the areas of the vision are refined in greater detail as they get closer to the actual delivery.   The Product Owner is also closely integrated with the delivery team so they can actually see what the solution will look like, how it actually works in SharePoint.</p>
<p>Traditionally agile teams have worked from a Backlog, a list of stories that define the solution, and as they get closer to delivery more detail is added.  In the 21Shift model we have found that reviewing the vision and outcomes for every iteration ensures they still apply, but also to keeps them fresh in the teams mind.</p>
<p>By working at the &#8220;latest responsible moment&#8221; you can avoid the need to write long requirements documents and allow the Product Owner to refine the details from Vision to Outcomes, with details added as the solution is defined and delivered,  before moving onto the next iteration.  Thus avoid the need for Requirements in the traditional sense, and relying more on the use of stories and collaboration.</p>
<h2>Conclusion</h2>
<blockquote><p>To summarize, you need a visionary product <em>owner</em> to work with your team. If you have one, you don&#8217;t need to define all the details of your requirements in advance: you can wait until the last responsible moment. If a release is more than three months away, all you may need is a vision for that release. Up until six weeks before implementing a feature, a basic description of the feature on a card may be enough. You&#8217;ll need stories for planning about six weeks before implementing, and once you start implementing a feature, you should specify it in detail.</p></blockquote>
<p>By working in iterations, understanding the vision and defining measurable outcomes it is possible to deliver solutions that the meet the users needs and expectations and align the to vision for the organisation.  All without the need to write Requirements documents in their traditional form.</p>
<p>In SharePoint projects this iterative approach allows us to make much more use of the out of the box features and functionality, we can keep things simple and also have the ability to stop early if the solution is good enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/21shift/norequirements/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Announcing 21Scrum &#8211; Scrum for SharePoint</title>
		<link>http://www.21apps.com/21scrum/announcing-21scrum/</link>
		<comments>http://www.21apps.com/21scrum/announcing-21scrum/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 11:15:50 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[21Scrum]]></category>
		<category><![CDATA[21Scruim]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1242</guid>
		<description><![CDATA[Update 21 June 2010:  We are pleased to annouce the 21Scrum has been released.   Please visit www.21Scrum.com for more details and to get your copy. Having been an advocate of SharePoint and Agile development for some time I have always &#8230; <a href="http://www.21apps.com/21scrum/announcing-21scrum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote>
<h3>Update</h3>
<p>21 June 2010:  We are pleased to annouce the 21Scrum has been released.   Please visit <a href="http://www.21Scrum.com">www.21Scrum.com</a> for more details and to get your copy.</p>
<p><img class="aligncenter size-full wp-image-1292" title="21Scrum" src="http://www.21apps.com/wp-content/uploads/2010/04/logo-Copy.jpg" alt="21Scrum" width="90" height="25" /></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/logo.jpg"></a></p></blockquote>
<p>Having been an advocate of SharePoint and Agile development for some time I have always found it disappointing that there has not been a decent solution for managing my Agile Projects in SharePoint.  I initially floated the idea of a scrum tool for <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/">SharePoint just under a year ago</a> and have at last managed to dedicate some time in order to make this idea a reality &#8211; internally this is called <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/" target="_blank">Project Aberdovey</a>.</p>
<p>Today we announce two things</p>
<ul>
<li>Project Aberdovey will be called &#8220;<strong><span style="color: #0080c0;">21Scrum</span></strong> &#8211; <em>Scrum for SharePoint</em>&#8220;</li>
</ul>
<h2>21Scrum</h2>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb.png" border="0" alt="image" width="644" height="381" /></a></p>
<p><strong><span style="color: #0080c0;">21Scrum</span> </strong>is a Sandboxed solution that works with all editions of SharePoint 2010 including SharePoint Foundation.</p>
<p>The solution is made of up 3 key areas</p>
<ul>
<li>Sprint Planning</li>
<li>Burndown Chart</li>
<li>Story Board</li>
</ul>
<h3>Sprint Planning</h3>
<p>All of your backlog items are maintained in a SharePoint list,  you are free to extend the list to add additional metadata and views to make management of the backlog easier.   Planning your sprints is done using the Sprint Planning board where you plan as you would with a white board moving stories between the backlog, current and next sprints.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/SprintPlanning.gif"><img style="display: inline; border: 0px;" title="SprintPlanning" src="http://www.21apps.com/wp-content/uploads/2010/04/SprintPlanning_thumb.gif" border="0" alt="SprintPlanning" width="400" height="300" /></a></p>
<h3>Sprint Planning</h3>
<p>Visibility is central to Scrum projects and the Burndown chart provided gives you a real time view of how you sprint is progressing against the ideal.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image1.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb1.png" border="0" alt="image" width="630" height="346" /></a></p>
<h3>Story Board</h3>
<p>The story board is what the team uses during the Sprint, ideally this is a big white board in the team room &#8211; with distributed teams this is not viable.  The <strong><span style="color: #0080c0;">21Scrum</span> </strong>story board provides this white board view and, like the Sprint Planning, allows the team to drag and drop stories as they progress through the stages from Not Started to Done.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image2.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb2.png" border="0" alt="image" width="644" height="377" /></a></p>
<h2>Getting Started</h2>
<p>A quick guide to getting started with <strong><span style="color: #0080c0;">21Scrum</span> </strong></p>
<p><del datetime="2012-01-08T01:46:55+00:00">1) Download the <a target="_blank">21Scrum Sandboxed solution</a> &#8211; rename the file from .zip to .wsp</del></p>
<p>21Scrum has now been released &#8211; <a href="http://www.21apps.com/21scrum/21scrumfree-trial-edition-available/">check out the fully featured trial</a>.</p>
<p>2) Navigate to the Solution Gallery in the Site Collection you want to deploy <strong><span style="color: #0080c0;">21Scrum</span> </strong>and click upload solution (in the solutions Tab)</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image3.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb3.png" border="0" alt="image" width="349" height="149" /></a></p>
<p>3) Upload the <strong><span style="color: #0080c0;">21Scrum</span></strong> solution and activate it</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image4.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb4.png" border="0" alt="image" width="468" height="275" /></a></p>
<p>4) Activate the Features</p>
<blockquote><p>21Scrum is divided into two part</p>
<ul>
<li>* Site Collection Feature which has things like the WebPart definitions</li>
<li>* Site Feature which enables the lists to support the team</li>
</ul>
<p>This split allows you to have multiple independent Scrum teams working in the same site collection.</p></blockquote>
<p>At the root site collection activate the Site Collection Feature</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image5.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb5.png" border="0" alt="image" width="624" height="112" /></a></p>
<p>And activate the Site level feature in the site that you want to manage your Scrum team</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image6.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb6.png" border="0" alt="image" width="619" height="88" /></a></p>
<p>5) The Burndown Chart is provided as a web part,  add this web part to a page.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/04/image7.png"><img style="display: inline; border: 0px;" title="image" src="http://www.21apps.com/wp-content/uploads/2010/04/image_thumb7.png" border="0" alt="image" width="626" height="349" /></a></p>
<p>As you haven&#8217;t started doing any work yet your Burndown chart will look like this.   To make testing of the beta easier we have provided another web part.  The &#8220;Populate Demo Data&#8221; web part will create sample data as if you were half way through a sprint. Simply add this web part to a page and click &#8220;Populate Demo Data&#8221; and have a play with the Sprint Planning, Story Board and Burndown.</p>
<h2>Giving Feedback</h2>
<p>Having used a lot of scrum tools and often found them trying to do too many things we have kept <strong><span style="color: #0080c0;">21Scrum</span> </strong>very focused,  the ability to be able to get up and running quickly and for the tool to add value and not become an overhead was crucial.   However we may have missed something that you can&#8217;t live without!</p>
<p>The beta release of <strong><span style="color: #0080c0;">21Scrum</span> </strong>is available to anyone to download and use,  it is not restricted in time-boxed so please feel free to use this on real life projects.</p>
<p>All we ask is that you provide feedback so we can make sure that when we release <strong><span style="color: #0080c0;">21Scrum</span> </strong>it is the best Scrum tool available.</p>
<p>If you have a feature request or find a bug please add comments on this page to send an email to <a href="mailto:andrew@21apps.com">andrew@21apps.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/21scrum/announcing-21scrum/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>TDD Kata &#8211; By Example video</title>
		<link>http://www.21apps.com/agile/tdd-kata-by-example-video/</link>
		<comments>http://www.21apps.com/agile/tdd-kata-by-example-video/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 08:35:09 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Kata]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1065</guid>
		<description><![CDATA[Since attending Roy Osherove&#8217;s TDD Master Class I have been doing my daily TDD Kata, I will admit I have missed some days but generally I have been keeping up with it and really seeing the benefit. Here I talked &#8230; <a href="http://www.21apps.com/agile/tdd-kata-by-example-video/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since attending <a href="http://www.21apps.com/development/tdd-master-class/" target="_blank">Roy Osherove&#8217;s TDD Master Class</a> I have been doing my daily TDD Kata, I will admit I have missed some days but generally I have been keeping up with it and really seeing the benefit.</p>
<blockquote><p><a href="http://www.21apps.com/development/daily-tdd-kata/" target="_blank">Here</a> I talked about what a Kata is and how it compares to Kumon Maths and I also took the opportunity to practice my reviewing techniques by looking at the best and reviewing <a href="http://www.21apps.com/development/comparing-myself-to-uncle-bob-martin/" target="_blank">Uncle Bobs prime factors TDD Kata</a>.</p></blockquote>
<p>I had promised to provide a web cast of the TDD SharePoint session that I did at the <a href="http://www.21apps.com/sharepoint/review-bpc-2009-dc/" target="_blank">Best Practices conference</a>, but I feel now that I need to really improve my keyboard mastery before taking on that one.  Instead I have taken the opportunity to record my current TDD Kata which is based on <a href="http://osherove.com/tdd-kata-1/" target="_blank">Roy Osheroves String Calculator</a>.  I have limited the steps I have done in this recording as I think 30 minutes would get a little boring.</p>
<h3>String Calculator</h3>
<ol>
<li>Create a simple String calculator with a method <strong>int Add(string numbers)</strong>
<ol>
<li>The method can take 0, 1 or 2 numbers, and will return their sum (for an empty string it will return 0) for example<strong> &#8220;&#8221; or &#8220;1&#8243; or &#8220;1,2&#8243;</strong></li>
<li>Start with the simplest test case of an empty string and move to 1 and two numbers</li>
<li>Remember to solve things as simply as possible so that you force yourself to write tests you did not think about</li>
<li>Remember to refactor after each passing test</li>
</ol>
</li>
<li>Allow the Add method to handle an unknown amount of numbers</li>
<li>Allow the Add method to handle new lines between numbers (instead of commas).
<ol>
<li>the following input is ok:  &#8220;1\n2,3&#8243;  (will equal 6)</li>
<li>the following input is NOT ok:  &#8220;1,\n&#8221; </li>
<li>Make sure you only test for correct inputs. there is no need to test for invalid inputs for these katas</li>
</ol>
</li>
<li>Allow the Add method to handle a different delimiter:
<ol>
<li>to change a delimiter, the beginning of the string will contain a separate line that looks like this:   &#8220;//[delimiter]\n[numbers.]&#8221; for example &#8220;//;\n1;2&#8243; should return three where the default delimiter is &#8216;;&#8217; .</li>
<li>the first line is optional. all existing scenarios should still be supported</li>
</ol>
</li>
</ol>
<p> </p>
<p>The idea behind TDD is to work through one thing at a time,  so in the example we start with 0 numbers (or empty string) and progress through each requirement continuing to adopt the Red, Green, Refactor approach &#8211; hopefully this will be clear from the video.</p>
<p>The Kata is not about knowing how to solve this problem, it is about knowing how to do things quickly and also knowing how to approach problems using TDD. </p>
<p>In this example,  as in my day job, I am using <a href="http://www.jetbrains.com/resharper/" target="_blank">ReSharper</a> to aid refactoring,  <a href="http://www.nunit.org/index.php" target="_blank">NUnit 2.5</a> for my tests as this supports TestCase and <a href="http://www.testdriven.net/" target="_blank">TestDriven.Net</a> to run the tests.</p>
<p>I have setup some live templates for the Test method and common Assert.AreEquals statements and have added a Keyboard shortcut to Re-Run the tests in TestDriven.Net (I use Alt + R).</p>
<p>Hope you enjoy the video, I have left the sound off - if you perfer some nice background music I can edit and add some <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Would love to hear your thoughts on this.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="450" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=7014098&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="450" src="http://vimeo.com/moogaloop.swf?clip_id=7014098&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p><a href="http://vimeo.com/7014098">TDD Kata &#8211; Calculator Part 1 by AndrewWoody</a> from <a href="http://vimeo.com/user2441558">Andrew Woodward</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>You can download the WMV video to watch locally from the Vimeo site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/agile/tdd-kata-by-example-video/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Doing Agile in a Team of One &#8211; Day 2 and the End of Sprint 1</title>
		<link>http://www.21apps.com/agile/doing-agile-in-a-team-of-one-day2/</link>
		<comments>http://www.21apps.com/agile/doing-agile-in-a-team-of-one-day2/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 10:30:37 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=969</guid>
		<description><![CDATA[I recently wrote about my experience of doing agile development in a team of one,  where I questioned the idea that &#8216;If your the only member of the team is it really worth going through the same agile development process &#8230; <a href="http://www.21apps.com/agile/doing-agile-in-a-team-of-one-day2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently wrote about my experience of doing <a href="/agile/doing-agile-in-a-team-of-one/">agile development in a team of one</a>,  where I questioned the idea that &#8216;If your the only member of the team is it really worth going through the same agile development process that you would in a team of eight?&#8217;</p>
<p>One interesting test for the project was that it was not going to be developed in one go,  the days spent on this project would need to fit around other work and I want to see how using agile techniques could help to keep the momentum and also retain the knowledge from the previous activities in a format that would be easy to pick up.</p>
<p>Sprint 1 &#8211; Day 1 was 15th May 2009</p>
<p>Sprint 1 &#8211; Day 2 was 4th June 2009 a full 20 days gap!</p>
<h3>Daily Scrum</h3>
<p>Always start the day with a scrum and ensure that you come prepared.  This meant that I needed to be able to answer the following questions</p>
<ul>
<li>What did you achieve yesterday?</li>
<li>What are you going to achieve today?</li>
<li>Any blockers preventing you from doing this?</li>
</ul>
<p>Take a minute,  try and think back 20 days and remember exactly what you had achieved?   Difficult isn&#8217;t it!  This is where using a process really helped,  I started by looking at the my white board to see where I left the project.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/06/441.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="441" src="http://www.21apps.com/wp-content/uploads/2009/06/441-thumb.jpg" border="0" alt="441" width="588" height="393" /></a></p>
<p>Interestingly I had not &#8216;Done&#8217; anything (refer to <a href="http://www.21apps.com/agile/doing-agile-in-a-team-of-one/">Day 1</a> for the definition of Done and how I structure my white board), my Burndown for Day 1 was looking very sad so I won&#8217;t even show it.  What I could however see was that I had completed the work on one story,  the second story was in progress and that I had not started the 3rd.  The observant will also notice I have a couple of new stories in the backlog.</p>
<p>If I had not been working on the project for the past 20 days how come there are new stories?</p>
<p><strong>Adding to the Backlog</strong></p>
<p>One of the tenets of being agile is that you work at a sustainable pace,  you don&#8217;t do more work than is possible and you allow your team to go home, see the family and have a beer or two.  What happens when you team is having that beer?  They think about work, and have ideas about ways to do things or new requirements and then write these down as new stories.  The same is true for the business, whilst the team is busy working on the current iteration the business is thinking about what they need, reacting to change and then feeding this into the backlog as new stories.  They may even take away some stories that are no longer needed.</p>
<p><strong>What does this mean?</strong></p>
<p>Well for Sprint 1 nothing,  we have agreed a short period of work where we can focus on the deliverables.   The new stories will be considered for Sprint 2 and for any removed stories we will have the warm feeling that we had not spent too long on in big up front design tasks and documentation.</p>
<h3>The Rest of Day 2</h3>
<p>After the scrum I reviewed the solution I had put together,  and compared this to the stories.  At the end of Day 1 I had a WSP  and some features that meant I could see what I had done and actually use it.  The ability to use the solution very early in the process is another of the big benefits to being agile.  It allows people to see it for real, to make comment and also to make changes if it is not how they envisaged it.</p>
<p>Needless to say I made some changes,  there were bits that I had added that on reflection were not required,  I removed the extra items and did some refactoring of the solution to make it more compact and understandable.</p>
<p>The rest of the day went pretty well,  and at the end of Sprint 1 I had not actually written any C# code or created any Unit Tests.  The solution at the end of the sprint I had completed the three stories I had planned.  I have to confess that I did do a few extra hours work at the end of this day (Sprint) in order to complete the stories. This can be a common scenario where the a stress levels and work will increase towards the end of the Sprint.  The same if true of Waterfall projects but at the end of these projects there is just so much more that is expected to be done the stress levels go off the scale.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/06/stress.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Stress" src="http://www.21apps.com/wp-content/uploads/2009/06/stress-thumb.png" border="0" alt="Stress" width="640" height="294" /></a></p>
<p><strong></strong></p>
<p>The final tasks for the end of Sprint 1 was to do a &#8220;Show and Tell&#8221; to the business.  To make this more real,  and to be able to provide a summary once the project is released I record a Screencast demonstrating what had been done.   It may sound silly doing the screen cast or doing a show and tell to yourself, however what it does do is make you bring together everything and ensure that what you said was done, actually was done.</p>
<h3>Sprint 1 Retrospective</h3>
<p>In order to improve our processes, to produce better quality solutions and to make ourselves more productive we need to look at what happened in the Sprint, the good things as well as the challenging ones and also look for ways to improve.</p>
<p><strong>Things that went well</strong></p>
<ul>
<li>Adopted great agile techniques</li>
<li>Was able to pickup after a break</li>
<li>Good use of tools like WSPBuilder and hosted source control</li>
</ul>
<p><strong>Things to improve on</strong></p>
<ul>
<li>Testing was manual &#8211; need more automation of integration and acceptance tests</li>
<li>Testing was on single machine &#8211; need to test on multi server farm configuration</li>
<li>Project break was too long &#8211; final delivery will be too late at current pace</li>
</ul>
<p>If you want to learn how to be better at retrospectives I recommend getting a copy of <a href="http://www.amazon.com/Agile-Retrospectives-Making-Teams-Great/dp/0977616649" target="_blank">Agile Retrospectives, Making Good Teams Great by Esther Derby and Diana Larsen.</a></p>
<h3>Summary</h3>
<p>Based on the experience so far I can say that adopting agile techniques in a team of one really is something that everyone should do.   I agree just cranking out code some developers could be a fair bit more productive up front than I have been. However if the project takes off and you need to bring in more help or you have a long break the project will eventually fail without these process in place.</p>
<p>And the biggest benefit to doing this is that you learn the benefits of being agile,  you understand why it works and you will be able to add this to your CV and Life experience and go on to become a much better developer.  You will be able to challenge the traditional practices in your organisation based on experience and not just hearsay.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/agile/doing-agile-in-a-team-of-one-day2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Doing Agile in a Team of One</title>
		<link>http://www.21apps.com/agile/doing-agile-in-a-team-of-one/</link>
		<comments>http://www.21apps.com/agile/doing-agile-in-a-team-of-one/#comments</comments>
		<pubDate>Fri, 15 May 2009 22:10:06 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=950</guid>
		<description><![CDATA[If your the only member of the team is it really worth going through the same agile development process that you would in a team of eight? Isn&#8217;t it quicker to just crack open Visual Studio and start coding?   After &#8230; <a href="http://www.21apps.com/agile/doing-agile-in-a-team-of-one/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If your the only member of the team is it really worth going through the same agile development process that you would in a team of eight?</p>
<p>Isn&#8217;t it quicker to just crack open Visual Studio and start coding?   After all your the customer so you know what you want right?   You not going to have to deal with any of the social complexities that conspire against you. You&#8217;re going have the hottest of communication with the dev team,  the dev and test roles will have an interment knowledge and the scrum master won&#8217;t really have to do anything as there is not going to be any blockers on this project.</p>
<p><strong>Right?</strong></p>
<p>So I started down this path and before I knew it I had some weird project created with bits of code and SharePoint artefacts but not really seeming to make any progress.   I was easily distracted by other things and didn&#8217;t really have a feel for how long it would take and when I could say I was done.</p>
<p><strong><span style="font-size: medium; color: #ff0000;">STOP!</span></strong></p>
<p>What was I doing!  I spend my time trying to help people develop better, to take small steps and sometimes big steps to help produce better software..   why was I not practicing what I preached?</p>
<p><strong>I stopped!</strong></p>
<p>Deep breath, deleted all the rubbish I can previously created and got back to basics.</p>
<h3>The Team</h3>
<p>I have a team,  the fact that some (in this case all) of the roles were done by the same person was ok; that happens often in agile teams.</p>
<h3>Design</h3>
<p>Yes, you heard me right here.  <a href="http://www.binarywave.com/blogs/eshupps/default.aspx" target="_blank">Eric Shupps</a> would be proud of me <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .   I&#8217;m not going to jump into Visual Studio and crank out code starting [TestFixture] I need to do some design work first, even though this application is going to be small I still need to put in the time on the upfront design.  I need to think through the solution at a high level.</p>
<p>Here I used the opportunity to try out the great <a href="http://www.balsamiq.com/" target="_blank">Balsamiq</a> application,  which I stumped up the $79 license fee for and download the desktop version.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/05/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Blurred out Balsamiq Design" src="http://www.21apps.com/wp-content/uploads/2009/05/image-thumb.png" border="0" alt="Blurred out Balsamiq Design" width="612" height="480" /></a></p>
<p>I&#8217;ve deliberately blurred the image but you get the idea of what the mock ups look like, and these take only a matter of minutes to produce.  Definately something you should consider if your currently trying to do this in Visio or heaven forbid cranking out HTML mockups.</p>
<p>The few UI based mockups actually helped me to understand how the application would work for the end user, which in turn provided a clear vision for the way the solution would be developed.</p>
<h3>User Stories</h3>
<p>I didn&#8217;t need to do any remote collaboration on the User Stories so I was able to get back to basics and use one of the white boards in my office as the task board.   I wrote the user stories out on post-it notes and added them to the board along with rough estimates for each one.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/05/image1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/05/image-thumb1.png" border="0" alt="image" width="635" height="484" /></a></p>
<p>Here you can see I&#8217;m using a very common step of status on my task board</p>
<p><strong>Backlog </strong>- This is where I add all stories that came out of the design,  they are all user focused with nothing specific about the implementation.  No stories like &#8216;Use jQuery to make it nice&#8217;  these are user stories.  If I think of something while i&#8217;m coding or testing, or even having a beer I can just write it to a post-it and stick it on the backlog.</p>
<p><strong>Sprint</strong> &#8211; I like Scrum so adopt a Scrum Esq. style to my process.  The sprint will be where I put the stories I plan to do next.  The amount is based on the estimate and also the sprint length.   In this project I&#8217;m doing stupily short sprints of 2 days each.</p>
<p><strong>In Progress &#8211; </strong>When I pick off a story to work on it goes in here,  if you&#8217;ve ever looked at the Kanban approaches your looking to keep this &#8216;In Progress&#8217; to a defined level.  I like to try and move things through to &#8216;Done&#8217; before picking off new stories.</p>
<p><strong>Verify</strong> &#8211; When I think it&#8217;s been coded properly and dev tested I move the story here.   Verify is where I would validate the code on another environment &#8211; i.e. a non-dev box,  one with multiple web front ends.  At this point I also look at introducing some form of automation for both the build/deployment and also the acceptance testing.</p>
<p><strong>Done</strong> &#8211; This is when it is really really done,  there is nothing left to do, no documentation, no tests or tweaks,  the code is production ready.</p>
<h3>Sprint 1 &#8211; Day 1</h3>
<p>Having selected the user stories for the sprint it was time to setup my dev project and get some of the foundations in place.   If you follow me on twitter you will know that I previously spent time producing a decent SharePoint development Virtual Machine so it was very quick for me to roll out the few things I needed to get going.   A SharePoint team site in which I could spike and test my code,  a VS2008 solution and class library project in which to start cranking out some code.</p>
<p>At the end of Day 1 my board looked like this:</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/05/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/05/image-thumb2.png" border="0" alt="image" width="638" height="484" /></a></p>
<p>One of the stories I felt was ready for verification and another I was making good progress on.   At this point I had nothing &#8216;Done&#8217; my burndown in the morning would look a bit sad,  but that&#8217;s OK that is often the case at the start of a project or sprint.  I also don&#8217;t at this point have a verification setup so this is going to slow me down a bit on Day 2.</p>
<p>Day 1 has been good,  I have the basic project structure defined.   I was able to build a WSP with the SharePoint features I needed to complete the first story and was able to deploy and test this on my dev machine.</p>
<p>People that have read my blog or seen me talk at conferences and user groups know that I am very keen on doing things right; I like to see Unit Tests and better still I want to see people at least trying Test Driven Development.   However at the end of Day 1 I was yet to write a single line of C# code, neither in test form or production code.   So did I really do development on day one?</p>
<p>Well I think I did, only the language used was XML and a little bit of CAML and for these items I do not know of any way, that makes sense, to unit test.  I often think that the XML we define as part of SharePoint projects are more inline with doing configuration,  we are just setting up SharePoint using a specific configuration and the testing for this should naturally falls into the integration space and will be picked up during verification.   That is not to say as a developer I do not validate it,  I need to ensure that it works as expected in my environment before I can move it over to the Verify column and it&#8217; is the job of the tester to make sure this happens.  For this project the tester (me) was adamant that it all worked as they didn&#8217;t want to have to waste time on silly errors.</p>
<h3>Interesting Test</h3>
<p>One thing that I will be having to do with this project is fit it around real work, the sort that helps to keep food on the table sort of work.   This means that the sprints although 2 days in length the elapsed time may be significantly longer.  I know that this will impact on the velocity as I will lose some of the momentum during these breaks, however the benefit I have from adopting a more defined process is that it will be significantly easier for me to pick up the project.   Imaging if I had to go back to the mess of code I had originally created after a weeks break!</p>
<p>I&#8217;m really interested to see if my agile development with a team of one really does make a significant impact on the way I develop the code, on the time it takes to complete it and on the quality of the solution created at the end.</p>
<p><a href="http://www.21apps.com/agile/doing-agile-in-a-team-of-one-day2/">Find out what happens on Day 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/agile/doing-agile-in-a-team-of-one/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Introducing Project Aberdovey: Scrum for SharePoint</title>
		<link>http://www.21apps.com/sharepoint/introducing-project-aberdovey/</link>
		<comments>http://www.21apps.com/sharepoint/introducing-project-aberdovey/#comments</comments>
		<pubDate>Mon, 04 May 2009 16:44:20 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[21Scrum]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[21Scruim]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=933</guid>
		<description><![CDATA[UPDATE:  Project Aberdovey is now live and called 21SCRUM Download a trial from www.21scrum.com Being an advocate of SharePoint as an application platform I looked long and hard for a decent implementation of a Scrum and have always been found &#8230; <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>UPDATE:  Project Aberdovey is now live and called 21SCRUM</p></blockquote>
<blockquote><p>Download a trial from <a href="http://www.21scrum.com">www.21scrum.com</a></p></blockquote>
<p>Being an advocate of SharePoint as an application platform I looked long and hard for a decent implementation of a Scrum and have always been found wanting.  I have seen simple examples where any power user could set things up but found the lack of any Burndown charts meant you lost probably the most important part of Scrum &#8211; the visibility.</p>
<p>I have found that <a href=" http://www.versionone.com" target="_blank">VersionOne</a> is one of the best products on the market, although it has a lot of options which tends to put off new teams.</p>
<p>For those that use Team Foundation Server your probably going to head towards the <a href="http://www.scrumforteamsystem.com/en/default.aspx" target="_blank">Scrum for Team System</a> developed by Conchango.  I&#8217;ve not used this in anger so am unable to comment on how well it works however this solution is not really a SharePoint specific solution as it requires you to make the commitment to using Team Foundation Server.</p>
<p>Bil Simser did a good <a href="http://weblogs.asp.net/bsimser/archive/2006/10/21/Scrum-Tools-Roundup.aspx" target="_blank">post</a> on scrum tools,  although its nearly 3 years old still has some good links.   Again however the tools are not specifically SharePoint.</p>
<h3>Why the SharePoint Obsession?</h3>
<p>SharePoint is the collaboration tool of choice, companies have deployed it and it is being used with varying degrees of success.  People have become familiar with the how to add items to a list, how to upload documents into a document library and for the more advanced how to build engaging dashboards.</p>
<p>What is the biggest thing you get from adopting scrum?  &#8216;<strong>Visibility&#8217;</strong></p>
<p>What do you need to encourage to make Scrum work?  &#8216;<strong>Collaboration&#8217;</strong></p>
<p>SharePoint is the natural platform choice on which to build a Scrum tool.</p>
<h3>Introducing Project Aberdovey</h3>
<p>As with all good development teams I think it is right that your development project should have a name,  and in keeping with some big companies in the Seattle area 21apps uses place names.   <a href="http://www.aberdovey.org/" target="_blank">Aberdovey</a>, or as it&#8217;s spelt in Welsh Aberdyfi, has probably one of the best beaches in the UK and is located 50 miles west of the office.</p>
<p>Put simply, Project Aberdovey is a Scrum tool for SharePoint.</p>
<p>There are a few aims for the project:</p>
<ol>
<li>Produce a fantastic Scrum tool built on SharePoint</li>
<li>Develop the solution using agile techniques including TDD</li>
<li>Dogfood the solution as soon as possible &#8211; what better way to develop the right solution</li>
<li>Open development &#8211; I want to give feedback on the challenges but also welcome your input</li>
</ol>
<p>I will be looking for ways to give people visibility,  I am looking at codeplex as an option but welcome any suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/introducing-project-aberdovey/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Improve you SharePoint code with Red Gate ANTS</title>
		<link>http://www.21apps.com/sharepoint/code-profiling-ants/</link>
		<comments>http://www.21apps.com/sharepoint/code-profiling-ants/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 22:20:02 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=881</guid>
		<description><![CDATA[As development practices around the SharePoint platform mature the demands for better quality and better performing solutions are being made.  Gone are the days when Enterprises will accept that the Roll-Up Web Part they purchased will not scale beyond a &#8230; <a href="http://www.21apps.com/sharepoint/code-profiling-ants/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As development practices around the SharePoint platform mature the demands for better quality and better performing solutions are being made.  Gone are the days when Enterprises will accept that the Roll-Up Web Part they purchased will not scale beyond a few site collections.  A knowledge of the platform and defensive coding alone will not cut the mustard, the need for a holistic approach to your development practices will be the only way to achieve success.  In this blog post I am focusing on one specific technique, <strong>code profiling</strong>, and using the excellent <a href="http://www.red-gate.com/Products/ants_profiler/index.htm" target="_blank">Red Gate ANTS Profiler</a>.</p>
<p><em>Disclaimer</em>:  Red Gate ANTS Profiler is a paid for application.  There are other products on the market that do code profiling including Visual Studio.  The reason for using ANTS in this post is due to the ease with which you can get up an running and the quality of the user experience.  I recommend you set aside a day to look at the profiling in Visual Studio and then a few hours to get that much further with ANTS.</p>
<p><a href="http://en.wikipedia.org/wiki/Performance_analysis" target="_blank">Software Performance Analysis</a> &#8211; Wikipedia</p>
<blockquote><p>In <a href="http://en.wikipedia.org/wiki/Software_engineering" target="_blank">software engineering</a>, <strong>performance analysis</strong>, more commonly today known as <strong>profiling</strong>, is the investigation of a program&#8217;s behavior using information gathered as the program executes (i.e. it is a form of <a href="http://en.wikipedia.org/wiki/Dynamic_program_analysis" target="_blank">dynamic program analysis</a>, as opposed to <a href="http://en.wikipedia.org/wiki/Static_code_analysis" target="_blank">static code analysis</a>). The usual goal of performance analysis is to determine which sections of a program to <a href="http://en.wikipedia.org/wiki/Optimization_%28computer_science%29" target="_blank">optimize</a> &#8211; usually either to increase its speed or decrease its memory requirement (or sometimes both).</p></blockquote>
<p>As the quote says this technique is specifically aimed at the optimization of code; the tools enable the developer to quickly target the areas of code that need optimization and lead to an improved return for the effort. (seems strange saying ROI when talking about dev techniques, but this is really what it is).</p>
<h3>Getting started</h3>
<p>Red Gate provide a 14 day trial, so you can try before you buy.  The latest <a href="http://www.red-gate.com/Products/ants_profiler/index.htm">release</a>, version 4.3 as at the time of writing, has made some great improvements over the 4.1 version &#8211; most notably the removal of the need to stop all the IIS web sites listening on port 80 <img src='http://www.21apps.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>As you would expect this post will focus on profiling SharePoint code, I&#8217;m going to use the <a href="http://www.codeplex.com/sp8ball" target="_blank">Magic 8 ball</a> application developed for my <a href="/sharepoint/tdd-at-spbpc-slidedeck/" target="_blank">TDD session</a> at the Best Practices SharePoint Conference in San Diego.</p>
<blockquote><p>More details on Test Driven SharePoint development can be in the <a href="/agile/">Agile</a> section of this site.</p></blockquote>
<h4>Environment</h4>
<p>The environment that I will do the testing is a typical SharePoint developers Virtual Machine.</p>
<ol>
<li>Windows 2008 Server (32bit)</li>
<li>Visual Studio 2008</li>
<li>Microsoft Office SharePoint Server 2007</li>
<li>SQL Server 2005</li>
</ol>
<p>As this is running on Windows 2008 I will be testing against IIS7.   The requirements are identical for Windows 2003 and IIS 6.0</p>
<h4>Installation</h4>
<p>Download ANTS Profiler and install, not too many options to worry about here.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb6.png" border="0" alt="image" width="244" height="123" /></a></p>
<p>Luckily for my first run through the team have provided a technical paper on installing, using and getting ANTS Profiler to work with SharePoint, <a href="http://www.red-gate.com/support/Knowledgebase/ANTS_Profiler/AP4SharePoint.pdf" target="_blank">How to profile a SharePoint 2007 Site Collection</a>.  There were a few things in here that I prefer not to do,  I will document what I do below and will pass this back &#8211; I&#8217;m not criticizing, there&#8217;s no way I would even attempt to write a Profiler so mucho respect from me to the Red Gate team</p>
<h3>Configuration</h3>
<p>We are looking for the ability to profile any site collection within a Web Application.  This involves getting the account used for the associated application pool, giving it some additional rights and then configuring the ANTS services to use this account.</p>
<h4>Web Application</h4>
<p>Depending on your development machine configuration you will have a number of web applications configured in SharePoint, the configuration below should be reasonably familiar to most of you.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb7.png" border="0" alt="image" width="537" height="252" /></a></p>
<p>The key here is to identify the web application (IIS Website) as we need to get the account name from the associated Application Pool.</p>
<p>Load IIS Manager, select the web application and chose Basic Settings from the Actions menu on the right.  This will show the associated application pool as below.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb8.png" border="0" alt="image" width="715" height="492" /></a></p>
<p>Select the Application Pools from the connections menu, choose the application pool identified in the previous step and click advanced settings.  This will give you a properties screen showing the account we need to work with.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image9.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb9.png" border="0" alt="image" width="456" height="556" /></a></p>
<p>In this case <strong>21apps\svc-intranet-ap &#8211; </strong>if you have a local installation this may be set to Local System in which case the steps below may not be required.   I recommend that dev&#8217;s don&#8217;t have a default install as you really need to understand how SharePoint is setup to undertake any large scale developments.</p>
<h4>Web.Config</h4>
<p>In IIS 6 days you would need to edit the web.config file to set the application into debug mode.   In IIS 7 the common ASP.NET configuration options have been promoted to the IIS console.  With the web application still selected click on the .NET Compilation option and change the Debug behaviour to True and click Apply.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb10.png" border="0" alt="image" width="592" height="361" /></a></p>
<p>Like all good SharePoint developers you will be working with WSS_Minimal trust settings or a custom policy file.  To do profiling however you will need to set the Trust level to Full.  Again IIS 7 provides a UI or you can edit it manually.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image11.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb11.png" border="0" alt="image" width="501" height="242" /></a></p>
<p>It is possible to run the code without setting a Full trust level, but you need to remove the .pdb files and will lose the ability to profile the lines of code.  Which is sort of the point of profiling!  If you don&#8217;t set Full trust you will get an error like the one below when loading a web part</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: consolas,'Courier New',courier,monospace; max-height: 200px; font-size: 8pt; cursor: text;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;">Web Part Error: An error has occurred.

Show Error Details
Hide Error Details 

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
  at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean&amp; canBeCached, RuntimeMethodHandle&amp; ctor, Boolean&amp; bNeedSecurityCheck)
  at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
  at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
  at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly)
  at System.Activator.CreateInstance(Type type, Boolean nonPublic)
  at System.Activator.CreateInstance(Type type)
  at Microsoft.SharePoint.WebPartPages.SPWebPartSerializer.get_DefaultControl()
  at Microsoft.SharePoint.WebPartPages.BinaryWebPartSerializer.SerializedWebPart..ctor(SPWebPartManager webPartManager, XmlNamespaceManager xmlnsManager, Byte[] sharedData, Byte[] userData, String[] links, Type type, SPWeb spWeb)
  at Microsoft.SharePoint.WebPartPages.BinaryWebPartSerializer.Deserialize(SPWebPartManager webPartManager, XmlNamespaceManager xmlnsManager, Byte[] userData, Byte[] sharedData, String[] links, Type type, SPWeb spWeb)
  at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts)

[VerificationException: Operation could destabilize the runtime.]</pre>
</div>
<h4>Services</h4>
<p>ANTS runs as two services</p>
<ol>
<li>ANTS Memory Profiler 4 Service</li>
<li>ANTS Performance Profiler 4 Service</li>
</ol>
<p>Change the accounts on these two services to the same accounts used in the web application we identified above.</p>
<p>If this is the first time the account has been associated with a service it will be automatically granted the &#8216;Log On As A Service&#8217; right.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image12.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb12.png" border="0" alt="image" width="487" height="464" /></a></p>
<h4>Local Security Policy</h4>
<p>From the Administrators menu choose Local Security Policy and grant the application pool account the following rights</p>
<ol>
<li>Act as Part of the Operating System</li>
<li>Impersonate Client after authentication</li>
</ol>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image13.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb13.png" border="0" alt="image" width="589" height="399" /></a></p>
<p>Open a command prompt and run gpupdate /force.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image14.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb14.png" border="0" alt="image" width="459" height="111" /></a></p>
<h3>Profiling your code</h3>
<p>Your environment is now configured, we can start profiling.  As this is SharePoint I tend to just hit the bit i&#8217;m planning to profile first to make sure this is working before I start profiling.  Many hours can be lost trying to solve a configuration issue with a profiler that is not at fault.</p>
<p>Start Red Gate ANTS Performance Profiler.  It knows we&#8217;re running on a system a system that has UAC, it offers to make our life easy and always run as an Administrator.  I normally click yes here.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image15.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb15.png" border="0" alt="image" width="423" height="300" /></a></p>
<p>ANTS loads the Profile Settings window is automatically.</p>
<p>There are only a few things to set.</p>
<ol>
<li>Choose the ASP.Net web application (hosted in IIS)</li>
<li>The URL to the SharePoint site</li>
<li>Use the original port</li>
</ol>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image16.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb16.png" border="0" alt="image" width="687" height="530" /></a></p>
<p>Further profiling counters can be set, but we just want to get our first run going for now.  Click on Start Profiling.  (In this example I have added a long running process to show how ANTS can identify this as a hotspot).</p>
<h3>Profile Results</h3>
<p>Profiling will start and a new browser will open at the location specified.  As this is SharePoint the profiler restarts the service so you will always have a small delay while SharePoint is JIT compiled. The profile timeline will show this impact on the processor.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image17.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb17.png" border="0" alt="image" width="783" height="198" /></a></p>
<p>Once the processor has levelled out its time to start profiling your code.   Navigate and interact with the bit of the application you are interested in.  If it is a  web part or navigation load you are interested in then you can refresh the page.</p>
<p>Once you are happy you have performed enough tasks,  I recommend keeping these focused, stop the profiling. ANTS will present you with the HOT code, the bit of code that is the worst performing. You can focus the analysis on any part of the profile graph to show poor performing code around a specific spike in the processor or memory.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image18.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb18.png" border="0" alt="image" width="779" height="594" /></a></p>
<p>In the example above I am focused on the code that runs (including my long running process) when I ask the magic 8 ball a question.</p>
<p>Viewing source code when you have enabled Line level profiling shows every line, the hit count and the % of time taken to perform that operation.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image19.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb19.png" border="0" alt="image" width="818" height="549" /></a></p>
<p>The really cool thing is you can click through the methods to follow the slow running process through the code!</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb20.png" border="0" alt="image" width="547" height="143" /></a></p>
<p>Showing the method grid allows you to open up a call graph for any method to see how the processing is broken down in a dynamic tree view.  This really is just brilliant!  The image below does not do it justice you really do need to see this for yourself to appreciate it.</p>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/02/image21.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2009/02/image-thumb21.png" border="0" alt="image" width="420" height="397" /></a></p>
<h3>Conclusion</h3>
<p>The long running process I added for the demonstration was picked up and allowed me to drill down into the lines of code that were the slowest.  It even showed how the internal calls within the base classes performed.</p>
<p>Red Gate ANTS Profiler is easy to setup and proves to be an invaluable tool in your software development tool kit.  I suspect profiling will not be something that you do every day, however with the speed and ease of use I would like to think that you will consider the inclusion of profiling a must have rather than a nice to have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/code-profiling-ants/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Best Practices: Test Driven Development with SharePoint Slide Deck</title>
		<link>http://www.21apps.com/sharepoint/tdd-at-spbpc-slidedeck/</link>
		<comments>http://www.21apps.com/sharepoint/tdd-at-spbpc-slidedeck/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 01:12:10 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[TypeMock]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=802</guid>
		<description><![CDATA[In contrast to the Agile SharePoint development with Scrum session this was very light on the slides.  In good Agile tradition I adopted a Pair Programming approach with me at the keyboard and the audience been my code buddy.  Everyone &#8230; <a href="http://www.21apps.com/sharepoint/tdd-at-spbpc-slidedeck/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In contrast to the <a href="/sharepoint/agile-development-with-scrum/">Agile SharePoint development with Scrum</a> session this was very light on the slides.  In good Agile tradition I adopted a Pair Programming approach with me at the keyboard and the audience been my code buddy.  Everyone was provided with a copy of Uncle Bobs <a href="http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd" target="_blank">Three rules of TDD</a> to help with during the pairing process.  The rules state:</p>
<ol>
<li>You are not allowed to write any production code unless it is to make a failing unit test pass.</li>
<li>You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.</li>
<li>You are not allowed to write any more production code than is sufficient to pass the one failing unit test.</li>
</ol>
<p>I did have some slides to set the scene (see below), to give some background to TDD and raise the issues around the use of the word TEST.  We also looked at <a href="http://www.blueskyonmars.com/2004/03/19/top-ten-reasons-that-tdd-sucks/" target="_blank">10 reasons TDD sucks</a>, with a slight SharePoint slant,  and quickly got into Visual Studio where the real learning was to happen.</p>
<p>The user story was to develop a Magic 8 Ball web part that could have custom answers defined in a SharePoint list.  The finished code is available on <a href="http://www.codeplex.com/SP8Ball" target="_blank">CodePlex</a> and it is planned to extend this solution over time to expand on the ideas.  My main issue with just getting the finished code is the learning is in the process and it can be hard to see how the design was driven by the code.   I am planning to do a web cast on this to show this process.</p>
<blockquote><p>CodePlex project now available  <a href="http://www.codeplex.com/sp8ball">http://www.codeplex.com/sp8ball</a></p></blockquote>
<h3>Winners</h3>
<p>The guys at <a href="http://www.typemock.com/" target="_blank">Typemock</a> we very generous in donating 3 copies of <a href="http://www.typemock.com/sharepointpage.php" target="_blank">Isolator for SharePoint</a> which is an essential component for anyone doing unit testing in a SharePoint environment.  The lucky winners were</p>
<p>Mark Freeman<br />
Shahar Tamari<br />
Kennedy Duncan</p>
<p>Each of you will receive a free license for Isolator for SharePoint,  for those that did not win Typemock are running a special discount.</p>
<div id="__ss_1009982" style="text-align: left; width: 425px;"><a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Test Driven Development with SharePoint" href="http://www.slideshare.net/AndrewWoody/test-driven-development-with-sharepoint?type=powerpoint">Test Driven Development with SharePoint</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=woodwarddev371testdrivensharepointdevelopment-1234227656983258-2&amp;stripped_title=test-driven-development-with-sharepoint" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=woodwarddev371testdrivensharepointdevelopment-1234227656983258-2&amp;stripped_title=test-driven-development-with-sharepoint" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px;">View more <a style="text-decoration: underline" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline" href="http://www.slideshare.net/AndrewWoody">Andrew Woodward</a>. (tags: <a style="text-decoration: underline" href="http://slideshare.net/tag/tdd">tdd</a> <a style="text-decoration: underline" href="http://slideshare.net/tag/sharepoint">sharepoint</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/tdd-at-spbpc-slidedeck/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

