<?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>maxgarrick.com &#187; messageboard</title>
	<atom:link href="http://maxgarrick.com/tag/messageboard/feed/" rel="self" type="application/rss+xml" />
	<link>http://maxgarrick.com</link>
	<description>Come take a look under the hood</description>
	<lastBuildDate>Sun, 08 Mar 2009 23:32:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lessons learned: lean web application development</title>
		<link>http://maxgarrick.com/lean-web-app-development/</link>
		<comments>http://maxgarrick.com/lean-web-app-development/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 18:16:11 +0000</pubDate>
		<dc:creator>max</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[effectiveness]]></category>
		<category><![CDATA[lean development]]></category>
		<category><![CDATA[messageboard]]></category>
		<category><![CDATA[Q/A]]></category>
		<category><![CDATA[waterfall model]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://maxgarrick.com/?p=119</guid>
		<description><![CDATA[For the past 7 months I&#8217;ve been trying lean web application development for the MessageBoard project.  Now that the project is complete, I thought I&#8217;d compare lean application development with the typical waterfall method.  Many of these ideas came from the book Implementing Lean Software Development, which I highly recommend reading if you [...]]]></description>
			<content:encoded><![CDATA[<p>For the past 7 months I&#8217;ve been trying lean web application development for the <a href="http://maxgarrick.com/?p=6">MessageBoard project</a>.  Now that the project is complete, I thought I&#8217;d compare lean application development with the typical waterfall method.  Many of these ideas came from the book <a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=pd_bbs_sr_2?ie=UTF8&#038;s=books&#038;qid=1229967601&#038;sr=8-2">Implementing Lean Software Development</a>, which I highly recommend reading if you are used to a conventional waterfall development process.</p>
<p><strong>1. Lean development constrains time, not scope</strong><br />
Plan to spend a fixed amount of time working on a set of functionality.  If you overestimate what you can produce in that amount of time, don&#8217;t adjust the deadline&#8211;adjust the scope.  I&#8217;ve taken out sorting, filtering, and other behavior to make a monthly release deadline.  Note the missing behavior and bundle it for a subsequent iteration.  At the end of each month, I&#8217;d reflect on what I did to over/underestimate, then learn and adjust going forward.</p>
<p>There are a few compelling benefits to constraining time over scope.  Estimating, previously one of the hardest tasks for me to do accurately and important during end-of-year performance evaluations, became easier because I was always working with the same unit of time (one iteration is always one month).  Scheduling Q/A and planning sessions time was straightforward since I was making my deadlines.</p>
<p>Constraining deadlines over scope results in better prioritization.  I&#8217;ll start on the required functionality, saving nice-to-haves until the end.  If I am approaching an end-of-month deadline, I&#8217;ll postpone (or eliminate, team willing) the least cost-effective functionality.  I feel this has the effect of focusing staff time on the most valuable functionality. </p>
<p><strong>2. Frequent reviews, lots of feedback</strong><br />
Transitioning from the design mockup to a working product is a big step where many usability and programmatic issues are discovered.  Including Q/A and designer at the beginning and end of each month-long iteration saved time in the long run because these issues were discovered earlier in the implementation phase while the code was still flexible.</p>
<p>Having a designer writing HTML, CSS, and javascript code was also helpful.  We invited our designer in the first Q/A session of each month, allowing Q/A to talk directly to the designer about user interface issues (wording, confusing behavior, potential support issues, etc&#8230;.)  I thought it was more effective for the two to communicate directly instead of interpreting and relaying messages between the two team members.</p>
<p>When releases are small and frequent, making minor course corrections becomes much easier.  With the waterfall method, I wouldn&#8217;t see a designer or Q/A very much until major coding was completed.  I&#8217;d receive a huge amount of feedback right at the worst time: when code was mostly complete, rigid, and changes were very error-prone.  This feedback was more than just application bugs&#8211;it included UI and requirement changes.  With our three person team frequently reviewing the product and communicating, we could quickly identify what needed to be changed (either due to oversight or a change in our perception of user needs) and then decide on a course of action.</p>
<p><strong>Conclusion &#038; Looking Forward</strong><br />
We&#8217;ve brought Q/A fully into the iterative development, next I&#8217;d like to see if bringing our design activities into the iterative process is more effective than completing the design mockups prior to coding.  I think we&#8217;ve already seen the benefit of keeping the design flexible during implementation, allowing us to quickly make necessary UI changes.  Perhaps with a solid requirements, a good roadmap, and some rough mockups this added flexibility will result in more usable applications.  Keeping the design rough and more open to change could reduce some of the friction that comes when the team is reviewing &#8220;final&#8221; UI design documents.</p>
]]></content:encoded>
			<wfw:commentRss>http://maxgarrick.com/lean-web-app-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delivered: MessageBoard!</title>
		<link>http://maxgarrick.com/delivered-messageboard/</link>
		<comments>http://maxgarrick.com/delivered-messageboard/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 16:41:43 +0000</pubDate>
		<dc:creator>max</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[doctrine orm]]></category>
		<category><![CDATA[lean development]]></category>
		<category><![CDATA[messageboard]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://maxgarrick.com/?p=109</guid>
		<description><![CDATA[MessageBoard, a PHP &#38; MySQL web application with a Doctrine ORM back-end, was launched last Friday, right on deadline.  This concludes 7 month-long phases of development.
I think the ingredients essential to delivering this application on-time and within budget were:

Partnering with a user experience expert who designed the mock ups and wrote the bulk of [...]]]></description>
			<content:encoded><![CDATA[<p>MessageBoard, a PHP &amp; MySQL web application with a Doctrine ORM back-end, was launched last Friday, right on deadline.  This concludes 7 month-long phases of development.</p>
<p>I think the ingredients essential to delivering this application on-time and within budget were:</p>
<ul>
<li>Partnering with a user experience expert who designed the mock ups and wrote the bulk of HTML, CSS, and Javascript</li>
<li>Doctrine ORM: previously we hand-crafted SQL which was error-prone and occasionally introduced security vulnerabilities.</li>
<li>Month-long development iterations with a tested, working product delivered at the end of every month.</li>
</ul>
<p>Looking forward, there is an increasing need at our campus for an Academic Personnel Review web application, which will transform a paper process into a fully online process.  The major motivation behind this project is to reduce the massive amount of staff time that goes into coordinating this process in each campus unit.</p>
<p>This application will very likely be built in Java!</p>
]]></content:encoded>
			<wfw:commentRss>http://maxgarrick.com/delivered-messageboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MessageBoards, coded by yours truly</title>
		<link>http://maxgarrick.com/messageboards-coded-by-yours-truly/</link>
		<comments>http://maxgarrick.com/messageboards-coded-by-yours-truly/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 02:22:50 +0000</pubDate>
		<dc:creator>max</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[effectiveness]]></category>
		<category><![CDATA[messageboard]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[web app]]></category>
		<category><![CDATA[WorkLog]]></category>

		<guid isPermaLink="false">http://maxgarrick.com/?p=6</guid>
		<description><![CDATA[MessageBoards, a redesign/rethinking of the EEE NoteBoard tool, will be coded by yours truly.
MessageBoards will provide board, forum, thread, and post-level functionality we have all grown to love&#8211;yet in the context of our academic portal tied into roster info.
I&#8217;d like to approach the way I code this tool differently, specifically:

Introduce month-long design/code/QA iterations.
Unit &#38; integration [...]]]></description>
			<content:encoded><![CDATA[<p>MessageBoards, a redesign/rethinking of the EEE NoteBoard tool, will be coded by yours truly.</p>
<p>MessageBoards will provide board, forum, thread, and post-level functionality we have all grown to love&#8211;yet in the context of our academic portal tied into roster info.</p>
<p>I&#8217;d like to approach the way I code this tool differently, specifically:</p>
<ul>
<li>Introduce month-long design/code/QA iterations.</li>
<li>Unit &amp; integration testing.</li>
<li>Create a good set of Selenium tests.</li>
<li>Use the <a href="http://www.phpdoctrine.org/">Doctrine</a> framework for the underlying model.</li>
</ul>
<p>Why bother changing the approach?  We could code this tool just fine without changing the process, adding automated tests, and changing the framework.</p>
<p>MessageBoards is a big experiment.  It may actually take longer to develop (although I hope not)&#8211;and it will give us a lot of good feedback on some new web development approaches that promise to reduce time to delivery.  Delivering results faster&#8211;and with similar quality&#8211;would be a huge win.</p>
<p>There are a lot of variables in play, like the percent of time I dedicate to MessageBoards, and the four new approaches mentioned above.  In the end, I anticipate it will be a challenge to isolate which variables added or removed value.</p>
<p>Another couple variables I bet will reduce time to delivery: working in parallel with a talented UI designer and the excitement of possibly finding something that will make other programmer&#8217;s lives easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://maxgarrick.com/messageboards-coded-by-yours-truly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
