<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>William A Grant&#039;s Blog</title>
	<atom:link href="http://williamagrant.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://williamagrant.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sat, 10 Oct 2009 20:02:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='williamagrant.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>William A Grant&#039;s Blog</title>
		<link>http://williamagrant.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://williamagrant.wordpress.com/osd.xml" title="William A Grant&#039;s Blog" />
	<atom:link rel='hub' href='http://williamagrant.wordpress.com/?pushpress=hub'/>
		<item>
		<title>All Development Should be (a little) Extreme.</title>
		<link>http://williamagrant.wordpress.com/2009/10/10/all-development-should-be-a-little-extreme/</link>
		<comments>http://williamagrant.wordpress.com/2009/10/10/all-development-should-be-a-little-extreme/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 19:49:14 +0000</pubDate>
		<dc:creator>williamagrant</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Application Product Development Test Driven Deveopment TDD]]></category>

		<guid isPermaLink="false">http://williamagrant.wordpress.com/2009/10/10/all-development-should-be-a-little-extreme/</guid>
		<description><![CDATA[One of the main tenants of Extreme Programming (XP) is to write the unit test case before you write the code. This is one aspect of Extreme Programming that can and should be applied to any development effort, regardless of the language or application. Every software application goes through a design phase. It may be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=10&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the main tenants of <a title="Extreme Programming" href="http://xprogramming.com/xpmag/whatisxp" target="_blank">Extreme Programming</a> (XP) is to write the unit test case before you write the code. This is one aspect of Extreme Programming that can and should be applied to any development effort, regardless of the language or application.</p>
<p>Every software application goes through a design phase. It may be as formal as a multi-session design summit with architects, DBAs and the entire development team or it may be as informal as a developer sitting with a Mt. Dew and thinking about how she wants to store the data after it is pulled from the database. In all cases though, good developers will ask themselves ‘How am I going to prove that this code works’ before they even reach for the keyboard. They will design their code so that they can easily demonstrate that their code meets all of the requirements (positive test cases), and can handle any exceptions that might be encountered (negative test cases).</p>
<p>By thinking about how a particular piece of code is going to be tested before it is written, a developer is forced to think about programming in a more structured manner. They must think about how data will come into contact with their code, what form it will take, what possible values will be encountered and what exceptions could occur through normal and abnormal circumstances. They focus on what the end result will be in all of those cases, and how they can prove out each of them.</p>
<p>There is also a hidden benefit to test driven development – a simplified code base that is easy to maintain and debug. When you think about how you are going to test a piece of functionality first, you tend to think about writing code to pass the test in the most simplified manner. Sure you can create a complex code base with multiple calls to sub modules that perform very complex calculations and pass data back and forth multiple times. But testing it all out is going to be painfully time-consuming. It is much easier to design a clean code base with simple statements that are easy to test with data manipulation. Expand this thinking over several thousand lines of code and suddenly you can see how a simple structure that is easy to test becomes a very powerful thing. Rather than creating spaghetti code that is hard to trace and debug, you have a simple structure that can easily be tested by anyone who interacts with it, even a person who has never worked with the code before. By creating simple, easy to test structures, you improve the readability and maintainability of your code base, and make it easier to support and debug if something goes wrong.</p>
<p>While Extreme Programming concepts are typically associated with web-based technologies, Test Driven Development can be used in any programming language and in any development methodology. The key is to think about how you are going to prove your code works at the design phase, rather than after it is written. This eliminates a lot of re-work and creates the desired structure from the beginning.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/williamagrant.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/williamagrant.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/williamagrant.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=10&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://williamagrant.wordpress.com/2009/10/10/all-development-should-be-a-little-extreme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ce8d3d425dd77d453105b9712ba9dfc7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">williamagrant</media:title>
		</media:content>
	</item>
		<item>
		<title>Requirements Gathering: Start Your Project Off Right!</title>
		<link>http://williamagrant.wordpress.com/2009/10/02/requirements-gathering-start-your-project-off-right/</link>
		<comments>http://williamagrant.wordpress.com/2009/10/02/requirements-gathering-start-your-project-off-right/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 21:09:59 +0000</pubDate>
		<dc:creator>williamagrant</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Project / Program Management]]></category>
		<category><![CDATA[IT Application Development Product Development Project Management Program Management]]></category>

		<guid isPermaLink="false">http://williamagrant.wordpress.com/?p=6</guid>
		<description><![CDATA[One of the main reasons that software development projects fail is that the business needs are not properly defined. For a development project to be successful, both the business client and IT development teams need to improve the way they write and define requirements. Here’s how: Business Side: Business clients do not write good requirements. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=6&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the main reasons that software development projects fail is that the business needs are not properly defined. For a development project to be successful, both the business client and IT development teams need to improve the way they write and define requirements. Here’s how:</p>
<p><strong>Business Side:</strong> Business clients do not write good requirements. They are focused on running their business and most don’t want to take the time to hammer out every little detail. They provide the basic concept on how to do things and let the IT guys figure out how to make it happen. In many cases, they feel that the business case should be more than enough. To a large extent, they are correct. Business folks are responsible for articulating the business need and describing all of the use cases. They provide input on the overall design and need to be available to answer questions. It is the job of the IT team to translate those use cases and business needs into technical requirements and design. However, there’s a problem with this as well.</p>
<p><strong>IT Side:</strong> IT developers don’t understand business client needs. Developers want the requirements spelled out to the maximum detail. It is the easiest way for them to translate words into applications. Their success is measured by how well the code matches the requirements and the ultimate usability is a secondary concern. To be truly successful, the IT folks need to meet the business half way. Developers should take the time to really understand what the business is trying to do, and what these new requirements are trying to accomplish. To borrow an example from an old friend of mine : ‘The IT team would love it if the requirements document said build an 8 oz plastic bottle because the success criteria is absolutely clear. But if the business was only looking for something to hold cup of water, a glass or a plastic cup would have done the job and taken half the time to build.’ If the IT team doesn’t understand what the business is trying to accomplish, their final product will not be the best possible answer.</p>
<p><strong>The Solution:</strong> The key to building good requirements is multiple, in depth dialogues between the business client and the IT team. Much as it will pain folks to admit it, this can’t happen in a one hour meeting on a Friday afternoon. The business team should first work with the project lead. This can be a project manager, development manager or the actual application developer, depending on the size of the project. They should thoroughly go over the business case and the IT person should create a high level requirement document. Once this is complete and the business owner agrees with everything that is written, the IT lead needs to go back to the development team and have them review the document in detail – creating a list of questions or concerns that need to be addressed, and a list of assumptions, if any, that will be made. This list is then sent back to the business client and will form the basis for the first meeting between the full IT team and the business client. All developers and Quality Assurance team members that will be involved in the project should meet with the business client so that everyone is on the same page. The business client should approach this meeting as an opportunity to lay all of their cards on the table, describing everything that they need from the project. The IT team should view this like a legal discovery session, asking tons of questions and delving into the requirements at a very low level. The goal is not to attack the business client, but to gather as detailed information as possible. When the first session is over, the documented results are then re-distributed to all parties and additional sessions are scheduled based on how many additional gaps are defined. Note: these types of meetings need to take place, regardless of the development methodology. In a waterfall or RUP methodology, the requirements gathering sessions happen up front. In an AGILE methodology, the requirements gathering happens in smaller chunks, with a larger chunk taking place before the initial design is created. In either case, the scope of work should be clearly understood by the business client and the IT staff before any real work begins. The goal in all cases is a high degree of communication between the business and the IT staff and a mutual understanding of what is needed and why.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/williamagrant.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/williamagrant.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/williamagrant.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=6&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://williamagrant.wordpress.com/2009/10/02/requirements-gathering-start-your-project-off-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ce8d3d425dd77d453105b9712ba9dfc7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">williamagrant</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://williamagrant.wordpress.com/2009/10/01/hello-world/</link>
		<comments>http://williamagrant.wordpress.com/2009/10/01/hello-world/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 19:49:22 +0000</pubDate>
		<dc:creator>williamagrant</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. Please check out my website http://williamagrant.com<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=1&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>.</p>
<p>Please check out my website <a href="http://williamagrant.com">http://williamagrant.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/williamagrant.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/williamagrant.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/williamagrant.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=williamagrant.wordpress.com&amp;blog=9743158&amp;post=1&amp;subd=williamagrant&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://williamagrant.wordpress.com/2009/10/01/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ce8d3d425dd77d453105b9712ba9dfc7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">williamagrant</media:title>
		</media:content>
	</item>
	</channel>
</rss>
