<?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>MIH SWAT &#187; teams</title>
	<atom:link href="http://www.mihswat.com/tag/teams/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mihswat.com</link>
	<description>MIH SWAT - the official blog of MIH's Strategic Worldwide Applications and Technology Team.</description>
	<lastBuildDate>Mon, 06 Sep 2010 10:24:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Two Approaches To Setting Up An Agile Team</title>
		<link>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/</link>
		<comments>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 07:41:02 +0000</pubDate>
		<dc:creator>Graeme Cumming</dc:creator>
				<category><![CDATA[SWAT]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=896</guid>
		<description><![CDATA[The development team at DStv Labs, a division of DStv Online and MIH SWAT has recently been thrown together to look at some exciting projects in the New Media space. In keeping with the latest thinking around agile development frameworks, the DStv Labs team has adopted Scrum as the framework that will be used to [...]]]></description>
			<content:encoded><![CDATA[<p>The development team at <strong>DStv Labs</strong>, a division of <a href="http://www.dstvo.com/">DStv Online</a> and <a href="http://www.mihswat.com">MIH SWAT</a> has recently been thrown together to look at some exciting projects in the New Media space. In keeping with the latest thinking around agile development frameworks, the DStv Labs team has adopted <strong><a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a></strong> as the framework that will be used to deliver these projects.<span id="more-896"></span></p>
<p>For those not familiar with <strong>Scrum</strong>, let me summarise the key principles quickly:</p>
<p>1. A project team is setup usually consisting of between 5 and 9 resources.<br />
2. The resources within the team have the set of skills needed to develop products.<br />
3. There are defined roles within this setup, namely</p>
<ul>
<li>The <strong>Product Owner</strong>:      Manages a list of product features that require development. These      features are prioritized by the Product Owner.</li>
<li>The <strong>Scrum Master</strong>:      Ensures that the processes are followed and helps the team deliver the      product features by removing any impediments that prevent them from      delivering.</li>
<li>The <strong>Team</strong>:      Self organises around the product features and collectively work together      to deliver these product features.</li>
</ul>
<p>I&#8217;m simplifying the roles here of course &#8211; there are further responsibilities that are played by each role, but this is the essence.</p>
<p>4. The team produces working demonstrations of the product features at regular intervals (typically every two weeks).<br />
5. These working demonstrations are visible to the business, allowing the business to get a view on where the product is going and whether it needs refinement or a complete change in direction.<br />
6. The refinements or improvements are then fed back into the team, prioritised by the Product owner and driven through to demonstration once again.</p>
<p>The framework is <strong>agile</strong> in nature. Problems are quick to identify, and quick to change. Traditional project management methodologies would allow a project to proceed down a long and drawn-out development path and if the up-front analysis had not been 100% accurate, or if external factors had required a change to the project during development, this would be very difficult to accommodate. The Scrum process by contrast makes sense &#8211; it is a simple, logical way of delivering projects and caters for changing requirements.</p>
<p>That said, the question of how to setup the Scrum team and environment remains. As a new team, we are facing these questions and trying to figure out the best path to creating the esteemed &#8220;<strong>High Performance Team</strong>&#8220;. There are two schools of thought here. Let me deal with the first.<br />
As competent and experienced team members, there is a sense of &#8220;doing things right, from the start&#8221;. This includes everything from ordering the right development hardware, deciding on what software is appropriate, defining the practices and principles the team is going to follow, which languages are best suited for the projects that need to be developed, and what the collaboration environments need to look like. All good stuff, and completely necessary. The planning also includes discussion and decisions around how to test the code that is developed, how it is documented, how much of this is automated versus manual, which tools are best suited for testing, how new issues get logged and fed back into the team, and how much test coverage is considered acceptable. Again, all good stuff, and all appropriate to the work that is being done within the team. It is also a good idea to get the overall context of the project defined up front so that broad architecture decisions can be made. Where the team needs to be careful however, and we are all sometimes guilty of this, is when it comes to over-engineering a solution up-front. Chances are that this picture is changing, or will eventually change. Nothing wrong with good architecture up-front, but trying to understand too much detail too soon is probably wasted effort.</p>
<p>Lets take a look at the second school of though for a moment. The principles of Scrum and Agile development methodologies and practices suggest that the value lies in <strong>delivering small</strong>, <strong>incremental features</strong>, <strong>regularly</strong>. Mistakes and changes to project scope are inevitable and it is the ability of the team to correct these mistakes, and accept the changes in scope that makes them &#8220;High Performance Teams&#8221;. Through <strong>continuous feedback</strong> and team &#8220;retrospectives&#8221;, the gaps get filled, and the holes get plugged. The team continues to improve as a result and the delivery continues to speed up &#8211; well, from the initial stages anyway. Its a situation in which the team adapts the principles of Agile software development to suit their unique environment, the individual strengths and weaknesses and their team characters.</p>
<p>The point that I am trying to make here, is that there are two ways to try and achieve the &#8220;High Performance Team&#8221;. There is the &#8220;Lets build the 6-foot armour-plated robot with Augmented Reality vision&#8221;, or, the &#8220;Lets build the stick man and determine what he needs next&#8221; approach. There is a fine line between setting up a team that does everything right from the start, and a team that is <strong>setup to learn</strong> how to do what is right for them.</p>
<p>I was recently made aware of an agile development team based in the UK that has been together for the past 60 months. They deliver code weekly, have a number of visible metrics for how many bugs are in their system and how quickly they are resolved, what the velocity (capacity for delivery) of the team is, converted into monetary value, and a number of other &#8220;reporting&#8221; metrics. Incredibly useful information, and a sign that they are a &#8220;High Performance Team&#8221;, but I wonder how much of that was setup from the start, and how much of it &#8220;evolved&#8221; as the team progressed through their 60 months of development together?</p>
<p>To take the analogy used above, whilst it is important to have a team vision in place and to follow best practices where ever possible, I firmly believe that it is best to create the stick-man from day one, and get him running in an agreed direction, rather than spend too much time thinking and planning the 6-foot robot that potentially is only capable of taking a few steps at a time, and hopefully, in the right direction.</p>
<p>That being said, our team is in a good place. We are positioned nicely and are moving forward as a unit. Hopefully the discussions that our team have had, and the conclusions drawn here, can help you position and setup your own team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security: Are you thinking about it?</title>
		<link>http://www.mihswat.com/2009/10/01/security-are-you-thinking-about-it/</link>
		<comments>http://www.mihswat.com/2009/10/01/security-are-you-thinking-about-it/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 10:13:46 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[development cycle]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=823</guid>
		<description><![CDATA[Security is a recurring topic when discussing Technology. Taking security for granted when you are developing an application, even if it is a very simple application is a huge mistake which can have grave consequences. I have ran into many excuses for ignoring security &#8211; especially this one: &#8220;This is just a simple application, it [...]]]></description>
			<content:encoded><![CDATA[<p>Security is a recurring topic when discussing Technology. Taking security for granted when you are developing an application, even if it is a very simple application is a huge mistake which can have grave consequences. <span id="more-823"></span><br />
I have ran into many excuses for ignoring security &#8211; especially this one: &#8220;This is just a simple application, it has no sensitive data&#8221;. The point may seem valid to the developer who is under immense time pressure, but the consequences of neglecting security can be serious. <a href="http://blog.calevans.com/2009/08/27/will-speak-for-cab-fare/">Cal Evans</a> in his Open Teams session demonstrates the impact of deadlines when he tells us about a project with an impossible due date. Upon questioning the due date to the marketing department their reply was simple: &#8220;Because that&#8217;s when the brochures are done&#8221;. This demonstrates the  all too frequent lack of understanding of the complexity of issues around web development shown by the business side of organisations.</p>
<p>Whatever the reason for neglecting security may be, such neglect can compromise much more than just the &#8220;non-sensitive&#8221; application data. Consider for example a recent incident at one of the biggest Brazilian mobile companies. An issue was found in a file called popup.php. The code in the file had the apparently simple objective of appending the company logo and loading a given file&#8217;s content into a popup window. So the excuse of &#8220;non-sensitive&#8221; data seemed to apply in this case.</p>
<p>We can easily imagine that the need for this page probably originated in the &lt;insert non-tech department&gt; and got escalated to the tech department with high priority (late on a Friday afternoon). In the rush the priority was to &#8220;Just get it done&#8221;, and ignore the worries about security. &#8220;No problem&#8221; you say, &#8220;leave it like that during the weekend and redo it on Monday following the proper protocols&#8221;. What happens of course is that code is never looked at again&#8230;.until the day THE EPIC FAIL happens.</p>
<p>In retrospect we can easily see how the popup.php file led to THE EPIC FAIL. The final URL used by the popup.php file had a &#8220;url&#8221; GET var attached to it, the value of which usually pointed to another html or PHP file. This is an open invitation to try and point the GET to any file that would be &#8220;unexpected&#8221;, like so:</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2009/09/url2.jpg"><img class="alignnone size-medium wp-image-824" src="http://www.mihswat.com/wp-content/uploads/2009/09/url2-300x22.jpg" alt="Url" width="300" height="22" /></a></p>
<p>The result of this request immediately made obvious that at least 2 security issues were overlooked by the developer. Can you see which ones?</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2009/09/erro.jpg"><img class="alignnone size-medium wp-image-825" style="border: 1px solid black" src="http://www.mihswat.com/wp-content/uploads/2009/09/erro-300x58.jpg" alt="Error" width="300" height="58" /></a></p>
<p>The first mistake here was leaving display_errors on &#8211; and this shows us the second mistake(s).  The obvious one was neglecting to stick to the rule: &#8220;Filter input, escape output&#8221;. The developer obviously  actually executed an include on the file specified in the URL. We can see that he did not check in any way the value provided in the &#8220;url&#8221; parameter, but he should at least have checked whehther the file was still in the site&#8217;s file tree.</p>
<p>To turn this exploit into something dangerous you simply need to start passing it sensitive files, like /etc/passwd or try to load the apache httpd.conf file (which actually worked in this case).</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2009/09/passwd.jpg"><img class="alignnone size-medium wp-image-826" style="border: 1px solid black" src="http://www.mihswat.com/wp-content/uploads/2009/09/passwd-300x42.jpg" alt="passwd" width="300" height="42" /></a></p>
<p>Analyzing these files showed that the problem was severe. The actual site had little valuable information, but it did show that the server had much more on it than just this site &#8211; this qualifies as an EPIC FAIL because it compromised all systems on that server. Another factor that contributed to the severity of the problem was Twitter. This flaw was only fixed <em>2 days after it was first reported</em> and in the interval the detail of the exploit was widely circulated on Twitter, giving everyone the chance to look at configuration and other files. Only the victim knows if any sensitive data was compromised, but given the creativity of hackers nowadays, something was compromised for sure.</p>
<p>This demonstrates that security is not a simple &#8220;injection&#8221; or &#8220;pill&#8221; you can give your application after it is live &#8211; security needs to come from the ground up, leave the quick fixes for the occasional software bug. Your development cycle must include security concerns in the form of tests, validations or anything else you can think of. <a href="http://owasp.org">OWASP</a> is a great source of points to think about. No feature should roll out the door if it did not take security into consideration. One approach is to incorporate security into your &#8220;Definition of Done&#8221;, so that a task can only be complete after security steps are taken to validate it. Peer review can further contribute to enhanced security &#8211; two heads are better than one. Managers should be as worried about this as the programmers should be. An example of such a Definition of Done is:</p>
<ul>
<li>Developed</li>
<li>Tested (Unit Tests written and executed)</li>
<li>Documentation (proper doc file or PHPDoc blocks for code segments)</li>
<li>Peer review</li>
<li>Security check (for known flaws, like input filtering)</li>
<li>Load Testing</li>
</ul>
<p>Every task should include the above. Even though it may cost some project development time, it will save you even more time and effort if someone attempts to hack your site. Including security in the set of tasks gives the developer time to plan each feature and reduces the risk of exploits being released. Taking security into account is part of becoming a professional developer and leaving behind the code-hacker ethic which means just coding and not considering the environment in which the application exists. </p>
<p>Needless to say the security-conscious approach has to be embraced by management because it is usually up to them to fight the battle for more development time and proper development cycles, and not to simply give in to external pressures &#8211; which leads to the risk of distributing dangerous code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/10/01/security-are-you-thinking-about-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
