<?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>Games from Within &#187; Agile development</title>
	<atom:link href="http://gamesfromwithin.com/category/agile-development/feed" rel="self" type="application/rss+xml" />
	<link>http://gamesfromwithin.com</link>
	<description>Living the indie life</description>
	<lastBuildDate>Mon, 14 May 2012 16:06:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Fundamentally Agile</title>
		<link>http://gamesfromwithin.com/fundamentally-agile</link>
		<comments>http://gamesfromwithin.com/fundamentally-agile#comments</comments>
		<pubDate>Tue, 08 Aug 2006 05:40:24 +0000</pubDate>
		<dc:creator>Noel</dc:creator>
				<category><![CDATA[Agile development]]></category>

		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=345</guid>
		<description><![CDATA[In the past, I've given presentations about agile game development to two distinct

groups of people: game developers without much exposure to agile development, and agile developers who were unfamiliar with game development. This morning I realized how interesting it was to explain the goals and reasons behind agile development to someone completely outside those circles. <a href="http://gamesfromwithin.com/fundamentally-agile">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the past, I&#8217;ve given presentations about agile game development to two distinct groups of people: game developers without much exposure to agile development, and agile developers who were unfamiliar with game development. This morning I realized how interesting it was to explain the goals and reasons behind agile development to someone completely outside those circles.<span id="more-53"></span></p>
<p><!-- Fundamentally Agile --></p>
<p>Today I had lunch with an old friend. Even though he&#8217;s not a programmer, he&#8217;s enough of a tech-head that our conversation eventually turned towards agile development. In the past, I&#8217;ve given presentations about agile game development to two distinct groups of people: game developers without much exposure to agile development, and agile developers who were unfamiliar with game development. This morning I realized how interesting it was to explain the goals and reasons behind agile development to someone completely outside those circles. It forced me to go back to basics and think about the fundamentals of a topic I&#8217;ve been so involved in that I&#8217;d stopped thinking about in those terms..</p>
<p>What exactly is the key concept behind agile development? One possible definition is “a set of techniques and procedures with minimal overhead that allow us to make sound, just-in-time decisions.” <a href="#ref1">[1]</a></p>
<p>There are several important parts to that definition:</p>
<ul>
<li><strong>Decisions</strong>: It&#8217;s not about the code, or the team, or the tests. It&#8217;s about decisions. The ultimate goal is to deliver a useful product, but agile development helps us to make the decisions along the way. What do we create next? How do we want this thing to look? What features do we have to ship with?</li>
<li><strong>Just-in-time</strong>: Maybe the agile community has a better term for this, but the concept strongly reminded me of the just-in-time compiling strategy of Java interpreters. Basically, agile methods will delay decisions until the last moment they have to be made. Not only does this help avoiding design paralysis and having to make too many decisions early on, but it also means that a lot of decisions will never have to be made because things changed from the original expectations.</li>
<li><strong>Sound</strong>: I originally left this one out, but I realized that an 8-ball can make just-in-time decisions with the best. It&#8217;s making sound ones that is difficult. Whenever a decision needs to be made, agile teams will draw on all the information they&#8217;ve acquired up until then.. Not only will they know more about market trends and competitors&#8217; products, but they&#8217;ll also know about their own team strengths, technology limitations, or the shortcomings of past implementations. That&#8217;s a lot more information that they would have had available at the beginning of the project, during the traditional waterfall planning phase.</li>
<li><strong>Minimal overhead</strong>: Agile processes are, by definition, very light. The goal is to create a valuable product, not the process itself. Agile techniques introduce the minimal amount of overhead to achieve their purpose.</li>
</ul>
<p>My friend was very curious about this approach, since it&#8217;s quite different from the normal way of working he&#8217;s used to in his company. He had a very insightful question: “Don&#8217;t you end up doing a lot of re-work?”. And the answer is, yes, absolutely. However, it&#8217;s not as wasteful as it sounds. It&#8217;s actually quite an efficient approach for a lot of projects.</p>
<p>Let&#8217;s visualize the progress made in a project as a path on a 2D surface. The amount of work is the length of the path. The progress is how far from the starting point you&#8217;ve gone, and the direction represents different approaches, designs, or implementations. An ideal project would look like this:</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart00.png" alt="Ideal project" width="180" height="174" align="middle" /></p>
<p>The project starts, knows exactly where it&#8217;s going, and progresses in a straight line. Euclid would agree: You can&#8217;t be more efficient than by taking the straight line between two points.</p>
<p>This diagram can be used to represent any scale: from the whole project spanning several years, to how a particular feature is implemented in a couple of weeks, or how a class is implemented in one morning. The same principles apply in all cases.</p>
<p>As a comparison, I suppose a <a href="http://en.wikipedia.org/wiki/Death_march_(software_development)"> death march project</a> would look more like this:</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart01.png" alt="Death march project" width="180" height="174" align="middle" /></p>
<p>You are constantly doing work, but you aren&#8217;t getting any closer to your destination. The project eventually gets canned, or development stops somewhere and it gets patched up the best it can and shipped to unsuspecting customers.</p>
<p>You might hope that an agile project looks more like this:</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart02.png" alt="Possible agile" width="180" height="174" align="middle" /></p>
<p>A project like that implies that some changes happened during development, but while always making steady progress. That would be nice, but in practice it often doesn&#8217;t work that way. When you change your plans or even some implementation, you often end up with some amount of rework:</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart03.png" alt="Agile with rework" width="180" height="174" align="middle" /></p>
<p>You can see all the rework by the zigzags going in and out indicating varying levels of progress. I believe this rework is inevitable (and maybe even desirable) in agile projects. It happens at a low level, like changing interfaces to a class and having up update all the hundred tests you wrote that relied on that interface. But it also happens at a higher level, when you realize that a game feature isn&#8217;t as fun as you thought and you drop it in favor of another one that could be more promising.</p>
<p>From the above diagrams, agile development really looks inefficient. Clearly, we have traveled a much longer path to reach our destination (work done). But agile development can actually do better. How can we be more efficient than traveling in a straight line without resorting to strange relativistic warped space?</p>
<p>The diagram doesn&#8217;t tell the whole picture. Remember that agile development relies on just-in-time decisions. That includes the final goal: As we&#8217;re working towards that goal, we might see other, better or easier-to-reach ones. As a matter of fact, this is something that happens most of the time. In that case, the picture looks quite different:</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart04.png" alt="Real agile" width="180" height="174" align="middle" /></p>
<p>Now the amount of work done is less than it was in the ideal first case! And we might have a better solution to boot. Who says you can&#8217;t have your cake and eat it too?</p>
<p>With this in mind, are there some cases in which it is better not to use agile development? Clearly. If you know things won&#8217;t change and you have a clear idea of how to reach your final goal, then go for it. Agile development won&#8217;t help much there. I have yet to see a project that worked that way. Maybe a sports game that ships year after year, or another simple port to a mobile platform. But most projects I&#8217;ve seen have such a high level of chaos and uncertainty due to all sorts of external factors that they could all greatly benefit from an agile approach.</p>
<p>This can be visualized very well by mapping the characteristics of a project in terms of requirements vs. technology. Projects that fit agile development well fall anywhere in the complicated to anarchy zone (a fair amount of technology uncertainty and requirements disagreement). On the other hand, projects in the lower left corner, which are very well understood and are very certain, would benefit the least from an agile approach. <a href="#ref2">[2]</a></p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/certainty.png" alt="Uncertainty vs. agreement" width="300" height="260" align="middle" /></p>
<p>I don&#8217;t usually bash agile development because I truly believe it&#8217;s a great way to do development, especially for games. But how would an agile development project gone bad look?</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/49_agile/chart05.png" alt="Agile gone bad" width="180" height="174" align="middle" /></p>
<p>Here there was a huge amount of rework without having any significant impact in the project. The project ended up very near the original goal (a bit further actually), but it spent most of its time thrashing around. You could argue that maybe some of that was exploring different solutions, but it&#8217;s probably not a sign of a good project anyway.</p>
<p>This brings up a good point: With agile development, it&#8217;s important to let go of the control-freak mindset. It&#8217;s good to have an idea of what your ultimate goal is, but it should never take precedence over what you discover along the way.</p>
<p>I see this frequently in people who have just learned the mechanics of test-driven development: they go through the cycle correctly, writing a test, coding, and then refactoring. But they&#8217;re still implementing the design they had in their head when they started instead of letting the tests dictate how the design should look. Often they get quite frustrated because they can&#8217;t figure out how to test things. This also applies at a larger scale. If a feature isn&#8217;t giving you good results, maybe it should be dropped or significantly changed.</p>
<p>This is one of the reasons I try to do my best not to talk about things as concrete as classes or functions during early discussions about some feature we will implement. I find that doing so tends to solidify those concepts too much and I tend to be much more likely to follow them instead of letting design evolve from what we learned during its implementation. So now instead, I prefer to talk about more abstract concepts like operations, modules, or data flow.</p>
<p>Whether you&#8217;re an agile developer or not, it&#8217;s always important to step back and question what you&#8217;re doing and how you&#8217;re doing it. Think about it in the context of your projects and needs, and re-evaluate it accordingly. Sometimes you&#8217;ll be surprised what new insights you achieve by stepping back and looking at the fundamentals of something you&#8217;re intimately familiar with. Just make sure you don&#8217;t bore your friends with too much technobabble.</p>
<hr />
<ol>
<li><a name="ref1"></a>Scott Ambler has <a href="http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm"> a very good, much more detailed definition of agile development</a> that describes more the practices rather than the goals.</li>
<li><a name="ref2"></a>Diagram adapted from <a href="http://agilegamedevelopment.com/GDC2006/gdc2006_ClintonKeith_0323.ppt">Clinton Keith&#8217;s Agile Game Development GDC 2006 presentation</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://gamesfromwithin.com/fundamentally-agile/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Day in the Life</title>
		<link>http://gamesfromwithin.com/a-day-in-the-life</link>
		<comments>http://gamesfromwithin.com/a-day-in-the-life#comments</comments>
		<pubDate>Mon, 06 Feb 2006 00:43:06 +0000</pubDate>
		<dc:creator>Noel</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=340</guid>
		<description><![CDATA[High Moon Studios is an unusual company in the games industry. We're applying agile methodologies for all of our development. My team in particular is using both Scrum (an agile management methodology) and Extreme Programming (an agile engineering methodology). And yes, that means we're doing pair programming, test-driven development, and all the other often controversial practices. I expect that in a few years, these practices will be a lot more common than they are today. <a href="http://gamesfromwithin.com/a-day-in-the-life">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://highmoonstudios.com/">High Moon Studios</a> is an unusual company in the games industry. We&#8217;re applying agile methodologies for all of our development. My team in particular is using both Scrum (an agile management methodology) and Extreme Programming (an agile engineering methodology). And yes, that means we&#8217;re doing pair programming, test-driven development, and all the other often controversial practices. I expect that in a few years, these practices will be a lot more common than they are today.<span id="more-49"></span></p>
<p>This article was first published in the 2005 Career Guide issue of Game Developer Magazine.</p>
<p>I lead the R&amp;D team here, and my team&#8217;s primary responsibility is to come up with the technology that game teams use for different projects. Nowadays, that means putting a lot of middleware programs through their paces and choosing the ones that suit our needs. But it also means getting down and dirty and writing a lot of code for our engine and tools.</p>
<p>With that in mind, come on and follow me through a typical workday.</p>
<p><strong>8:10 AM</strong></p>
<p>I roll in to work on my bicycle like I do every day. Even though I&#8217;m an early bird, Jim, a programmer in my team, arrived a few minutes earlier and is already at his desk.</p>
<p>I quickly catch up with my email. I also notice that the PCLint pass on our codebase last night caught a couple of minor warnings, so I quickly fix those and check them in.</p>
<p><strong>8:20 AM</strong></p>
<p>Today is Tuesday and our two-week iteration ends on Friday. An iteration consists of a fixed period (usually two weeks in our case) during which the team commits to deliver a set of functionality described through customer stories. The customer (in our case the other internal teams in our company) creates and prioritizes a set of stories. My team then breaks down those stories into tasks and estimates how long they will take to complete (tasks vary between 1 and 8 hours).</p>
<p>Jim and I walk over to the &#8220;war room&#8221; (the room with all the task cards corresponding to user stories pinned to the wall) and we choose the task that reads &#8220;Blend ragdoll and animation,&#8221; which is part of the user story listed as &#8220;Throwing a rigid body at a character and seeing a hit reaction.&#8221; The task was originally estimated at 3 hours, but now that we know that the ragdoll system is a bit more complicated than we thought, we re-estimate it at 4 hours.</p>
<p><strong>8:23 AM</strong></p>
<p>In addition to our own personal desk areas, we have pair-programming stations in the R&amp;D lab, with two monitors, two keyboards, two mice, two chairs, and plenty of room for two people. All production code is written by pairs of programmers. We grab a station and start working on the task.</p>
<p>Since we&#8217;re using test-driven development, we first write a very simple unit test for what we want to do, and only then write the code to make it pass. In this case, our first test checks that we create a blender object without inputs and that it produces no output. Then we write the blender class and make the test pass. It&#8217;s a tiny step, but it&#8217;s a step in the right direction. The whole cycle of write test, write code to make test pass, refactor, takes only 5-10 minutes, and we do it over and over.</p>
<p><strong>8:39 AM</strong></p>
<p>We have implemented a small amount of functionality, and all the code builds and all tests pass, so we check it in source control. This is called continuous integration, and it requires that programmers work on the latest version in source control and check in their own changes many times throughout the day.</p>
<p><strong>8:50 AM</strong></p>
<p>Other people from the team roll in, grab other pair programming stations, and start going at it. On their way in we have a quick chat and find out what we&#8217;re all working on.</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/42_hms/highmoon1.jpg" alt="Work hard..." hspace="10" width="500" height="289" align="middle" /><br />
<span class="caption">Work hard&#8230;</span></p>
<p><strong>9:37 AM</strong></p>
<p>I overhear Joel and Gary discussing how they&#8217;re going to test something that requires updating the physics simulations. I just did that a couple of days ago so I jump in the discussion. It turns out they need to do something that is almost the same as what I already did, so I point them to what I wrote and they will modify it to suit their needs.</p>
<p><strong>10:05 AM</strong></p>
<p>Things are moving along very nicely. We&#8217;ve checked in four times already this morning. When a pair gets really going, they might check in as many as 20 or more times in a single day. At this rate we might be done sooner than the four hours we had estimated.</p>
<p><strong>10:14 AM</strong></p>
<p>We have the daily Scrum meeting at 10:15, so we head over to the war room. Scrum meetings are very short, standup meetings with the whole team (eight people plus Brian, our producer). We quickly go around the room discussing what people are doing to get everybody up to speed.</p>
<p><strong>10:23 AM</strong></p>
<p>During the meeting the topic of how we&#8217;re loading physics assets came up. So we return to the pair programming area and have a quick discussion with everybody involved. We draw some quick UML charts on a whiteboard, think about how the data is going to be passed around, and after ten minutes we reach an agreement and go back to work on our tasks.</p>
<p><strong>11:15 AM</strong></p>
<p>We got the blending working correctly. All the unit tests pass, although we haven&#8217;t implemented it in the demo yet. There&#8217;s another task card for that. We check the code in right away. The code definitely can stand to improve in a few places because we were just concentrating on getting things working, so we spend some time refactoring. We have lots of unit tests, so we&#8217;re confident our refactoring isn&#8217;t introducing any bugs.</p>
<p><strong>11:56 AM</strong></p>
<p>The code is now in a much better state. We check it in and wait a few minutes for the build server to report that everything built correctly and all tests passed. During that time we talk about what the next task should be.</p>
<p><strong>12:05 PM</strong></p>
<p>We have nice shoulder-high surf today, so I&#8217;m going out surfing at lunch with several of my teammates. If it&#8217;s not surfing, it&#8217;s a basketball game, cycling, running, or even yoga. If all else fails, there&#8217;s always a game of <em>Guild Wars</em> with the rest of the High Moon clan.</p>
<p><strong>1:10 PM</strong></p>
<p>Back at my desk I eat a quick lunch while I catch up on my email (which I haven&#8217;t read since this morning because I&#8217;ve been at the pair programming station). I read an email from a middleware developer in response to one of our queries earlier in the day and fire back a quick response.</p>
<p><strong>1:25 PM</strong></p>
<p>Sean stops by my desk. He&#8217;s ready to go back to work, but the programmer he was pairing with in the morning got pulled to work on some last-minute issues with <em>Darkwatch</em>, which is about to go gold and has priority over anything we&#8217;re doing.</p>
<p>Sean quickly brings me up to speed on what they had been working on that morning, which was to display the exact memory usage for our physics system. I remember them mentioning that in this morning&#8217;s Scrum meeting. I also worked on the physics system last week, so I&#8217;m pretty familiar with the code. In a couple of minutes we&#8217;re already making progress.</p>
<p align="center"><img src="http://www.gamesfromwithin.com/wp-content/uploads/old_images/42_hms/highmoon2.jpg" alt="...rock hard" hspace="10" width="500" height="282" align="middle" /><br />
<span class="caption">&#8230; rock hard <img src='http://gamesfromwithin.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></p>
<p><strong>2:07 PM</strong></p>
<p>After writing several unit tests and implementing some functionality, we&#8217;re ready to add the memory display to the demo program. A couple of minutes later, we have a display in the demo indicating how much memory the physics system is using, and we see it go up and down as we add and remove rigid bodies from the demo.</p>
<p>But something is wrong. When we remove rigid bodies, the memory doesn&#8217;t come down to the same level it was before. We exit the demo and we see a long memory leak dump. First things first, we check in our changes, and then we dive in and look for the code that is leaking memory. It&#8217;s probably not caused by the code we just wrote, but we have &#8220;collective code ownership,&#8221; which means that everybody is expected to fix anything that needs fixing anywhere.</p>
<p><strong>2:12 PM</strong></p>
<p>The build just broke! The build server detected a failed build and notified us through a system tray application. I bring up the latest build log and I see that one of the unit tests failed in release mode. Tyson, who is sitting at the station next to ours, says &#8220;Oh yeah, I know what that is. I&#8217;ll fix it right now.&#8221; In less than 30 seconds he makes the change, and checks it in. A few minutes later, the build system reports a passing build and everything is back to normal.</p>
<p><strong>2:17 PM</strong></p>
<p>We found the memory leak. It was a misuse of reference counting. We first wrote a unit test that showed it failing, and then we fixed in the physics library. We check in our code.</p>
<p><strong>2:18 PM</strong></p>
<p>We go to the war room and grab the next task. This one has to do with being able to expose different variables and functions on the demo to tweak them through a GUI. We sign up for the task and start working on it.</p>
<p><strong>3:43 PM</strong></p>
<p>We&#8217;re totally in the zone. We&#8217;ve been writing tests and code like crazy and this task is going really well. We&#8217;ve done three check-ins for this task alone in the last hour.</p>
<p><strong>4:12 PM</strong></p>
<p>Another pair is discussing how to handle errors for some particular case. This is an important topic and it should be done consistently across all the code, so we have a quick discussion about it involving most of the team. Five minutes later we&#8217;ve made a decision and we all resume working on what we were doing before.</p>
<p><strong>5:40 PM</strong></p>
<p>We do our last check in for the day. We&#8217;re almost done with the task, but not quite there yet. Even though we could stay another hour and try to finish it, we&#8217;re both quite tired by now and we&#8217;re starting to not think as clearly and make some mistakes. We can wrap this up tomorrow morning as soon as we get in. The important part is that we got to a state where we could check in.</p>
<p>We have a rule that says nobody can check in code and leave. You have to wait for the build server to build the code successfully and pass all the tests. We keep build times short, so that usually means hanging around an extra 4-5 minutes. If anything breaks, you need to fix it or revert what you did, but there&#8217;s no excuse to leave with a broken build.</p>
<p>While I&#8217;m waiting for the build server to finish, I check the pile of email that accumulated in my inbox during the day.</p>
<p><strong>5:44 PM</strong></p>
<p>After a few minutes we get the green go ahead from the build server. Today was a pretty productive day, and at this pace we will definitely complete all the user stories by Friday. The demo we&#8217;re putting together is also starting to look very cool.</p>
<p>One of the things that agile development, and especially pair programming, does is to make each day very intense. There are no little breaks to read email, check a web site, or just goof around. We get a lot accomplished in a work day, but we can&#8217;t keep that pace for a long time, so it&#8217;s important to call it quits and go home. That leaves me with time at home to read technical books, prototype different ideas, or work on side projects in addition to unwinding, spending time with my family, and enjoying other hobbies.</p>
<p>I hop on my bike and head home with a big smile on my face.</p>
]]></content:encoded>
			<wfw:commentRss>http://gamesfromwithin.com/a-day-in-the-life/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Agile Game Development: Dealing with Chaos in the Real World</title>
		<link>http://gamesfromwithin.com/agile-game-development-dealing-with-chaos-in-the-real-world</link>
		<comments>http://gamesfromwithin.com/agile-game-development-dealing-with-chaos-in-the-real-world#comments</comments>
		<pubDate>Sun, 07 Nov 2004 04:06:34 +0000</pubDate>
		<dc:creator>Noel</dc:creator>
				<category><![CDATA[Agile development]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=309</guid>
		<description><![CDATA[No plan survives first contact with the enemy. In game development, detailed milestones, complex schedules, and careful planning often go out the window as soon as the project starts. Agile development provides a set of techniques to steer the project in the right direction and embrace change. <a href="http://gamesfromwithin.com/agile-game-development-dealing-with-chaos-in-the-real-world">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No plan survives first contact with the enemy. In game development, detailed milestones, complex schedules, and careful planning often go out the window as soon as the project starts. Agile development provides a set of techniques to steer the project in the right direction and embrace change. Is your game not shaping up to be as fun as you thought? Has a game come out with features that you must match to remain competitive? Has your code degenerated into an unmanageable mess?</p>
<p><span id="more-20"></span></p>
<p>This talk discusses how agile development can help in all those scenarios. In particular we look at methodologies like XP and Scrum, and techniques such as test-driven development and pair programming.</p>
<p><a href="http://convexhull.com/articles/agile_development_html">Slides from the Montréal Game Summit 2004 talk</a> <a href="http://convexhull.com/articles/agile_development.pdf">(pdf format)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gamesfromwithin.com/agile-game-development-dealing-with-chaos-in-the-real-world/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

