<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: How Do You Determine the Health of a Software Development Project?</title>
	<atom:link href="http://third-bit.com/blog/archives/1858.html/feed" rel="self" type="application/rss+xml" />
	<link>http://third-bit.com/blog/archives/1858.html</link>
	<description>Data is ones and zeroes &#124; Software is ones and zeroes and hard work.</description>
	<lastBuildDate>Tue, 22 May 2012 16:23:22 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Matt Doar</title>
		<link>http://third-bit.com/blog/archives/1858.html#comment-2410</link>
		<dc:creator>Matt Doar</dc:creator>
		<pubDate>Fri, 09 Jan 2009 17:37:32 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1858.html#comment-2410</guid>
		<description>Well, evaluating teams&#039; software development environment (and then recommending and implementing changes) is basically how I make my living. So I guess I should contribute something :-)

What I do is get a quick understanding of the products, then start asking questions. I use the chapters of &quot;Practical Development Environments&quot; as a guide, since they were written with this in mind. For example, version control - number of developers, number of sites, time for checkout for developer, release builds, number of branches, branching and merging strategies, etc. Then on to the build system, testing, documentation, automation, communication. You get the idea. It usually takes about an hour for 2 to 4 people. There are other more specific questions depending on the kind of product (desktop, web) and domain (networking, libraries). Then I summarize my understanding and email it to the potential client, usually with some recommendations, and we go from there.

However, it&#039;s only once I&#039;ve looked at source code, build files, build breakages, test coverage, the release process and internal documentation that I start to get a feel for the health of a project. Some things are very subtle - who are the technical leads, do they work well with each other, how does the rest of the team view their direction.

Now, to answer your real question. How would I evaluate teams of people learning to develop software together? I&#039;m going to assume that the projects are a few months in duration and that guidance in the form of the previous year&#039;s best projects and your comments on them is available. I&#039;d want to see evidence of thought in how the project&#039;s code is structured, and appropriate comments are important to everyone involved. Tracking bugs is a good sign, along with their resolution. Unit testing the harder parts and regression tests are excellent. Writing a good user guide or online help shows good taste.

