<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Making the Complex Simple &#187; Paired Programming</title>
	<atom:link href="http://simpleprogrammer.com/category/paired-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://simpleprogrammer.com</link>
	<description>Software Development from John Sonmez&#039;s Perspective</description>
	<lastBuildDate>Tue, 07 Feb 2012 17:47:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='simpleprogrammer.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Making the Complex Simple &#187; Paired Programming</title>
		<link>http://simpleprogrammer.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://simpleprogrammer.com/osd.xml" title="Making the Complex Simple" />
	<atom:link rel='hub' href='http://simpleprogrammer.com/?pushpress=hub'/>
		<item>
		<title>Don&#8217;t Snub the Code Review</title>
		<link>http://simpleprogrammer.com/2010/06/09/dont-snub-the-code-review/</link>
		<comments>http://simpleprogrammer.com/2010/06/09/dont-snub-the-code-review/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 15:37:54 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Paired Programming]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Self Improvement]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/?p=921</guid>
		<description><![CDATA[The topic of code reviews has always caused much debate in many software shops where I have worked. I am often asked what my opinion of doing code reviews is.  My answer might surprise you. I don’t like them.  I prefer not to do them. What? Let me be more specific.  I don’t like code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=921&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The topic of code reviews has always caused much debate in many software shops where I have worked.</p>
<p>I am often asked what my opinion of doing code reviews is.  My answer might surprise you.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/06/wtfs_per_minute.jpg"><img style="display:inline;border:0;" title="wtfs_per_minute" src="http://complextosimple.files.wordpress.com/2010/06/wtfs_per_minute_thumb.jpg?w=484&#038;h=438" border="0" alt="wtfs_per_minute" width="484" height="438" /></a></p>
<p>I don’t like them.  I prefer not to do them.</p>
<p>What?</p>
<p>Let me be more specific.  I don’t like code reviews that happen after the work is already done.</p>
<p>I do like code reviews that happen continuously as the work is being done.  This is called <a href="http://simpleprogrammer.com/2009/12/11/pair-programming-why/">paired programming</a>.  (This <a href="http://prezi.com/7syjl9hdcxga/pair-programming/">prezi presentation</a> might also be helpful.)</p>
<h2>Paired programming = continuous code review?</h2>
<p>Yes.  That is exactly what I am saying.</p>
<p>Think about it for a second.  Can you really have a better, more honest and more interactive code review than paired programming provides?  If two developers are working jointly on a portion of code, it is being reviewed as it is being written.</p>
<p>I’m going to divert a bit to talk about some of the common problems that happen in code reviews, then I’m going to talk about how paired programming solves them.</p>
<h2>Code review problems</h2>
<p><strong>#1.  Not telling the truth</strong></p>
<p>There really is no value in a code review where no one says what they really think is wrong with the code, and instead picks out some little non-offensive thing like a naming convention that wasn’t followed.</p>
<p>All too often, code reviews are dominated by a fear of insulting the person’s code that is being reviewed.  This kind of weak code review provides no benefit.  I would go so far as to say it is reinforcing the practice of writing bad code, because bad code is rubber stamped.</p>
<p><strong>#2.  Ego</strong></p>
<p>To have a successful code review everyone has to check their ego at the door.  This rarely happens.  Code is something that has been creatively designed, not too many people can take a critique of their labor, even fewer of their art.</p>
<p>Without a spirit of humility and openness, code reviews don’t provide any value.  It is one thing to point out a problem, it is another thing to do something about it.</p>
<p><strong>#3.  Wrong focus</strong></p>
<p>One of the most common errors of code reviews is paying attention to formatting, coding style, or naming conventions.  Those topics don’t belong in a code review at all.</p>
<p>Tools can automatically format the code and statically analyze problems with coding style or naming conventions.  <strong>It is a complete and total waste of time to have a human reviewer review any of those things.</strong></p>
<p>Seriously, if someone comes into a code review and they haven’t run the auto code formatter on their code, and they haven’t run the static analysis tools and fixed the problems found there, don’t be rude, just tell them nicely that their code is not ready for review.</p>
<p><em>Side note here: There is often debate on whether we should enforce code formatting,or enforce coding style, or enforce naming conventions.  YES! YES! YES!  Consistency is hugely important!  Code is read more than written, and consistent code is easier to read.  Have this discussion once, put together the automated tools to automatically format the code and automatically check the requirements. </em></p>
<p><em>Don’t spend months making up your special coding standards document.  Use some rule sets from any number of static analysis tools and start enforcing them.  Make them part of your build, make check-ins fail for formatting problems, make your IDE auto-format on save.  Deciding the perfect placement of curly brackets and whitespace is not nearly as important as being consistent.  Just pick something and enforce it.</em></p>
<p>Code reviews should focus on design, structure, and understandability of the code.  <strong>Code reviews should never ever ever ever ever ever ever focus on anything that can be automatically checked or enforced… ever!</strong></p>
<p><strong>#4.  Rush &amp; Inconsistency</strong></p>
<p>Teams rarely have or make time for code reviews.  If they do, it is inconsistent and not applied to all code, which causes the value to be lost.  If you have a huge fence around a perimeter, yet a large hole where people can just crawl in, the fence is worthless.</p>
<p>There is no point doing a code review where the code is not reviewed in depth.  Just scanning over the code and picking on a few variable names here and there does no good.  If you&#8217;re not prepared to fully immerse yourself into the code being reviewed, and dive deep down into understanding exactly what it is doing, don’t bother.</p>
<h2>Paired programming to the rescue</h2>
<p>Paired programming is like just-in-time code reviews.  It solves many of these issues by having a common goal and creating a joint ownership in the code.</p>
<p>As you pair up with different members of your team, you are likely to be more honest, be less egotistical, focus on the problem not the conventions, and delve deeply into the code.</p>
<p>It is no secret that my preferred <em>modus operandi </em>is no code review, instead paired programming, with everyone monitoring commits to source control, and can flag something and have a discussion if they see something troubling.</p>
<h2>What if paired programming is not an option?</h2>
<p>Well, try to make it one.  Paired programming is a great investment.</p>
<p><strong>But, if you are not doing paired programming, you absolutely should be doing code reviews. </strong>I might have extolled some of the problem with code reviews, and I advocate paired programming, but let’s not mince words here.</p>
<p><strong>Pair programming is a better way of doing continuous or just-in-time code reviews.  Not doing any form of code reviews is just plain stupid.</strong></p>
<p>If you had a construction team building your house, or your 20 million dollar sky scraper, and they told you that they were not doing engineering reviews of the work that was done, you would probably fire that construction company on the spot.  Building software is several levels of complexity higher than that of most physical construction projects.  <strong>If you call yourself an engineer and you are not subjecting your work to regular review, you are just an amateur playing “engineer”.</strong></p>
<p>So, if you must do the old-fashioned code review, here are some tips I found useful:</p>
<ul>
<li>Encourage people to be honest by doing some exercises where everyone reviews some code that wasn’t written by anyone on your team.  Encourage people to be as prejudice as possible when reviewing the code.</li>
<li>Set your expectations.  Code reviews are not an approval process, they are an improvement process.  Make sure the team is aware of this.  Code reviews are a place you take your code to make it better, and to better your skills.  Foster that kind of thinking.</li>
<li>Automate all of the nit-picky stuff and set coding standards, formatting standards, and style standards.  Decide what they will be together, or have your experienced people do it, but get it done, make conformance non-optional and make it automated.</li>
<li>Develop consistent standards and practice about doing code reviews.  Set aside enough time to delve deeply into the code.  Set and enforce standards of when and how code is reviewed.</li>
<li>Lead by example.  Proactively ask members of your team to look at your code and tell you how to improve it.  Ask if this can be done a better way.  Show a genuine interest in feedback and improvement, this attitude will catch on.</li>
</ul>
<p><strong>As always, you can subscribe to this </strong><a href="http://feeds.feedburner.com/MakingTheComplexSimple"><strong>RSS feed</strong></a><strong> to follow my posts on Making the Complex Simple.  Feel free to check out </strong><a href="http://elegantcode.com/"><strong>ElegantCode.com</strong></a><strong> where I post about the topic of writing elegant code about once a week.  Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/921/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/921/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/921/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=921&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/06/09/dont-snub-the-code-review/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/06/wtfs_per_minute_thumb.jpg" medium="image">
			<media:title type="html">wtfs_per_minute</media:title>
		</media:content>
	</item>
		<item>
		<title>The Kanbanand Guide</title>
		<link>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/</link>
		<comments>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 16:21:24 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Kanbanand]]></category>
		<category><![CDATA[Paired Programming]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=783</guid>
		<description><![CDATA[In my last post, I talked about some of the problems of Agile processes and suggested the introduction of a new process which takes some of the best parts of each of the popular processes and condenses them into the Kanban lean- style-thinking of limiting the work in progress. For this post I want to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=783&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://simpleprogrammer.com/2010/04/26/kanbanand-the-new-agile-process-you-have-already-been-following/">last post</a>, I talked about some of the problems of Agile processes and suggested the introduction of a new process which takes some of the best parts of each of the popular processes and condenses them into the Kanban lean- style-thinking of limiting the work in progress.</p>
<p>For this post I want to clearly define what I am calling &#8220;Kanbanand&#8221; with two primary goals in mind.</p>
<ol>
<li>Allow someone who is interested in doing a Kanban like process to find enough information to be successful.</li>
<li>Create a common thread for people who are already basically doing what I am suggesting.</li>
</ol>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg"><img class="alignnone size-full wp-image-786" title="AJH-redtail taking off" src="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg?w=500&#038;h=493" alt="" width="500" height="493" /></a></p>
<h2>Three Pronged Fork</h2>
<p>I want to present Kanbanand as a three pronged fork.  In my mind there are 3 distinct areas of a successful Agile process which must be addressed.</p>
<ul>
<li>Business and overall encompassing project process.</li>
<li>Development practices, including standards and best practices.</li>
<li>Infrastructure: build systems, deployment, source control.</li>
</ul>
<p>We must know how to run our day to day process, how we physically construct our product, and how we actually build and deliver the product.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/fork.jpg"><img class="alignnone size-full wp-image-788" title="fork" src="http://complextosimple.files.wordpress.com/2010/04/fork.jpg?w=500" alt=""   /></a></p>
<h2>Process</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>Project is broken into stories which are small vertical slices through the system which are prioritized.</li>
<li>A Kanban board is used to make the progress of a team visible and has limits to control the Work In Progress (WIP).</li>
<li>At least once a day team members meet around the Kanban board in a stand up meeting to talk about the progress of the board.</li>
<li>The team meets on a regular basis to have a retrospective to discuss how to better improve their process.</li>
<li>Teams always pull in work, work is never &#8220;pushed&#8221; in.</li>
<li>Once work has been approved as &#8220;done&#8221; it can never be &#8220;not done&#8221;.</li>
<li>Find something to measure and measure it.</li>
<li>The team is responsible for, and empowered to determine how the team accomplishes its goals.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li>Roughly same sized stories over irregular sized stories.</li>
<li>Stories specifying what, over stories specifying how.</li>
<li>Stories that are one sentence over stories that are one page.</li>
<li>Talking about how to move the board forward over talking about what I did or someone else did.</li>
<li>Cross functional teams over specialized teams.</li>
</ul>
<h2>Development</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>All code is unit tested.</li>
<li>Static code analysis tools are used to set code standards, all code must meet those standards.</li>
<li>Any code that is done, is completely done.  It is refactored, it is unit tested, it meets the quality standards.</li>
<li>Code is never commented out.  Anyone is allowed to delete any commented out code at any time.</li>
<li>Determining code is meeting the quality standards must be done in an automated way.</li>
<li>No one owns code, anyone can work on any code.</li>
<li>Documentation is ONLY created when it will serve a known purpose and has an immediate value.  (Code should document itself with good names and simple flow, unit tests document the low level requirements of the system.  Automated tests document the behavior of the system.)</li>
<li>Testing requirements come from the customer, not from the developer.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li>Test driven development over writing unit tests after the code is done.</li>
<li>Pair programming over working alone.</li>
<li>Readable code over smaller sized code.</li>
<li>Doing things right over doing things fast.</li>
<li>Showing the customer over asking the customer.</li>
<li>Impromptu discussions at white-boards over scheduled meetings.</li>
<li>Building tools that will help make completing ten things faster, than completing one thing faster.</li>
<li>Writing automated tests over manual testing</li>
</ul>
<h2>Infrastructure</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>Code is continuously built and integrated as soon as it is checked in.</li>
<li>Builds build code, run unit tests, run quality checks, produce deployable bits.</li>
<li>Builds fail if any unit test fails, or any quality check fails.</li>
<li>Code is only deployed from the exact bits that were produced by the build machine.</li>
<li>Code can be deployed to any environment with the push of a button.</li>
<li>Production data never goes to any other environment.</li>
<li>Developers can always run a local build which is the same as what will be built on the build server.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li><strong>﻿</strong>Moving forward to fix problems over rolling back.</li>
<li>Integrating soon over merging later.</li>
<li>Quick builds over slow builds.</li>
<li>Deploying on demand over deploying on a schedule.</li>
</ul>
<h2>Feedback?</h2>
<p>That is my first crack at it.  I have tried to keep the process as simple as possible, but still include as rules the things that I think are most important to be successful.  I tried to keep the things that involved judgment calls as values.  I believe this provides enough information to allow an organization to create a custom process that will work for them, but will still have enough controls to be consistent in the things that I feel make Agile practices valuable.</p>
<p>Let me know what you think, or if you have any suggestions.  I will update this post as this list evolves.  I am sure there is something I missed or could state in a better way.</p>
<p>Like I said before, if you are doing some form of Kanban, you probably are already doing Kanbanand.  If you are doing Scrum, your major change would be to drop the planning and instead try to get same sized stories while limiting your WIP.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/783/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=783&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg" medium="image">
			<media:title type="html">AJH-redtail taking off</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/fork.jpg" medium="image">
			<media:title type="html">fork</media:title>
		</media:content>
	</item>
		<item>
		<title>Boise Code Camp 2010 Presentations</title>
		<link>http://simpleprogrammer.com/2010/03/29/boise-code-camp-2010-presentations/</link>
		<comments>http://simpleprogrammer.com/2010/03/29/boise-code-camp-2010-presentations/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 17:24:08 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Paired Programming]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Watij]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=568</guid>
		<description><![CDATA[Went to Boise Code Camp this weekend and it was great! There were some really good sessions and good discussions on Agile, Scrum and domain specific languages. I think events like these are important because they help us to zoom out a little and see what kinds of things other people are doing in our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=568&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Went to <a href="http://boisecodecamp.com/">Boise Code Camp</a> this weekend and it was great!</p>
<p>There were some really good sessions and good discussions on Agile, Scrum and domain specific languages.</p>
<p>I think events like these are important because they help us to zoom out a little and see what kinds of things other people are doing in our field and what companies around us are interested in high quality software.</p>
<p>Code camps are also a great place to get some experience doing presentations and share what you are working on.  Networking opportunities abound.</p>
<p>I presented two talks this weekend.  I am posting the links to those here.</p>
<p><strong>The first presentation I did was on Pair Programming.</strong></p>
<p>You can find the presentation on Prezi <a href="http://prezi.com/7syjl9hdcxga/">here</a>.</p>
<p>We also did a live pair programming session, which I thought went pretty well.  We ran into some of the issues that often come up with pair programming, like being afraid to tell someone you don&#8217;t like their method name.</p>
<p><strong>The second presentation I did was on Creating an Internal DSL for Automated Functional Testing.</strong></p>
<p>You can find the presentation on Slideshare <a href="http://www.slideshare.net/jsonmez/internal-ds-ls-for-automated-functional-testing">here</a>.</p>
<p>We went over how to go about creating a good automation framework which fills in the gaps between the business language and technical language.</p>
<p>Thanks to everyone who attended.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/568/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/568/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/568/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=568&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/03/29/boise-code-camp-2010-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>
	</item>
		<item>
		<title>Pair Programming? Why?</title>
		<link>http://simpleprogrammer.com/2009/12/11/pair-programming-why/</link>
		<comments>http://simpleprogrammer.com/2009/12/11/pair-programming-why/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 22:31:17 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Paired Programming]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Self Improvement]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=76</guid>
		<description><![CDATA[What is paired programming? The best example is one I&#8217;ll steal from Uncle Bob.  If you haven&#8217;t read this little dialog before, take a moment to do it now.   Paired programming is essentially two developers sharing one keyboard and mouse.  Both developers work together to write the unit tests and code to make them [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=76&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>What is paired programming?</strong></p>
<p>The best <a href="http://www.objectmentor.com/resources/articles/xpepisode.htm">example</a> is one I&#8217;ll steal from Uncle Bob.  If you haven&#8217;t read this little dialog before, take a moment to do it now.   Paired programming is essentially two developers sharing one keyboard and mouse.  Both developers work together to write the unit tests and code to make them pass.  Often you will switch who has control of the keyboard and mouse.  I intricately tie together this practice with Test Driven Development (TDD), because a large amount of the benefit is in the ability for one developer to say, &#8220;Hey let me see the keyboard&#8221;, and write a unit test which will make the code fail.</p>
<p><strong>Why paired programming?</strong></p>
<p>There are many benefits some obvious and direct others as a side effect.  When you have two developers looking at the same code, you have two sets of eyes looking at the code as it is being written.  You have a much bigger coverage area of the problem domain, and are less likely to write bugs or miss something.  At the same time you are also having a live code review in the context of the code.  Also you are getting two developers familiar with the same piece of code, rather than &#8220;the dude who wrote all the DAO code.&#8221;  These benefits alone make paired programming worth it, but there are a few more.  Often one developer would get stuck on a difficult problem where two can easily push through.</p>
<p>Some of the indirect benefits are that when someone works alone they are less likely to be working.  Honestly, in an 8 hour programming day you might get 4 hours of work.  Now a good amount of this is due to distractions, like email, instant messages, random questions, not just slacking off (although some of it is.)  When you have two developers sitting at the same computer, it takes a larger amount of force to cause a distraction.  If someone is sitting at my desk, I am less likely to look at my email or be drawn away from the work I am working on.  You are more likely to get 6 hours or more out of two developers at the same computer with paired programming.</p>
<p>On the job training and cross training is another large benefit.  When you pair up a weak developer with a strong developer you will get the weak developer picking up the good practices of the strong developer.  Pair up two strong developers, they teach each other the little tricks that make them so effective and they both become more effective.  Pair up two weak developers, and you&#8230; get a mess for someone to clean up&#8230; Don&#8217;t do that!  Have a tester who should learn some development, pair them up with a developer or vice versa.  Even a product owner or business person can benefit from paired programming to better understand how the application is being developed.</p>
<p><strong>Does it really work?</strong></p>
<p>In my opinion yes.  I have personally seen the benefits over years of doing development work, practicing paired programming whenever possible.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=76&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2009/12/11/pair-programming-why/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>
	</item>
	</channel>
</rss>
