<?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>&#62;kloctalk&#187; Code Review</title>
	<atom:link href="http://www.klocwork.com/blog/category/code-review/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.klocwork.com/blog</link>
	<description>&#62;kloctalk is a blog and a community for software development professionals who create and maintain mission-critical software and the challenges they face on a daily basis.</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:45:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Klocwork Developer Network Set to Go Live</title>
		<link>http://www.klocwork.com/blog/2011/03/klocwork-developer-network-set-to-go-live/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=klocwork-developer-network-set-to-go-live</link>
		<comments>http://www.klocwork.com/blog/2011/03/klocwork-developer-network-set-to-go-live/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 16:55:18 +0000</pubDate>
		<dc:creator>Alan Weekes</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Coding Standards]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[User Documentation]]></category>
		<category><![CDATA[code analysis]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[developer productivity]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1269</guid>
		<description><![CDATA[Our dilemma: How do we remove the barriers to knowledge about Klocwork's toolset, and developer best practices for creating high-quality code?
The answer: Klocwork Developer Network--a new online portal designed for learning, sharing and discussing all things source code analysis. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/03/DN_Home.png"><img class="alignright size-medium wp-image-1271" title="DN_Home" src="http://www.klocwork.com/blog/wp-content/uploads/2011/03/DN_Home-300x242.png" alt="Klocwork Developer Network" width="300" height="242" /></a><strong>Our dilemma:</strong> How do we remove the barriers to knowledge about Klocwork&#8217;s toolset and developer best practices for creating high-quality code?</p>
<p><strong>The answer:</strong> Klocwork Developer Network&#8211;a new online portal designed for learning, sharing and discussing all things source code analysis. We have had a lot of fun and a few sleepless nights as we assembled industry knowledge, online forums, computer-based training, best practices from industry experts, and lots of reference and learning resources.</p>
<p>A significant portion of the content on the Developer Network is open for public consumption. By registering and logging in, you get additional videos, demos, CBT and more.</p>
<p>We have a lot of fresh content to add to the site in the upcoming weeks and months, and we want to hear from you about what you would like to see. Why not register now at developer.klocwork.com? Then tell other Klocwork users about the portal too.</p>
<p>Visit Klocwork&#8217;s Developer Network at <a href="http://developer.klocwork.com">developer.klocwork.com</a>.</p>
<p>Already a my.klocwork.com user? Access the Klocwork Developer Network using your existing my.klocwork.com login. (But note that my.klocwork.com remains the place to go for support tickets and for FTP access to the latest software releases.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/03/klocwork-developer-network-set-to-go-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PM Thoughts on Code Reviews</title>
		<link>http://www.klocwork.com/blog/2010/11/pm-thoughts-on-code-reviews/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pm-thoughts-on-code-reviews</link>
		<comments>http://www.klocwork.com/blog/2010/11/pm-thoughts-on-code-reviews/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 18:07:59 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Nasty Bugs]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[code reviews]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1133</guid>
		<description><![CDATA[While I may not be the most active Twitter-er in the world, the one thing I have noticed is that there is an awful lot of activity around the term “code review” lately. Since code reviews have become a widely used practice, I thought I would share one of my experiences about code reviews with [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">While I may not be the most active Twitter-er in the world, the one thing I have noticed is that there is an awful lot of activity around the term “code review” lately. Since code reviews have become a widely used practice, I thought I would share one of my experiences about code reviews with you, from a product manager perspective.</p>
<p>In my first Agile team, many years ago, it was tabled (in our retrospective meeting after a couple of Sprints) that code reviews should be added to our definition of “<a href="http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod">Done</a>”.  Let’s just say my initial response was less than enthusiastic… but why was that?  Well, in my opinion (perhaps uneducated on this topic), doing code reviews seems to add more to the time it takes to finish stories, so that means less stories are getting done per iteration, which potentially means longer release times, or releases with less functionality than hoped for. This is not something a Product Manager is usually receptive to. After some debate, we put it to a vote where the “yays” defeated the “nays” by a fairly healthy margin (okay, it missed being unanimous by one vote).  So we updated our “Done” criteria and moved into our next Sprint.</p>
<p>Our next couple of sprints went off similar to our earlier sprints, I didn’t really notice any differences. We seemed to have about the same number of stories being started and completed, and I for one was mildly surprised that we were able to maintain the same velocity, even with the extra process of doing code reviews for each story. Curious, I decided to talk to one of the more senior developers about what was going on. He walked me over to our Scrum board and asked me if anything looked different. Nothing jumped out at me initially, until he pointed out that the number of ‘bug’ cards (the dreaded red cards) were significantly less than in those early iterations. He proceeded to tell me that the code reviews were playing a major role in this. Developers were finding things early and fixing them before passing the code onto the testers, leaving the testers to focus on testing the actual features …crazy, I know.<a href="http://www.klocwork.com/blog/wp-content/uploads/2010/11/DSC011661.jpg"><img class="alignright size-medium wp-image-1135" title="Scrum board" src="http://www.klocwork.com/blog/wp-content/uploads/2010/11/DSC011661-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>It really appeared as though the code reviews were producing better code, without actually slowing down the development process. My opinions of code reviews did a complete 180…now they were helping to contribute to better quality code that I could show our customers, without having to sacrifice anything in the way of release delays or velocity degradation. I had become a believer!</p>
<p> I think I have something to Twitter about now…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/11/pm-thoughts-on-code-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote Code Reviews &#8211; how do you support them?</title>
		<link>http://www.klocwork.com/blog/2010/08/remote-code-reviews-how-do-you-support-them/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=remote-code-reviews-how-do-you-support-them</link>
		<comments>http://www.klocwork.com/blog/2010/08/remote-code-reviews-how-do-you-support-them/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 18:55:22 +0000</pubDate>
		<dc:creator>Eric Hollebone</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[software developer]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1049</guid>
		<description><![CDATA[Most code reviews are done in-person, 60%  according to data  from a Forrester Consulting study commissioned by Klocwork.  So how do you accommodate remote sites, out-of-office employees  or off-shore development shops? Most software developer teams will face some form of remote development challenge during their careers or product cycles.  As demonstrated from the data above, the breakdown of remote need [...]]]></description>
			<content:encoded><![CDATA[<p>Most code reviews are done in-person, 60%  according to data  from a <a title="Code Review Resource Centre" href="http://www.klocwork.com/resources/code-review/" target="_blank">Forrester Consulting study commissioned by Klocwork</a>.  So how do you accommodate remote sites, out-of-office employees  or off-shore development shops?</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/08/klocwork-code-review-remote-support.png"><img class="alignleft size-large wp-image-1050" title="klocwork-code-review-remote-support" src="http://www.klocwork.com/blog/wp-content/uploads/2010/08/klocwork-code-review-remote-support-1024x362.png" alt="" width="800" /></a></p>
<p>Most software developer teams will face some form of remote development challenge during their careers or product cycles.  As demonstrated from the data above, the breakdown of remote need is as follows:</p>
<ul>
<li>76% use some form of outsourcing,</li>
<li>64% have some developers  located outside of the main campus,</li>
<li>40% of reviews are conducted with remote participants.</li>
</ul>
<p>You can&#8217;t let development come to a grinding halt simply because a critical team member is not physically available at the scheduled time or location.  For most organizations, code reviews need to be performed and employee travel is not the solution for cost and timing reasons.  This has driven the adoption of lightweight review processes and new tools that support it.</p>
<p>Klocwork built a code review tool for this express purpose.  Other ones exist like Code Collaborator and the open source <a href="http://www.reviewboard.org">Review Board</a> .  How do you support your remote code reviews?  Email?  Wiki? Or a purpose-built tool like one of the ones mentioned?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/08/remote-code-reviews-how-do-you-support-them/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Agile Tools: An ROI Example</title>
		<link>http://www.klocwork.com/blog/2010/07/agile-tools-an-roi-example/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agile-tools-an-roi-example</link>
		<comments>http://www.klocwork.com/blog/2010/07/agile-tools-an-roi-example/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:06:02 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1036</guid>
		<description><![CDATA[There has been lots of discussion on this blog (and others for that matter) on the importance of early defect detection, refactoring, and code reviews, but what does it all mean to a team of developers trying to maximize their velocity in a 2 week iteration? Based on a number of studies, and some real-world [...]]]></description>
			<content:encoded><![CDATA[<p>There has been lots of discussion on this blog (and others for that matter) on the importance of <a href="http://www.klocwork.com/blog/2009/06/get-the-red-out/">early defect detection</a>, <a href="http://www.versionone.com/Agile101/Refactoring.asp">refactoring</a>, and <a href="http://www.klocwork.com/blog/2010/04/the-joy-of-code-review-part-4/">code reviews</a>, but what does it all mean to a team of developers trying to maximize their <a href="http://softwaredevelopmenttoday.blogspot.com/2008/10/what-is-velocity-in-agile-software.html">velocity </a>in a 2 week iteration? Based on a number of studies, and some real-world customer feedback  we have put together the following ROI&#8230;but note that this ROI is not measured in dollars, but rather in hours saved, because a development team can more easily relate to a 20 hour time savings per iteration rather than a break even point of 14.5 months. A few assumptions first&#8230;the team is made up of 10 developers, working on 5 stories (each story creates about 300 LOC) every 2 week iteration. Also, we used internal estimates for the refactoring time savings since we couldn&#8217;t find any 3<sup>rd</sup> party data on refactoring ROI. . If you have anything more concrete, I&#8217;d love to hear about it.</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/07/roi1.jpg"><img class="size-large wp-image-1040 alignleft" title="roi" src="http://www.klocwork.com/blog/wp-content/uploads/2010/07/roi1-e1279631266773.jpg" alt="" width="626" height="187" /></a></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p>From this table (which has been a regular slide in our Agile in Action roadshow series) we see that tools can help, in this example just over 40 hours/iteration, which if you break that down further works out to about 1/2 day per developer every 2 weeks. Now that is an ROI that an agile development team can relate to&#8230;</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/07/agile-tools-an-roi-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developers think code reviews are great&#8230; what?</title>
		<link>http://www.klocwork.com/blog/2010/06/developers-think-code-reviews-are-great-what/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=developers-think-code-reviews-are-great-what</link>
		<comments>http://www.klocwork.com/blog/2010/06/developers-think-code-reviews-are-great-what/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 15:30:31 +0000</pubDate>
		<dc:creator>Brendan Harrison</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Forrester]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=980</guid>
		<description><![CDATA[It&#8217;s often taken as read that developers think code reviews are just a pain in the behind. Maybe that sentiment is true when a developer&#8217;s sitting amongst his/her peers and getting interrogated on the quality of their code, but some of the data from a Forrester Consulting study commissioned by Klocwork seems to contradict that [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s often taken as read that developers think code reviews are just a pain in the behind. Maybe that sentiment is true when a developer&#8217;s sitting amongst his/her peers and getting interrogated on the quality of their code, but some of the data from a <a title="Code Review Resource Centre" href="http://www.klocwork.com/resources/code-review/" target="_blank">Forrester Consulting study commissioned by Klocwork</a> seems to contradict that a bit. The survey asked software development professionals a whole bunch of questions related to code reviews (some of which we&#8217;ve <a title="Code Reviews - Mandatory but Ad-hoc?" href="http://www.klocwork.com/blog/2010/03/code-reviews-mandatory-but-ad-hoc/" target="_blank">referenced before</a>) and here are two interesting data points that suggest developers see real benefits from code reviews.</p>
<p><br class="spacer_" /></p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/06/code_review_data_results_jun1_v31.png"><img class="aligncenter size-full wp-image-985" title="code_review_data_results_jun1_v3" src="http://www.klocwork.com/blog/wp-content/uploads/2010/06/code_review_data_results_jun1_v31.png" alt="" width="591" height="694" /></a></p>
<p><br class="spacer_" /></p>
<p>So 79% of respondents indicate that, yes, code reviews have been effective at reducing the number of bugs found later in the development cycle. Furthermore, 43% state that code reviews have caused a fundamentally positive shift in their project&#8217;s direction. Cool.</p>
<p>Of course, in other parts of the survey, respondents complain about aspects of code review, in particular how time consuming and difficult they can be to implement consistently. Nonetheless, the data indicates that when organizations put their heads down and make them part of their development process, real benefits will be realized. So, the challenge is making them part of the process &#8211; of course we advocate a tools-based approach, making them more lightweight, and combining automation into your software verification strategy so that manual reviews aren&#8217;t the only technique being used to find implementation errors.</p>
<p>This data line-up with what you&#8217;re seeing within your organization?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/06/developers-think-code-reviews-are-great-what/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Observations from the Agile in Action Roadshow</title>
		<link>http://www.klocwork.com/blog/2010/05/observations-from-the-agile-in-action-roadshow/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=observations-from-the-agile-in-action-roadshow</link>
		<comments>http://www.klocwork.com/blog/2010/05/observations-from-the-agile-in-action-roadshow/#comments</comments>
		<pubDate>Fri, 21 May 2010 19:41:11 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=973</guid>
		<description><![CDATA[Just returned from my second stint on the Agile in Action roadshow with our friends from Electric Cloud, Perforce, and VersionOne, this time visiting the cities of Toronto, Philadelphia and Chicago. Rather than going into minute detail (and the fact it is a Friday afternoon before a long weekend), I thought I would share a [...]]]></description>
			<content:encoded><![CDATA[<p>Just returned from my second stint on the <a href="http://www.perforce.com/perforce/roadshows/register-chicago052010-p4.html">Agile in Action </a>roadshow with our friends from <a href="http://www.electric-cloud.com/">Electric Cloud</a>, <a href="http://www.perforce.com/">Perforce</a>, and <a href="http://www.versionone.com/">VersionOne</a>, this time visiting the cities of Toronto, Philadelphia and Chicago. Rather than going into minute detail (and the fact it is a Friday afternoon before a <a href="http://en.wikipedia.org/wiki/Victoria_Day">long weekend</a>), I thought I would share a few random observations from this trip:</p>
<ul>
<li>Organizations (and individuals) are begging for as much information and guidance as they can get on Agile and tools for Agile, and are willing to give up a days in the office and brave horrific traffic to get it</li>
<li>Teams that are 6 to 9 months practicing Agile think they&#8217;re novices, but in reality are seasoned veterans and have lived through most of the nightmares newer teams are currently facing</li>
<li>Toronto cab drivers have a random-number generator for their &#8220;flat-rate&#8221; fares from the airport</li>
<li>The majority of our audience would rank low to medium on both their knowledge and their adoption of Agile&#8230;they all want to go Agile, they just don&#8217;t know where to start (or if they were started, how they could improve things)</li>
<li>Window seats suck, but not as much as middle seats</li>
<li>Developers do code reviews, but don&#8217;t like doing them&#8230;</li>
<li>&#8230;but you could always count of the one guy in the audience who claimed to like them&#8230;obviously someone&#8217;s living in denial</li>
<li>And finally, if you are in 3 different hotels in 3 nights, keep the sleeve your room key comes in on you at all times&#8230;I guarantee you&#8217;ll forget your room number at least once during the trip. </li>
</ul>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/05/Picture1.jpg"><img class="alignleft size-full wp-image-977" title="Picture1" src="http://www.klocwork.com/blog/wp-content/uploads/2010/05/Picture1.jpg" alt="" width="274" height="181" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/05/observations-from-the-agile-in-action-roadshow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>So many developer tools &#8211; which ones to pick</title>
		<link>http://www.klocwork.com/blog/2010/05/so-many-developer-tools-which-ones-to-pick/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=so-many-developer-tools-which-ones-to-pick</link>
		<comments>http://www.klocwork.com/blog/2010/05/so-many-developer-tools-which-ones-to-pick/#comments</comments>
		<pubDate>Wed, 19 May 2010 15:51:25 +0000</pubDate>
		<dc:creator>Eric Hollebone</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=972</guid>
		<description><![CDATA[What is the ROI to the company for developer tools?  This has always been and continues to be a struggle in any development organization. Developer productivity to date has been very poorly measured and studied. Programming has always been a creative task bound within the constraints of  a framework.  Many people have tried to measure direct individual [...]]]></description>
			<content:encoded><![CDATA[<p>What is the ROI to the company for developer tools?  This has always been and continues to be a struggle in any  development organization. Developer productivity to date has been very poorly measured and studied. Programming has always been a creative task bound within the constraints of  a framework.  Many people have tried to measure direct individual developer productivity with less than convincing results:</p>
<blockquote><p>Bugs per dev, bugs per team, bug regression rates, bug trend lines, comparative .NET Framework book sales rates,  # of [static analysis] violations per kloc, etc, etc.. the list is really endless…</p>
</blockquote>
<p>So when it comes to assessing the value of development tools, what are the motivational and productivity drivers?  During my time as a development manager, my focus was always on reducing roadblocks and mindless repetitive tasks.  When you are well compensating developers to use their grey matter, you don&#8217;t want their efforts to be wasted on the simple stuff.</p>
<p>Focusing on a bottom-up approach, I base the tool choices on the marginal cost for adding a developer.  After getting the basics out of the way, including corporate overhead, dev box, standard  software load and a complier, what&#8217;s next?</p>
<p>Well, there are a plethora of vendors all screaming at you to buy their product, but let&#8217;s take a step back and look at what makes a developer produce better code.</p>
<p>Here is my list in order and why.  It starts at the developer desktop and depends on frequency of use and then spreads out to the rest of the development team:</p>
<ul>
<li>Source control (with nightly backups) &#8211; Even for a development team of one, don&#8217;t leave home without it.  The benefits of source control really can&#8217;t be overstated: revision control, easy diffs, build integration, product branching  and maintenance, etc.</li>
</ul>
<ul>
<li><a href="http://www.klocwork.com/products/insight/klocwork-truepath/" target="_blank">static analysis</a> &#8211; like grammar checking for Office but so much deeper. It has been proven time and time again that getting rid of the minor flaws and style inconsistencies right when the developer is working and the code is fresh in their brain is the most productive.  Waiting 2 hours, a  day and for some even a week costs a context switch.  When you add in the regression analysis for the maintainability, this tool just shines and pays for itself quickly</li>
</ul>
<ul>
<li>Issue tracking &#8211; some might debate that this tool&#8217;s placement should be above static analysis, but as I said,  my focus here is on the developer&#8217;s desktop and not team or management needs.</li>
</ul>
<ul>
<li>refactoring &#8211; only sightly better than find/search/replace - not essential but when used frequently and consistently can be used for good productivity benefits .  It&#8217;s one of the small tools that get you through the day.</li>
</ul>
<ul>
<li><a href="http://www.klocwork.com/solutions/code-review/">code review</a> &#8211; similar to static analysis but now we have widened our view off of the desktop and include the team to build better code. No one person can know everything and extra pairs of eyes on the code is only going to make it better.</li>
</ul>
<ul>
<li>unit testing &#8211; anything to take away the drudgery of building simple test cases that completely cover the class/api interfaces and maintaining with the refactoring that will happen over time.  You might ask why unit testing is lower on the list. Simple. You can&#8217;t test code that has not been written yet.</li>
</ul>
<ul>
<li>dynamic/performance profiling and input injection &#8211; your customer will like you for this one.  Over time, most applications grow, add new features and become sluggish pigs.  Version performance testing and making critical judgments in trading off performance for value is one of the  keys to repeat customers.</li>
</ul>
<p>There you have it.  A list of tools for developers (note I said developers not PMs or teams) that I consider essential to have on each desktop to get them through their day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/05/so-many-developer-tools-which-ones-to-pick/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Joy of&#8230; Code Review (part 4)</title>
		<link>http://www.klocwork.com/blog/2010/04/the-joy-of-code-review-part-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-joy-of-code-review-part-4</link>
		<comments>http://www.klocwork.com/blog/2010/04/the-joy-of-code-review-part-4/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 13:56:51 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=945</guid>
		<description><![CDATA[Part IV – Joy is in the eye of the beholder In preceding posts on this topic, I’ve outlined the continuing shift from in-person, physical interactions as being the defining notion of both social and business contexts, towards virtual interactions and marketplaces, and the fact that in all aspects except the most personal the latter [...]]]></description>
			<content:encoded><![CDATA[<p>Part IV – Joy is in the eye of the beholder</p>
<p>In <a href="http://www.klocwork.com/blog/2010/03/the-joy-of-code-review-part-3/">preceding posts</a> on this topic, I’ve outlined the continuing shift from in-person, physical interactions as being the defining notion of both social and business contexts, towards virtual interactions and marketplaces, and the fact that in all aspects except the most personal the latter can fulfill everything expected of the former. But what does all this have to do with engendering a vibrant and successful <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">code review</a> practice within a development organization? On the face of it, nothing much. Code review, you could determine, tends to happen within organizations that enforce it, so all we need to do is to pass a rule requiring code review before shipment and we’re gold, right? I mean, what could go wrong?</p>
<p>Unfortunately the reality isn’t so clear cut. Most organizations worth their salt have a “requirement” for code review to be performed. At least on the important bits (a definition I particularly like, particularly when it comes to motivating programmers working on the “unimportant” bits). Or the hard bits (likewise). One awesome process description I saw in action recently called for the architects in the team to review each others’ code, but everybody else got a free ride – because obviously the code that our highest paid, most talented developers produce is the stuff we’re really worried about being wrong, amirite?</p>
<p>Despite such requirements, whether they make sense or not, the rarity of code review is out there for all to see. In fact, we recently <a href="http://www.klocwork.com/blog/2010/03/code-reviews-mandatory-but-ad-hoc/">sponsored</a> the analysts at <a href="http://www.forrester.com/rb/research">Forrester</a> to produce a survey of code review practice in various different development environments (embedded, ISV, IT, etc.) and found that although most developers appear to believe that they live in organizations that do code review, most also claim that it doesn’t happen consistently for some reason or other.</p>
<p>Let’s take the most prevalent excuse claimed: too busy, got other stuff to do. Why is this claimed so uniformly? Certainly developers are busy people – we pay them a lot and expect a lot for that remuneration, after all, so sure they’ve got other stuff to do. But if we put this in another context, perhaps outside of the development process, say visiting Grandma, I’m sure there’s a parallel to be drawn. After all, we should definitely go visit Grandma more often. She’s probably not going to be around that long. She’s a nice lady, and she cooks cute little cupcakes when we do go there. So why not do it more often? Too busy, got other stuff to do. And, of course, it’s <em>really annoying</em> to drop whatever you are legitimately doing (whether development or otherwise) and go visit the old lady with the bad habit of talking about you as if you weren’t in the room.</p>
<p>As a manager, therefore, your task in ensuring code review has a much lower friction profile to it, is to remove what I think I’ll try to trademark as <em>The Grandma Effect</em>. If I have to stop what I’m doing, put on my Sunday best, and sit listening to stories from three decades past, I’m going to find all kinds of reasons not to. But if instead (to stretch the analogy to what I’m sure is the breaking point), Grandma were to learn how to play a <a href="http://www.worldofwarcraft.com/info/classes/rogue/">wtf-pwning Mutilate-spec’d Rogue</a>, then my interactions with her become much more palatable and <em>manageable. </em>Replace the trip to Grandma’s house with the annoyance of setting up a formal code review and you’ll get the picture.</p>
<p>There’s a <a href="http://books.google.com/books?id=MMlxzMNkE_0C&amp;dq=tipping+point&amp;printsec=frontcover&amp;source=bn&amp;hl=en&amp;ei=eoKzS_eNDcX_lgfxqaS6BA&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=4&amp;ved=0CB4Q6AEwAw#v=onepage&amp;q=&amp;f=false">tipping point</a> here, and it revolves around the place and relevance of social tooling within your development team. You, your peers and your reports are currently interacting with friends over <a href="http://windowslive.com/desktop/messenger">MSN</a>, <a href="http://www.twitter.com">Twitter</a>, <a href="http://www.facebook.com">Facebook</a>, you name it. They’re booking dates, arranging weekend schedules, and getting the latest news from <a href="http://www.reddit.com">Reddit</a>. You name it, they’re doing it and it’s all coming to them through a few pretty simple to leverage mechanisms.</p>
<p>Replace their social and common knowledge-gathering activities with knowledge <em>leveraged</em> within the code base, and it’s pretty easy to see how you could graft what has the potential to be a <a href="http://msdn.microsoft.com/en-us/library/aa302437.aspx">very</a> <a href="http://hub.opensolaris.org/bin/view/Project+jds/code_review">annoying</a> <a href="http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1319923,00.html">activity</a>, e.g. code review, onto a natural way of conducting business. Instead of creating an entire workflow around the invite, simply inform interested parties about commits and let them decide whether to review or not. Instead of insisting on top-down imposition, encourage a bottom-up adoption simply through ubiquitous availability of information.</p>
<p>Nobody forces anybody to use a service like Reddit, after all. It exists and thrives because of the community that finds value in its presence. Personally I interact with it through <a href="http://www.reddit.com/.rss">RSS</a> as I find that the most natural way of learning what it’s got to say. Lots of different feeds of information for the <a href="http://www.reddit.com/r/programming/.rss">different</a> <a href="http://www.reddit.com/r/funny/.rss">types</a> of <a href="http://www.reddit.com/r/science/.rss">news</a>, all presented through a common aggregation mechanism that feels natural, that works well, and that I don’t have to think about.</p>
<p>So, if commits that my team members are making, or commits that others are making to a component for which I feel either moral or actual responsibility are available through that same mechanism, I’m going to take advantage of the tools to review those commits and to make my presence felt.</p>
<blockquote><p><em>No formal review.</em></p>
<p><em>No formal sign-off</em>.</p>
</blockquote>
<p>But also a guarantee of way more participation, and what’s more, a broad reach around the typical chain-of-command style code reviews that we know and hate, instead engaging atypical contributors, not to mention the legion of lurkers just out to learn more. And isn&#8217;t that what it&#8217;s all about at the end of the day?</p>
<p>In summary: don’t <em>require</em> the architect, but <em>appreciate</em> their presence. And instead of bringing the people to the code, bring the code to the people.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/04/the-joy-of-code-review-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Reviews &#8211; Mandatory but Ad-Hoc?</title>
		<link>http://www.klocwork.com/blog/2010/03/code-reviews-mandatory-but-ad-hoc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=code-reviews-mandatory-but-ad-hoc</link>
		<comments>http://www.klocwork.com/blog/2010/03/code-reviews-mandatory-but-ad-hoc/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 12:33:52 +0000</pubDate>
		<dc:creator>Brendan Harrison</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Forrester]]></category>
		<category><![CDATA[software verification]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=936</guid>
		<description><![CDATA[The importance of code reviews has already been well covered by lots of smart people like Jack Ganssle and Jason Cohen. Recently, the subject has become more important around here, so we want to offer our take. In particular, we’re looking at the best way(s) to incorporate code reviews into an overall software verification strategy [...]]]></description>
			<content:encoded><![CDATA[<p>The importance of <a href="http://www.klocwork.com/solutions/code-review/">code reviews</a> has already been well covered by lots of smart people like <a title="Peer Code Reviews in Embedded Software" href="http://www.ganssle.com/inspections.htm" target="_blank">Jack Ganssle</a> and <a title="Lightweight Peer Code Reviews" href="http://www.methodsandtools.com/archive/archive.php?id=66" target="_blank">Jason Cohen</a>. Recently, the subject has become <a title="Klocwork Code Review Tool" href="http://www.klocwork.com/products/insight-pro/inspect-code-review/" target="_blank">more important</a> around here, so we want to offer our take. In particular, we’re looking at the best way(s) to incorporate code reviews into an overall software verification strategy and how automated tools (such as <a title="Static Analysis" href="http://www.klocwork.com/products/insight/klocwork-truepath/" target="_blank">static analysis</a>, no shock there) can help unleash the benefits of peer code review. More on that angle another time, first the bigger picture.</p>
<p>Klocwork recently commissioned a survey conducted by Forrester research on this whole topic and the results are pretty interesting. While there’s a whole bunch of data that can’t be covered in a single blog post, a general theme we found is that developers see the value of code reviews, they’re often mandatory, but the process itself seems to be ad-hoc and quite ‘behind the times’. Here’s an example of what I mean:</p>
<div id="attachment_938" class="wp-caption aligncenter" style="width: 642px"><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/03/code_review_data11.png"><img class="size-full wp-image-938 " title="Code Review Survey Data" src="http://www.klocwork.com/blog/wp-content/uploads/2010/03/code_review_data11.png" alt="" width="632" height="336" /></a><p class="wp-caption-text">Code Reviews - Mandatory but Ad-Hoc</p></div>
<p>So, code reviews are mandatory but you can kinda invite whoever you want to review the code. Shouldn’t who reviews the code be pretty important? (Hint: Yes)</p>
<p>We’re gonna keep talking about different aspects of this important development milestone, so stay tuned and we’d be interested to hear anything you have to say on the topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/03/code-reviews-mandatory-but-ad-hoc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Joy of&#8230; Code Review (part 3)</title>
		<link>http://www.klocwork.com/blog/2010/03/the-joy-of-code-review-part-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-joy-of-code-review-part-3</link>
		<comments>http://www.klocwork.com/blog/2010/03/the-joy-of-code-review-part-3/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 20:59:17 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=916</guid>
		<description><![CDATA[Part III – Joy is All Around Us When you think of a social activity, what do you think of? Perhaps a rave? Or maybe a quiet bridge foursome is more your style? Or even a Matrix-style meet-and-greet complete with latex and contortionists? Ahem… Or maybe you’ve finally let go of this old-world requirement to [...]]]></description>
			<content:encoded><![CDATA[<p>Part III – Joy is All Around Us</p>
<p>When you think of a social activity, what do you think of? Perhaps a rave? Or maybe a quiet bridge foursome is more your style? Or even a Matrix-style meet-and-greet complete with latex and contortionists? Ahem…</p>
<p>Or maybe you’ve finally let go of this old-world requirement to actually be in the presence of an individual to enjoy a social encounter with them, and instead have <a href="http://www.chatroulette.com">embraced</a> the <a href="http://omegle.com/">reality</a> of the 21<sup>st</sup> century, that <a href="http://www.reddit.com">society</a> and social interactions no longer require physical presence, and instead surround us every day, at every minute, as long as we (virtually) get out there and find them. Speaking as a long-time <a href="http://www.worldofwarcraft.com">online gamer</a>, I have a circle of folks I consider friends, with whom I <a href="http://www.ventrilo.com">talk most evening</a>s<a href="http://www.ventrilo.com/"></a>, with whom I’ve spent quality time learning and beating goal-based activities, yet none of whom I’ve ever met. And whilst their reaction to some family tragedy on my part may result in no more than a weak “dude, that blows…” on some forum or other, in every other aspect of social interplay, they fulfill exactly the same role as those few- and far-between actual, you know, <em>friends</em> that each of us cling to throughout life.</p>
<p>According to a <a href="http://en.wikipedia.org/wiki/Friendship#Decline_of_friendships_in_the_U.S.">study on the topic</a> conducted earlier this decade, friendship is becoming something of a luxury for the average American adult. Rather than expanding our circle of friends as travel has become more reachable for the masses, we’ve instead decreased that circle from an average of 3 to just above 1. So are we all just becoming obnoxious, introverted, “bah humbug!” Ebenezer Scrooge wannabes? Perhaps, and certainly that’s the <a href="http://www.usatoday.com/news/nation/2006-06-22-friendship_x.htm">trite response</a> to the statistics for people in search of a quick buzzword or appliance to blame.</p>
<p>But perhaps instead of this reflecting a net diminution of our quality of life, we’re simply replacing much of what was considered necessary in previous generations (beer with the boys, poker night, ice fishing trips, whatever floats your boat) with a more constant, more consistent, but at the same time more arms length notion of <a href="http://www.facebook.com">friendship</a> and <a href="http://www.twitter.com">social interaction</a>. Though different, it fulfills everything we need in terms of <a href="http://news.bbc.co.uk/2/hi/7920434.stm">communication</a> and <a href="http://jcmc.indiana.edu/vol12/issue4/ellison.html">support</a>, but leaves us free to concentrate on our family lives, or personal hobbies, or whatever else makes us happy to be, well, us.</p>
<p>Friendship when <em>we </em>want it, on <em>our </em>terms, and only then.</p>
<p>One potential projection of all of this can be found in the ongoing trending of the social nexus of life, business and relationships towards the online marketplaces that have sprung up around activity-, or focus-based requirements (I referred to this in my first post on this topic, drawing the correlation between <a href="http://www.facebook.com">Facebook</a> and dating, <a href="http://www.linkedin.com">LinkedIn</a> and prospecting, etc.).</p>
<p>Find a marketplace, find a life (or maybe, a <a href="http://www.secondlife.com">Second Life</a>) – and frankly, is that really any different from the actual bricks-and-mortar reality of the rat-infested, smelly locales of the distant past (minus, you know, the scary crone shouting on the street corner, and the propensity for picking up the Black Death at a moment’s notice…)?</p>
<p>Indeed, my Chief Architect likes to describe an attendee at a recent conference as saying something like, “But what should we do about all these <em>old people</em> who can only e-mail or even worse need to use the phone? I mean, how am I supposed to communicate with somebody who doesn’t have a Facebook account, or doesn’t keep up with Twitter?” Note that this wasn’t a casual conversation over a beer, but rather a key point in a presentation (presumably to a room full of people with the requisite qualifications to be able to laugh affably at such an observation).</p>
<p>Whether we like it or not, whether we can personally deal with our relationships migrating into the ether, that’s where they’re headed, at double-quick time. So are you the guy with a red flag making sure that cars only drive at the same speed as horses, or are you busy building a Formula 1 car in your back yard?</p>
<p>And actually, perhaps more importantly, whether you’re either of these, you&#8217;d better believe your staff are busy climbing onboard with everything the new paradigm has to offer, so do you really want to be left playing catch up?</p>
<p>At a recent customer meeting I was surprised to hear that this highly compartmentalized, classified installation was putting a social media strategy in place (they termed it “our space”) to embrace what was happening anyway, and obviously to attempt to contain it within the security mechanisms required by their business. If they can do it, with all the restrictions and fenced-off classified strictures they have to deal with, why can&#8217;t we all?</p>
<p><a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">Code review</a>, you say? <em>Social</em> code review, more like. The current means of accomplishing the goal is fundamentally broken and will never scale, just like the requirement to only befriend people you could physically reach out and touch. The paradigm is changing, time to keep up&#8230;</p>
<p>And now in a deferential nod to the awesome Douglas Adams, this trilogy of posts on code review as a social activity will be continued in <a title="Code Review Part IV – Joy is in the eye of the beholder" href="http://www.klocwork.com/blog/2010/04/the-joy-of-code-review-part-4/">part IV</a>, coming to a blog near you soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/03/the-joy-of-code-review-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Going Agile Part 5 &#8211; Going Retro</title>
		<link>http://www.klocwork.com/blog/2010/02/going-agile-part-5-going-retro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=going-agile-part-5-going-retro</link>
		<comments>http://www.klocwork.com/blog/2010/02/going-agile-part-5-going-retro/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 13:25:30 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[iteration]]></category>
		<category><![CDATA[product owner]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=827</guid>
		<description><![CDATA[The last entry in my Going Agile series will look at the retrospective meeting. The retrospective meeting is held at the end of every sprint/iteration, and it is the time to discuss what went well, and what could be improved in the next sprints. Some people will say the Product Owner should be in attendance, [...]]]></description>
			<content:encoded><![CDATA[<p>The last entry in my Going Agile <a href="http://www.klocwork.com/blog/2010/01/going-agile-part-4-iteration-1-the-good-the-bad-and-the-ugly/">series </a>will look at the retrospective meeting.</p>
<p>The retrospective meeting is held at the end of every sprint/iteration, and it is the time to discuss what went well, and what could be improved in the next sprints. Some people will say the Product Owner should be in attendance, and some <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms">believe </a>the PO should not. IMHO, the PO is a part of the team, and should be there&#8230;and in our case, I was. We weren’t sure how to solicit input from the team, so we decided that everyone should take a few minutes to write down their thoughts, and then the Scrum Master would read them out. This was a good way to eliminate the classic, “I was just going to say the same thing as Bob” response. After all the responses were collected, we realized we had 3 main things to address:</p>
<p>1)      Testing and documentation struggled&#8230;they were too heavily back-loaded</p>
<p>2)      <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">Code reviews</a> were determined to be essential but weren’t being factored into estimates, etc.</p>
<p>3)      Our team velocity was nowhere near what we thought it would be</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/02/chickenprocess_2.jpg"><img class="alignleft size-medium wp-image-830" title="chickenprocess_2" src="http://www.klocwork.com/blog/wp-content/uploads/2010/02/chickenprocess_2-298x300.jpg" alt="" width="298" height="300" /></a>From these things we made a few adjustments for our next sprint (again, these decisions were made by the team as a whole). Our developers stopped working on new stories 2 days before the end of the sprint, and would then focus on testing and documentation. This would help alleviate the avalanche of new functionality that would hit the testing and documentation team on Friday afternoons. Code reviews were added to the definition of ‘Done’ and were factored into to estimates.  For the 3<sup>rd</sup> issue,  we found one of the key issues to be that developers just weren’t given dedicated time to code, and as such, could be interrupted at any time for an impromptu meeting, or discussion, etc. We decided to implement a Do Not Disturb mode for the developers, and if they had that DND sign up in their cubicle, or on IM, then they were not to be disturbed.</p>
<p>The retrospective is a crucial part of the continuous improvement process, and time must be dedicated to it. The first few are extremely important since that is when the warts are most obvious, but minor tweeking  may never stop.</p>
<p>I’ve enjoyed sharing my experiences about my first Scrum team, and I hope it may provide some ideas for your team. If you have any Agile/Scrum experiences you would like to share, I’d love to hear about them. Chances are others will stumble across the same problems at some point as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/02/going-agile-part-5-going-retro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Joy of&#8230; Code Review (part 2)</title>
		<link>http://www.klocwork.com/blog/2010/01/the-joy-of-code-review-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-joy-of-code-review-part-2</link>
		<comments>http://www.klocwork.com/blog/2010/01/the-joy-of-code-review-part-2/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 16:58:20 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=708</guid>
		<description><![CDATA[Part II &#8211; Joy is the word… OK, so Grease is really the word, but it didn’t fit my theme, gimme a break… Anyway, back on topic, since Joy of code review &#8211; part one of this series was published last year we’ve seen our new code review product in action in a variety of [...]]]></description>
			<content:encoded><![CDATA[<p>Part II &#8211; Joy is the word…</p>
<p>OK, so Grease is really the word, but it didn’t fit my theme, gimme a break… Anyway, back on topic, since <a href="http://www.klocwork.com/blog/2009/11/the-joy-of-code-review/">Joy of code review &#8211; part one</a> of this series was published last year we’ve seen our new <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">code review</a> product in action in a variety of customer and prospect situations, and much like the eponymous hair product in the musical mentioned above, what we thought of as an interesting twist on an existing paradigm has turned into a bit of a barn burner. I refer, in this case, to the notion of what constitutes a code review if you remove the formalism of the invite from the process.</p>
<p>Consider what I’ll call, for the sake of being what marketers insist on terming “edgy” (for no really good reason as far as I can make out), <em>old fashioned</em> code reviews. You know the type, we talk about how we really should do more of them all the time. Check in your code, mail out a bunch of invites, mail some more when those get declined, gather around a table, project your code and wait for the insults to come rolling in.</p>
<div id="attachment_709" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/01/Review.jpg"><img class="size-medium wp-image-709 " title="Code Review, the old fashioned way" src="http://www.klocwork.com/blog/wp-content/uploads/2010/01/Review-300x224.jpg" alt="" width="300" height="224" /></a><p class="wp-caption-text">You want to try that again, Mr. Coding Specialist...?</p></div>
<p>On the down side of these things are all the obvious problems… People don’t like getting reviewed, and unless you have a particularly unpleasant architect, the reviewer is no happier about being in the room than the person on the sharp end. Factor in the time, the annoyance of the arrangements, the opportunity cost of yanking the architect away from whatever they were previously doing, and you’ve got a really expensive, not very productive, but very important from a pointy-haired-manager-perspective process.</p>
<p>It’s really the classical no-win situation. Your manager requires it to be done. You hate it, and you know everybody else in the room hates it too. It’s like a giant dose of spinach to a five year old – doesn’t matter how good it is for you, you’d rather scream and sit in the naughty chair all day than let that stuff past your lips.</p>
<p>So when we were thinking about changing the approach to code review, it seemed obvious to us that whilst code review itself is valuable, the means by which it gets accomplished is fundamentally broken. Factor in peoples’ unthinking delight when confronted with anything <a href="http://www.facebook.com" target="_blank"><em>social</em></a> and what the heck, we figured, let’s turn the whole thing on its head. Instead of going top-down into a software organization and helping the manager enforce something unpleasant in an all new and collaborative-y, enterprise-y way, how about reaching out and encouraging bottom-up engagement through a model that people are comfortable with anyway, namely formless (a.k.a. social) communities.</p>
<p>Who’s the most obvious person to review the code of a good developer, after all? It might be their architect, but the chances of a good developer making a blunder of the architectural type (or any kind of dumb error) is probably reasonably low. Not saying it doesn’t happen, but we pay people at that level a good amount of money on the understanding that they produce decent code, so why then treat them like kids? Instead, if the code produced by that guy is made available for <em>anybody</em> to review, quite literally, then rather than getting the architect grumpy because he’d rather be thinking about the next huge money maker than what this guy happened to have done mostly right but nit-pickingly-wrong in this one situation, you get other team members taking part who have (in most cases) more useful input to impart anyway.</p>
<p>Instead of feedback of the “so… rather than using that particular transitive constructor, I’ve found that explicitly instantiating a new object and then initializing only what I need saves me, on average, 3 cycles a day” type, you might get the “hey, I was hacking on that a while back… might want to filter that data, cuz Bob’s front end passes in all kinds of crap… just saying” type instead – your choice, but personally I’d rather hear an hour’s worth of the latter than a moment’s worth of the former…</p>
<p>So who is at the review turns out to be much more important than whether it’s held, given some arbitrary set of “holding” conditions. But of course this comes with its own set of challenges, notably how do you know when you’re done if there’s no formal “meeting” to review your code (and to insult you, have we mentioned that part?).</p>
<p>In fact, it’s much like how the transition from waterfall to Agile was accompanied by many a gnashing of management gums and misplaced wails of “but how will I know if it’s going to be done on time?” But hey, that didn’t work out so bad, did it? People got used to time boxing, to changing requirement sets, to not waiting until it was arbitrarily “finished” and instead shipping it so as to gather feedback faster.</p>
<p>In my next post I’ll look at this new world order from the top down and examine the benefits to encouraging (rather than imposing) a social code review paradigm, and how it can make those metrics we know you care about look better than ever before.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/01/the-joy-of-code-review-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Joy of &#8230; Code Review?</title>
		<link>http://www.klocwork.com/blog/2009/11/the-joy-of-code-review/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-joy-of-code-review</link>
		<comments>http://www.klocwork.com/blog/2009/11/the-joy-of-code-review/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 21:18:37 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=506</guid>
		<description><![CDATA[Part I – Ode to Joy Since the launch of the seminal “Joy” work which hopefully doesn’t need mention here, we’ve seen everything from The Joy of Cooking to The Joy of Not Working (my personal favorite!), and so further to that deeply mined vein of authoritative works we bring you the necessarily over burdened… [...]]]></description>
			<content:encoded><![CDATA[<p>Part I – Ode to Joy</p>
<p>Since the launch of the seminal “Joy” work which hopefully doesn’t need mention here, we’ve seen everything from The Joy of Cooking to The Joy of Not Working (my personal favorite!), and so further to that deeply mined vein of authoritative works we bring you the necessarily over burdened… Joy of <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">Code Review</a>!</p>
<p>Joy, you say? Let me count the ways…</p>
<ul>
<li>I implement a task, using what I consider to be best practice patterns and guidelines; I slave over this, my creation, and when it’s done, I stand back and admire, much in the tone of an old master, this latest image of my greatness.</li>
<li>Then I remember I need to get it reviewed…</li>
<li>So, I timidly invite my Architect and 3 of his best friends to the war room to review my new baby</li>
<li>After many rescheduling pauses, we finally gather…</li>
<li>I hold my breath, turn on the projector, and bare my soul to the collective seniors in attendance</li>
<li>30 minutes later, having endured a ritual mind flaying, and the predictable but nevertheless enjoyable tortured examination of my parentage, education, upbringing and such fun rhetorical musings as “why do they let people like you graduate?” I slink out</li>
<li>Follow up is, if anything, more painful as I’m reminded moment-by-moment of just how badly I’ve lived up to the expectations laid out for me by the senior team members</li>
</ul>
<p>Anyway, so code reviews suck, <em>amirite</em>? <a href="http://www.artima.com/lejava/articles/javaone_2007_matt_quail.html">But we all know we need to do them</a>. Of course, we all know we need to do them for completely different reasons from each other…</p>
<ul>
<li> Kids right out of grad school know they need to do code reviews because although their code is, like, totally perfect, it’ll be good to show the old dudes their skillz, and for the old dudes to check out some rad new stuff that they might have missed along the way.</li>
<li>Senior guys know they need to do code review because otherwise all kinds of terrible cruft will get promoted into the head branch and somebody (are you looking at me??) will have to fix it…</li>
<li>Managers know they need to do code reviews because they read all about them in a book with a cool cover, and it’s all <em>Agile</em> and stuff, and let’s face it they’re being measured on code review coverage, so come hell or high water you’re going to do code reviews!</li>
<li>And of course, regular professional developers know that code reviews, however painful, genuinely lead to better code, regardless of the pain involved in getting there.</li>
</ul>
<p style="text-align: center;"><a href="http://www.stellman-greene.com"><img class="aligncenter" title="Missteps in code review" src="http://www.klocwork.com/blog/wp-content/uploads/2009/11/sally-code-review.png" alt="" width="432" height="370" /></a></p>
<p>What we have here, folks, is a social organization, complete with the crazy uncle, the embarrassing grandma and the pimply teenagers. And social organizations, as we’ve all come to know and love, are at their best when the forum in which they’re fostered exists for a reason that encourages the unstated, but nevertheless in-your-face activity of which those in the respective societal groups are desperately in need:</p>
<ul>
<li>Facebook? Getting a date. And then getting another one while simultaneously trying desperately to avoid the previous partner. Rinse/repeat. Seriously, I have no idea how kids manage today. At least when I was young and awkward we could hide behind the silence and foot shuffling of real face-to-face meetings. Now with a keyboard and the internet in the way, there’s <em>nowhere to hide!!!! </em>I’m off topic again… ahem…</li>
<li>Linked-In? Getting a job.</li>
<li>Myspace? Getting a clue.</li>
</ul>
<p>You get the idea.</p>
<p>So code review as a social engagement… really? Parts 2 and 3 of this series of posts will examine how such interactions, fostered by social networking tools, are the best way to ensure code review gets done and returns value both to the participants and to the companies in which they work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/11/the-joy-of-code-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Going Agile Part 2: Preparing for Iteration 1</title>
		<link>http://www.klocwork.com/blog/2009/10/going-agile-part-2-preparing-for-iteration-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=going-agile-part-2-preparing-for-iteration-1</link>
		<comments>http://www.klocwork.com/blog/2009/10/going-agile-part-2-preparing-for-iteration-1/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 12:01:57 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=457</guid>
		<description><![CDATA[In part one of Going Agile,I talked about how we introduced Agile to our development team. This next post will look at the events that led to our first iteration planning meeting. During the weeks that led up to Iteration 1, there was much work that went on as a team, and much that each [...]]]></description>
			<content:encoded><![CDATA[<p>In <a title="Going Agile: Introduction" href="http://www.klocwork.com/blog/2009/09/going-agile-part-1-introducing-agile/">part one</a><img class="size-medium wp-image-460 alignright" title="Scrum Board" src="http://www.klocwork.com/blog/wp-content/uploads/2009/10/DSC01166-300x225.jpg" alt="Scrum Board" width="300" height="225" /> of Going Agile,I talked about how we introduced Agile to our development team. This next post will look at the events that led to our first iteration planning meeting.</p>
<p>During the weeks that led up to Iteration 1, there was much work that went on as a team, and much that each team member did individually. As the Product Owner, my biggest task was to create a <a href="http://www.mountaingoatsoftware.com/product-backlog">backlog</a>. Sure, I knew what the main new features were going to be, but I still needed to capture this, and add other oft-requested features. I scoured every correspondence I had with customers, sales, support, development, and so on to gather this information.</p>
<p>After everything was said and done, I had a pretty massive backlog&#8230; a pretty massive, unprioritized backlog. At this point, I really didn’t know any good techniques for backlog prioritization (that would change after attending the CPO training with <a href="http://www.mountaingoatsoftware.com/">Mountain Goat Software</a>). This training was not going to happen for a few months, but something needed to be done&#8230; so I did what any good Product Manager does&#8230;I used the ‘wet finger in the air’ technique. Now, my ‘estimations’ were based on a number of concrete data points and some not-so-concrete assumptions and anecdotal evidence, so they weren’t totally of the ‘wild-assed guess’ ilk. After a few more days I had my backlog read for the team.</p>
<p>While the backlog creation was going on, a number of team meetings were occurring. Two of the more important meetings involved creating rules for the team and preparing our definition of “Done” . I highly recommend spending some time up front on both of these activities.</p>
<p>Creating the team rules was a great exercise, because it was the first time the team sat down as a collective and decided what the rules would be. Many of the rules were not groundbreaking&#8230;things such as everyone’s opinion is equal, treat everyone with respect, don’t be late for meetings, and when and where <a href="http://www.controlchaos.com/old-site/meeting.htm">daily Scrums</a> were going to happen.</p>
<p>The best result from this meeting centered on the team’s communication methods. Everyone was already using email, so that was covered. Instant messaging was rolled out to the team, and everyone was to use it. Of course face-to-face discussions were encouraged the most, but there needed to be some way to let people know you didn’t want to be disturbed (unless something was urgent). Everyone created a Do Not Disturb sign, and when it was posted, it was to be respected. Sometimes people just need to focus on the task at hand, rather than constantly being disrupted. We came out of that meeting with a clear set of easy-to-understand team rules, and we posted these rules in our team conference room for all to see. Note&#8230; rules can and will change over time.</p>
<p>Next was coming up with our <a href="http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod">definition of Done</a>. The team sat down for a couple of hours to determine what should/should not be included. Looking back, we thought we were cavaliers and were blazing new trails with the definition we came up with&#8230;in reality, we put together a definition that was pretty much in line with the ‘industry norm’. One thing that we did not include initially was <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">code reviews</a>&#8230;that is, for a story to be considered done, the code had to be reviewed by at least one other developer (who was not associated with that piece of code). During our Iteration 1 retrospective, we modified our definition of Done, and code reviews became part of it. In fact, this definition of Done may go through many, ahem, iterations before becoming finalized.</p>
<p>Finally, we needed to get our ‘room’ set up and have all the necessary supplies on hand. Our team decided to use a wall board with color-coded cards for the tasks. Green cards were for development tasks, red cards were bugs, blue cards were for testing tasks, and yellow cards were for documentation tasks. Now we just needed a board to pin these tasks to. We didn’t want to spend a small fortune on a big pin-board, so we got creative and used carpet under padding. (You can get a huge piece of this at any DIY store for next to nothing and it works like a charm.) We fastened it to the wall, put on some masking tape borders and labels, and we had ourselves a Scrum board.</p>
<p>So with our prioritized backlog, team rules, definition of Done, and Scrum room all set, we were now armed and dangerous, and ready for our first iteration planning meeting&#8230;TO BE CONTINUED.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/10/going-agile-part-2-preparing-for-iteration-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>False positives in modern static analyzers</title>
		<link>http://www.klocwork.com/blog/2009/05/false-positives/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=false-positives</link>
		<comments>http://www.klocwork.com/blog/2009/05/false-positives/#comments</comments>
		<pubDate>Fri, 22 May 2009 15:03:32 +0000</pubDate>
		<dc:creator>Alen Zukich</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[code reviews]]></category>
		<category><![CDATA[false positives]]></category>
		<category><![CDATA[source code analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=175</guid>
		<description><![CDATA[In response to Jason’s post about false positives.  First of all there is a general misconception of false positives.  Modern static source code analysis tools have changed the game.  It is not the Lint tool of the past, a focus with deep inter-procedural technology has placed the requirement that static tools today produce more real [...]]]></description>
			<content:encoded><![CDATA[<p>In response to Jason’s post about <a href="http://blog.smartbear.com/the_smartbear_blog/2009/05/how-peer-code-review-fixes-the-falsepositive-problem-with-static-analysis-tools.html" target="_blank">false positives</a>.  First of all there is a general misconception of false positives.  Modern <a href="http://www.klocwork.com/products/insight/klocwork-truepath/">static source code analysis tools</a> have changed the game.  It is not the Lint tool of the past, a focus with deep inter-procedural technology has placed the requirement that static tools today produce more real issues than false reports.</p>
<p>With that said, Jason is right, large code bases never running static analysis will produce a large number of issues no matter how accurate it is.  Even though static analysis tools do provide a number of ways to manage this (and Jason talks about one) it does make sense to put this in your code reviews. You are looking at legacy code but if you are doing code reviews then you must have changed something with that legacy code.  Therefore having those bugs visible to you during the code review could suddenly now apply.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/05/false-positives/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Static analysis and code reviews</title>
		<link>http://www.klocwork.com/blog/2009/05/static-analysis-and-code-reviews/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=static-analysis-and-code-reviews</link>
		<comments>http://www.klocwork.com/blog/2009/05/static-analysis-and-code-reviews/#comments</comments>
		<pubDate>Tue, 19 May 2009 19:45:20 +0000</pubDate>
		<dc:creator>Alen Zukich</dc:creator>
				<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[impact analysis]]></category>
		<category><![CDATA[null pointer dereference]]></category>
		<category><![CDATA[source code analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=173</guid>
		<description><![CDATA[Jason certainly hits the nail on the head.&#160; Automation, specifically using static analysis, is key and it should be tightly integrated with your code review. Although we need to be careful where we label source code analysis.&#160; Static source code analysis certainly can find those low level issues such as labeling your local variables correctly, [...]]]></description>
			<content:encoded><![CDATA[<p>Jason certainly hits the nail on the <a target="_blank" href="http://blog.smartbear.com/the_smartbear_blog/2009/05/can-static-code-analysis-replace-peer-code-review.html">head</a>.&nbsp; Automation, specifically using <a href="http://www.klocwork.com/products/insight/klocwork-truepath/">static analysis</a>, is key and it should be tightly integrated with your <a href="http://www.klocwork.com/products/insight-pro/inspect-code-review/">code review</a>. Although we need to be careful where we label source code analysis.&nbsp; Static source code analysis certainly can find those low level issues such as labeling your local variables correctly, but it goes beyond simple code style issues.</p>
<p>Where static source code analysis can really help is with the deep inter-procedural context that it can provide.&nbsp; For example, during a code review you go through some code with a number of function calls.&nbsp; Hopefully you know what each and every function is doing&#8230;but do you really?&nbsp; This is where the deep analysis of static source code tools can help.&nbsp; It can help you identify that there may be an issue in the code review and that issue happens to show that a function is returning NULL.&nbsp; Uh oh, potential null pointer dereference on our hands.</p>
<p>Now add code reviews with other static source code technology, such as full source cross reference information, flowcharting, impact analysis for any function/methods and architectural representation to show you the full context of the system.&nbsp; Now you’re talking powerful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/05/static-analysis-and-code-reviews/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