I guess I like the idea of half the points for getting there and half for how you got there, but no-one learns in a vacuum so much of this depends on how the examples of good development are presented.</description>
		<content:encoded><![CDATA[<p>Well, evaluating teams&#8217; software development environment (and then recommending and implementing changes) is basically how I make my living. So I guess I should contribute something <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>What I do is get a quick understanding of the products, then start asking questions. I use the chapters of &#8220;Practical Development Environments&#8221; as a guide, since they were written with this in mind. For example, version control &#8211; number of developers, number of sites, time for checkout for developer, release builds, number of branches, branching and merging strategies, etc. Then on to the build system, testing, documentation, automation, communication. You get the idea. It usually takes about an hour for 2 to 4 people. There are other more specific questions depending on the kind of product (desktop, web) and domain (networking, libraries). Then I summarize my understanding and email it to the potential client, usually with some recommendations, and we go from there.</p>
<p>However, it&#8217;s only once I&#8217;ve looked at source code, build files, build breakages, test coverage, the release process and internal documentation that I start to get a feel for the health of a project. Some things are very subtle &#8211; who are the technical leads, do they work well with each other, how does the rest of the team view their direction.</p>
<p>Now, to answer your real question. How would I evaluate teams of people learning to develop software together? I&#8217;m going to assume that the projects are a few months in duration and that guidance in the form of the previous year&#8217;s best projects and your comments on them is available. I&#8217;d want to see evidence of thought in how the project&#8217;s code is structured, and appropriate comments are important to everyone involved. Tracking bugs is a good sign, along with their resolution. Unit testing the harder parts and regression tests are excellent. Writing a good user guide or online help shows good taste.</p>
<p>I guess I like the idea of half the points for getting there and half for how you got there, but no-one learns in a vacuum so much of this depends on how the examples of good development are presented.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paddy3118</title>
		<link>http://third-bit.com/blog/archives/1858.html#comment-2409</link>
		<dc:creator>Paddy3118</dc:creator>
		<pubDate>Mon, 29 Dec 2008 18:17:26 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1858.html#comment-2409</guid>
		<description>You might have asked them to &quot;keep something running&quot; from half-way through their time so you have something to test?

- Paddy.</description>
		<content:encoded><![CDATA[<p>You might have asked them to &#8220;keep something running&#8221; from half-way through their time so you have something to test?</p>
<p>- Paddy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Cohen</title>
		<link>http://third-bit.com/blog/archives/1858.html#comment-2408</link>
		<dc:creator>Jason Cohen</dc:creator>
		<pubDate>Mon, 29 Dec 2008 17:15:31 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1858.html#comment-2408</guid>
		<description>It depends on what kind of &quot;health&quot; you&#039;re talking about.  Specifically:

If you mean &quot;a team who is delivering salable product,&quot; then I&#039;m more interested in how they&#039;re meeting deadlines and producing shippable (meaning: enough features and few enough bugs to satisfy customers) software than I am about the state of the codebase.

If you mean &quot;a team making maintainable, solid code,&quot; then code reviews are probably the best thing you can do.  Is the code readable, is the documentation adequate, are there unit tests, do the various team members generally understand all the code and where things are.

It matters because there&#039;s beautiful code (sorry for the reference!) that doesn&#039;t the get job done or isn&#039;t delivering features quick enough, and there&#039;s successful commercial teams with less than stellar code but who are doing exactly what they need to be doing.

You could argue that sacrificing code &quot;goodness&quot; for the sake of delivering features isn&#039;t wise in the long run, and I would agree if the software is supposed to be in a mature place in its lifecycle, but if it&#039;s new software the equation isn&#039;t the same and it might indeed &lt;a href=&quot;http://blog.asmartbear.com/blog/software-quality-mortgage.html&quot; rel=&quot;nofollow&quot;&gt;be the correct trade-off&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>It depends on what kind of &#8220;health&#8221; you&#8217;re talking about.  Specifically:</p>
<p>If you mean &#8220;a team who is delivering salable product,&#8221; then I&#8217;m more interested in how they&#8217;re meeting deadlines and producing shippable (meaning: enough features and few enough bugs to satisfy customers) software than I am about the state of the codebase.</p>
<p>If you mean &#8220;a team making maintainable, solid code,&#8221; then code reviews are probably the best thing you can do.  Is the code readable, is the documentation adequate, are there unit tests, do the various team members generally understand all the code and where things are.</p>
<p>It matters because there&#8217;s beautiful code (sorry for the reference!) that doesn&#8217;t the get job done or isn&#8217;t delivering features quick enough, and there&#8217;s successful commercial teams with less than stellar code but who are doing exactly what they need to be doing.</p>
<p>You could argue that sacrificing code &#8220;goodness&#8221; for the sake of delivering features isn&#8217;t wise in the long run, and I would agree if the software is supposed to be in a mature place in its lifecycle, but if it&#8217;s new software the equation isn&#8217;t the same and it might indeed <a href="http://blog.asmartbear.com/blog/software-quality-mortgage.html" rel="nofollow">be the correct trade-off</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Doug Hellmann</title>
		<link>http://third-bit.com/blog/archives/1858.html#comment-2407</link>
		<dc:creator>Doug Hellmann</dc:creator>
		<pubDate>Sun, 28 Dec 2008 15:36:37 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1858.html#comment-2407</guid>
		<description>It seems reasonable to use a &quot;checklist&quot; based on concepts taught earlier in the semester (or even concurrently).  You&#039;re showing them techniques like using version control and TDD for a reason.  If they pick them up for use in their own project without being explicitly told they will be graded on their use, that shows that not only did they learn the technique but they see the benefit.  You probably shouldn&#039;t take points away for not using them (esp. if they are introduced concurrently with the project), but add points for each technique adopted.

I assume the projects are customer driven, rather than simply make-work tasks?  Customer satisfaction should play a role in the evaluation.  Did they meet the requirements?  Were they on time?  Did they cut appropriate features (in consultation with the customer) to make a deadline if they *weren&#039;t* on schedule at some point?

Self-evaluation is important, too, even though it is hard for newbies to be objective (as you point out).  Identifying their mistakes and identifying actions they could have taken to avoid them, even after the fact, shows that they have learned something.  How could the team have worked better together?  Which of the practices that they learned about in class might have made the project more successful?</description>
		<content:encoded><![CDATA[<p>It seems reasonable to use a &#8220;checklist&#8221; based on concepts taught earlier in the semester (or even concurrently).  You&#8217;re showing them techniques like using version control and TDD for a reason.  If they pick them up for use in their own project without being explicitly told they will be graded on their use, that shows that not only did they learn the technique but they see the benefit.  You probably shouldn&#8217;t take points away for not using them (esp. if they are introduced concurrently with the project), but add points for each technique adopted.</p>
<p>I assume the projects are customer driven, rather than simply make-work tasks?  Customer satisfaction should play a role in the evaluation.  Did they meet the requirements?  Were they on time?  Did they cut appropriate features (in consultation with the customer) to make a deadline if they *weren&#8217;t* on schedule at some point?</p>
<p>Self-evaluation is important, too, even though it is hard for newbies to be objective (as you point out).  Identifying their mistakes and identifying actions they could have taken to avoid them, even after the fact, shows that they have learned something.  How could the team have worked better together?  Which of the practices that they learned about in class might have made the project more successful?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: How Do You Determine the Health of a Software Development Project? &#171; Manish Pansiniya&#8217;s Blog</title>
		<link>http://third-bit.com/blog/archives/1858.html#comment-2406</link>
		<dc:creator>How Do You Determine the Health of a Software Development Project? &#171; Manish Pansiniya&#8217;s Blog</dc:creator>
		<pubDate>Fri, 26 Dec 2008 15:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://pyre.third-bit.com/blog/archives/1858.html#comment-2406</guid>
		<description>[...] taken from : http://pyre.third-bit.com/blog/archives/1858.html [...]</description>
		<content:encoded><![CDATA[<p>[...] taken from : <a href="http://pyre.third-bit.com/blog/archives/1858.html" rel="nofollow">http://pyre.third-bit.com/blog/archives/1858.html</a> [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

