<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Know Your Next Commit - Revision history</title>
		<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.11.0</generator>
		<lastBuildDate>Wed, 19 Jun 2013 00:12:23 GMT</lastBuildDate>
		<item>
			<title>Danbj at 08:50, 19 July 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=24949&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:50, 19 July 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were engrossed in the details of their work while only the third could see the bigger picture, and that the latter had the better focus. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services in some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were engrossed in the details of their work while only the third could see the bigger picture, and that the latter had the better focus. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services in some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new feature or refactoring to work on. All the code written was done &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;so &lt;/del&gt;with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new feature or refactoring to work on. All the code written was &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;thus &lt;/ins&gt;done with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 19 Jul 2009 08:50:50 GMT</pubDate>			<dc:creator>Danbj</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Kevlin at 15:45, 7 July 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=24675&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:45, 7 July 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/ins&gt;&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/ins&gt;&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were engrossed in the details of their work while only the third could see the bigger picture, and that the latter had the better focus. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services in some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were engrossed in the details of their work while only the third could see the bigger picture, and that the latter had the better focus. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services in some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new feature &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to add &lt;/del&gt;or refactoring to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;make&lt;/del&gt;. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;In that way all &lt;/del&gt;the code &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they wrote &lt;/del&gt;was &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;written &lt;/del&gt;with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new feature or refactoring to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;work on&lt;/ins&gt;. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;All &lt;/ins&gt;the code &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;written &lt;/ins&gt;was &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;done so &lt;/ins&gt;with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the first two programmers do if their tasks took more than two hours? After &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;realising &lt;/del&gt;they had taken on too much, they would most likely throw away their changes, define smaller tasks, and start over. To keep working would have lacked focus and led to speculative code entering the repository. Instead, changes would be thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the first two programmers do if their tasks took more than two hours? After &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;realizing &lt;/ins&gt;they had taken on too much, they would most likely throw away their changes, define smaller tasks, and start over. To keep working would have lacked focus and led to speculative code entering the repository. Instead, changes would be thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes into something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that causes &lt;/del&gt;strange code &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;changes without &lt;/del&gt;a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes into something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;not throwing the code away leads to slightly &lt;/ins&gt;strange code&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, lacking &lt;/ins&gt;a clear purpose&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;of time &lt;/del&gt;even the commit-hard-ass programmers &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;could not &lt;/del&gt;find something they thought could be finished in two hours &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and would lead in a productive direction&lt;/del&gt;. Then, they would go directly into speculative mode, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;play &lt;/del&gt;around with the code, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;of course &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;throw &lt;/del&gt;away the changes whenever some insight &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;had lead &lt;/del&gt;them back on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point even the commit-hard-ass programmers &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;might fail to &lt;/ins&gt;find something &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;useful &lt;/ins&gt;they thought could be finished in two hours. Then, they would go directly into speculative mode, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;playing &lt;/ins&gt;around with the code &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and&lt;/ins&gt;, of course&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, throwing &lt;/ins&gt;away the changes whenever some insight &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;led &lt;/ins&gt;them back on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. Do not commit guesswork into your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;then &lt;/ins&gt;define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. Do not commit guesswork into your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Jul 2009 15:45:56 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Danbj at 22:49, 31 January 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=23221&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:49, 31 January 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to decompose the problem and was working on all aspects at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written at the start of this long session was poorly matched for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the first two programmers do if their tasks took more than two hours? After realising they had taken on too much, they would most likely throw away their changes, define smaller tasks, and start over. To keep working would have lacked focus and led to speculative code entering the repository. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The &lt;/del&gt;changes would be thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the first two programmers do if their tasks took more than two hours? After realising they had taken on too much, they would most likely throw away their changes, define smaller tasks, and start over. To keep working would have lacked focus and led to speculative code entering the repository. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Instead, &lt;/ins&gt;changes would be thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes into something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes into something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 31 Jan 2009 22:49:56 GMT</pubDate>			<dc:creator>Danbj</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Kevlin at 18:53, 31 January 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=23217&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 18:53, 31 January 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;focused on &lt;/del&gt;the details of their work while the third &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;focused on &lt;/del&gt;the bigger picture, and that the latter &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;should be &lt;/del&gt;better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;engrossed in &lt;/ins&gt;the details of their work while &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;only &lt;/ins&gt;the third &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;could see &lt;/ins&gt;the bigger picture, and that the latter &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;had the &lt;/ins&gt;better &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;focus&lt;/ins&gt;. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/ins&gt;some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;change &lt;/del&gt;or refactoring. In that way all the code they wrote was written with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could be finished within a couple of hours. Once they had finished those tasks, they would select a new &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;feature to add &lt;/ins&gt;or refactoring &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to make&lt;/ins&gt;. In that way all the code they wrote was written with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;break down &lt;/del&gt;the problem and was working on all at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;the start of this long session was poorly &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;directed &lt;/del&gt;for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;decompose &lt;/ins&gt;the problem and was working on all &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;aspects &lt;/ins&gt;at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;at &lt;/ins&gt;the start of this long session was poorly &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;matched &lt;/ins&gt;for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;took more than two hours? &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;They would simply realise that &lt;/del&gt;they had taken on too much, throw away their changes, define &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/del&gt;smaller &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;task&lt;/del&gt;, and start over. To keep working would have &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;been speculative, &lt;/del&gt;and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;you do not want &lt;/del&gt;speculative code &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in your &lt;/del&gt;repository. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;So, the &lt;/del&gt;changes &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;first &lt;/ins&gt;two programmers do if &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;their tasks &lt;/ins&gt;took more than two hours? &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;After realising &lt;/ins&gt;they had taken on too much, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they would most likely &lt;/ins&gt;throw away their changes, define smaller &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;tasks&lt;/ins&gt;, and start over. To keep working would have &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;lacked focus &lt;/ins&gt;and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;led to &lt;/ins&gt;speculative code &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;entering the &lt;/ins&gt;repository. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The &lt;/ins&gt;changes &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;would be &lt;/ins&gt;thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/del&gt;something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;into &lt;/ins&gt;something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;play around with the code, and of course throw away the changes whenever some insight had lead them back on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode, play around with the code, and of course throw away the changes whenever some insight had lead them back on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;And never let speculative code enter &lt;/del&gt;your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Do not commit guesswork into &lt;/ins&gt;your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 31 Jan 2009 18:53:09 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Danbj: condensing</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=23020&amp;oldid=prev</link>
			<description>&lt;p&gt;condensing&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:22, 22 January 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/del&gt;&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;,&lt;/del&gt;&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped three programmers on their shoulders and asked what they where doing. &amp;quot;I am refactoring these methods&amp;quot; the first answered. &amp;quot;I am adding some parameters to this web action&amp;quot; the second answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were focused on the details of their work &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and that &lt;/del&gt;the third focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;have to &lt;/del&gt;change those services some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that the first two were focused on the details of their work &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;while &lt;/ins&gt;the third focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might change those services some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;programmers &lt;/del&gt;did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that they thought &lt;/del&gt;could &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;finish &lt;/del&gt;within a couple of hours. Once they had finished those tasks, they would select a new change or refactoring. In that way all the code they wrote was written with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two did not lack a vision of the overall goal. They had selected tasks they thought led in a productive direction, and could &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;be finished &lt;/ins&gt;within a couple of hours. Once they had finished those tasks, they would select a new change or refactoring. In that way all the code they wrote was written with a clear purpose and a limited, achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to break down the problem and was working on all at once. He had no idea of what it would take, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and was &lt;/del&gt;basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written in the start of this long session was poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to break down the problem and was working on all at once. He had no idea of what it would take, basically doing speculative programming, hoping to arrive at some point where he would be able to commit. Most probably the code written in the start of this long session was poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if it took more than two hours? They would simply realise that they had taken on too much, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if it took more than two hours? They would simply realise that they had taken on too much, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes to something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer might keep on guessing and desperately try to patch together his changes to something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode,  play around with the code, and of course &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;throwing &lt;/del&gt;away the changes whenever &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they had gained &lt;/del&gt;some insight &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;leading &lt;/del&gt;them on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode,  play around with the code, and of course &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;throw &lt;/ins&gt;away the changes whenever some insight &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;had lead &lt;/ins&gt;them &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;back &lt;/ins&gt;on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 22 Jan 2009 15:22:54 GMT</pubDate>			<dc:creator>Danbj</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Danbj: condensing</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=23019&amp;oldid=prev</link>
			<description>&lt;p&gt;condensing&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:33, 21 January 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a programmer &lt;/del&gt;on &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;her shoulder &lt;/del&gt;and asked what &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;she was &lt;/del&gt;doing. &amp;quot;I am refactoring these methods,&amp;quot; &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;she &lt;/del&gt;answered&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. I tapped a second programmer on his shoulder and asked what he was doing&lt;/del&gt;. &amp;quot;I am adding some parameters to this web action,&amp;quot; &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;he &lt;/del&gt;answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;three programmers &lt;/ins&gt;on &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;their shoulders &lt;/ins&gt;and asked what &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they where &lt;/ins&gt;doing. &amp;quot;I am refactoring these methods,&amp;quot; &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the first &lt;/ins&gt;answered. &amp;quot;I am adding some parameters to this web action,&amp;quot; &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the second &lt;/ins&gt;answered. The third answered, &amp;quot;I am working on this user story.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;numbers one and &lt;/del&gt;two were focused on the details of their work and that the third &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was &lt;/del&gt;focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might have to change those services some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the first &lt;/ins&gt;two were focused on the details of their work and that the third focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and would be finished within an hour or so. The third programmer answered, &amp;quot;Oh, I guess I will be ready within a few days. I will probably add a few classes and might have to change those services some way.&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two programmers did not lack &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;consideration &lt;/del&gt;of the overall goal &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;of what they where doing&lt;/del&gt;. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;But they &lt;/del&gt;had selected tasks &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/del&gt;they &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;could get to grips with, that &lt;/del&gt;led in a productive direction, and that they thought could &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;be finished &lt;/del&gt;within a couple of hours. Once they had finished those tasks, they would select a new change or refactoring. In that way all the code they wrote was written with a clear purpose and a limited &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two programmers did not lack &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a vision &lt;/ins&gt;of the overall goal. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;They &lt;/ins&gt;had selected tasks they &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;thought &lt;/ins&gt;led in a productive direction, and that they thought could &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;finish &lt;/ins&gt;within a couple of hours. Once they had finished those tasks, they would select a new change or refactoring. In that way all the code they wrote was written with a clear purpose and a limited&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;simply &lt;/del&gt;not been able to break down the problem and was working on all &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;of it &lt;/del&gt;at &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;one go&lt;/del&gt;. He had no idea of what it would take, and was basically doing speculative programming, hoping &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that he would &lt;/del&gt;arrive at some point where he would be able to commit. Most probably the code written in the start of this long session was poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had not been able to break down the problem and was working on all at &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;once&lt;/ins&gt;. He had no idea of what it would take, and was basically doing speculative programming, hoping &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/ins&gt;arrive at some point where he would be able to commit. Most probably the code written in the start of this long session was poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the task they had selected came out to take &lt;/del&gt;more than two hours? They would simply realise that they had taken too &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;big a bite&lt;/del&gt;, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it took &lt;/ins&gt;more than two hours? They would simply realise that they had taken &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;on &lt;/ins&gt;too &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;much&lt;/ins&gt;, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;On the other hand, the &lt;/del&gt;third programmer &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;would probably just &lt;/del&gt;keep guessing &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;with less and less clue &lt;/del&gt;and desperately try to patch together his changes to something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a lot of &lt;/del&gt;strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The &lt;/ins&gt;third programmer &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;might &lt;/ins&gt;keep &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;on &lt;/ins&gt;guessing and desperately try to patch together his changes to something that could be committed. After all, you cannot throw away code changes you have done &amp;amp;mdash; that would be wasted work, wouldn't it? Unfortunately, that causes strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;play around with the code&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: trying some wild refactoring just to see how the code would move&lt;/del&gt;, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;or patching on some functionality to see if it would fit in the structure &amp;amp;mdash; &lt;/del&gt;and of course throwing away the changes whenever they had gained some insight leading them on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;,  &lt;/ins&gt;play around with the code, and of course throwing away the changes whenever they had gained some insight leading them on track. Even these seemingly unstructured hacking sessions have purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;and &lt;/del&gt;define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;define a new task you believe in with the insights you have gained. Do speculative experimentation whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 21 Jan 2009 19:33:28 GMT</pubDate>			<dc:creator>Danbj</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Kevlin at 15:59, 24 November 2008</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=21704&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:59, 24 November 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped a programmer on her shoulder and asked what she was doing. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;“I &lt;/del&gt;am refactoring these &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;methods”&lt;/del&gt;, she answered. I tapped a second programmer on his shoulder and asked what he was doing&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, “I &lt;/del&gt;am adding some parameters to this web &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;action”&lt;/del&gt;, he answered. The third answered&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. “I &lt;/del&gt;am working on this user &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;story”&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped a programmer on her shoulder and asked what she was doing. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;I &lt;/ins&gt;am refactoring these &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;methods&lt;/ins&gt;,&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot; &lt;/ins&gt;she answered. I tapped a second programmer on his shoulder and asked what he was doing&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. &amp;quot;I &lt;/ins&gt;am adding some parameters to this web &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;action&lt;/ins&gt;,&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot; &lt;/ins&gt;he answered. The third answered&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &amp;quot;I &lt;/ins&gt;am working on this user &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;story.&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;number &lt;/del&gt;one and two &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where focusing &lt;/del&gt;on details of their work and that the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;second &lt;/del&gt;focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where to &lt;/del&gt;be finished within an hour or so. The third programmer answered&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: “Oh&lt;/del&gt;, I guess I will be ready within a few days&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/del&gt;I will probably add a few classes and might have to change those services some way.&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;”&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It might seem that &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;numbers &lt;/ins&gt;one and two &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;were focused &lt;/ins&gt;on &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;details of their work and that the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;third was &lt;/ins&gt;focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;would &lt;/ins&gt;be finished within an hour or so. The third programmer answered&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &amp;quot;Oh&lt;/ins&gt;, I guess I will be ready within a few days&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/ins&gt;I will probably add a few classes and might have to change those services some way.&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two programmers did not lack consideration of the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;over-all &lt;/del&gt;goal of what they where doing. But&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;they had selected &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a task &lt;/del&gt;that they could get &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a grip on&lt;/del&gt;, that led in a productive direction, and they thought could be finished within &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;two &lt;/del&gt;hours. Once they had finished &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that task&lt;/del&gt;, they would select a new change or refactoring. In that way all the code they wrote &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;written with a clear purpose and a limited and achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The first two programmers did not lack consideration of the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;overall &lt;/ins&gt;goal of what they where doing. But they had selected &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;tasks &lt;/ins&gt;that they could get &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to grips with&lt;/ins&gt;, that led in a productive direction, and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/ins&gt;they thought could be finished within &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a couple of &lt;/ins&gt;hours. Once they had finished &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;those tasks&lt;/ins&gt;, they would select a new change or refactoring. In that way all the code they wrote &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was &lt;/ins&gt;written with a clear purpose and a limited and achievable goal in mind.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had simply not been able to break down the problem and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;working on all of it at one go. He had no idea of what it would take, and &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;basically doing speculative programming, hoping that he would arrive at some point where he would be able to commit. Most probably the code written in the start of this long session &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;where &lt;/del&gt;poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The third programmer had simply not been able to break down the problem and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was &lt;/ins&gt;working on all of it at one go. He had no idea of what it would take, and &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was &lt;/ins&gt;basically doing speculative programming, hoping that he would arrive at some point where he would be able to commit. Most probably the code written in the start of this long session &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was &lt;/ins&gt;poorly directed for the solution that came out in the end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if the task they had selected came out to take more than two hours? They would simply realise that they had taken too big a bite, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights where kept. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;What would the two programmers do if the task they had selected came out to take more than two hours? They would simply realise that they had taken too big a bite, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights where kept. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;On the other hand, the third programmer would probably just keep guessing with less and less clue and desperately try to patch together his changes to something that could be committed. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Because&lt;/del&gt;, you cannot throw away code&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/del&gt;changes you have done &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;that would be &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a waste of &lt;/del&gt;work &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;wouldn’t &lt;/del&gt;it? Unfortunately that causes a lot of strange code&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/del&gt;changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;On the other hand, the third programmer would probably just keep guessing with less and less clue and desperately try to patch together his changes to something that could be committed. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;After all&lt;/ins&gt;, you cannot throw away code changes you have done &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; &lt;/ins&gt;that would be &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;wasted &lt;/ins&gt;work&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, wouldn't &lt;/ins&gt;it? Unfortunately&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;that causes a lot of strange code changes without a clear purpose to enter the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode and play around with the code: trying some wild refactoring just to see how the code would move, or patching on some functionality to see if it would fit in the structure &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;– &lt;/del&gt;and of course throwing away the changes whenever they had gained some insight leading them on track. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Because, of course even &lt;/del&gt;these seemingly unstructured hacking sessions &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;had a &lt;/del&gt;purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode and play around with the code: trying some wild refactoring just to see how the code would move, or patching on some functionality to see if it would fit in the structure &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; &lt;/ins&gt;and of course throwing away the changes whenever they had gained some insight leading them on track. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Even &lt;/ins&gt;these seemingly unstructured hacking sessions &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;have &lt;/ins&gt;purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;and define a new task you believe in with the insights you have gained. Do speculative &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;experiment &lt;/del&gt;whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes and define a new task you believe in with the insights you have gained. Do speculative &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;experimentation &lt;/ins&gt;whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 24 Nov 2008 15:59:15 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Kevlin at 19:49, 22 November 2008</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=21691&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:49, 22 November 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know Your Next Commit&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped a programmer on her shoulder and asked what she was doing. “I am refactoring these methods”, she answered. I tapped a second programmer on his shoulder and asked what he was doing, “I am adding some parameters to this web action”, he answered. The third answered. “I am working on this user story”&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I tapped a programmer on her shoulder and asked what she was doing. “I am refactoring these methods”, she answered. I tapped a second programmer on his shoulder and asked what he was doing, “I am adding some parameters to this web action”, he answered. The third answered. “I am working on this user story”&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, and define a new task you believe in with the insights you have gained. Do speculative experiment whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Know your next commit. If you cannot finish, throw away your changes, and define a new task you believe in with the insights you have gained. Do speculative experiment whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Dan Bergh Johnsson]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This work is licensed under a [http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3] &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Back to [[97 Things Every Programmer Should Know]] home page&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:21684:newid:21691 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 22 Nov 2008 19:49:59 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
		<item>
			<title>Danbj: inital version</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=Know_Your_Next_Commit&amp;diff=21684&amp;oldid=prev</link>
			<description>&lt;p&gt;inital version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Know Your Next Commit&lt;br /&gt;
&lt;br /&gt;
I tapped a programmer on her shoulder and asked what she was doing. “I am refactoring these methods”, she answered. I tapped a second programmer on his shoulder and asked what he was doing, “I am adding some parameters to this web action”, he answered. The third answered. “I am working on this user story”&lt;br /&gt;
&lt;br /&gt;
It might seem that number one and two where focusing on details of their work and that the second focused on the bigger picture, and that the latter should be better. However, when I asked when and what they would commit, the picture changed dramatically. The first two where pretty clear over what files would be involved and where to be finished within an hour or so. The third programmer answered: “Oh, I guess I will be ready within a few days; I will probably add a few classes and might have to change those services some way.”&lt;br /&gt;
&lt;br /&gt;
The first two programmers did not lack consideration of the over-all goal of what they where doing. But, they had selected a task that they could get a grip on, that led in a productive direction, and they thought could be finished within two hours. Once they had finished that task, they would select a new change or refactoring. In that way all the code they wrote where written with a clear purpose and a limited and achievable goal in mind.&lt;br /&gt;
&lt;br /&gt;
The third programmer had simply not been able to break down the problem and where working on all of it at one go. He had no idea of what it would take, and where basically doing speculative programming, hoping that he would arrive at some point where he would be able to commit. Most probably the code written in the start of this long session where poorly directed for the solution that came out in the end.&lt;br /&gt;
&lt;br /&gt;
What would the two programmers do if the task they had selected came out to take more than two hours? They would simply realise that they had taken too big a bite, throw away their changes, define a smaller task, and start over. To keep working would have been speculative, and you do not want speculative code in your repository. So, the changes where thrown away, but the insights where kept. &lt;br /&gt;
&lt;br /&gt;
On the other hand, the third programmer would probably just keep guessing with less and less clue and desperately try to patch together his changes to something that could be committed. Because, you cannot throw away code-changes you have done – that would be a waste of work wouldn’t it? Unfortunately that causes a lot of strange code-changes without a clear purpose to enter the repository.&lt;br /&gt;
&lt;br /&gt;
At some point of time even the commit-hard-ass programmers could not find something they thought could be finished in two hours and would lead in a productive direction. Then, they would go directly into speculative mode and play around with the code: trying some wild refactoring just to see how the code would move, or patching on some functionality to see if it would fit in the structure – and of course throwing away the changes whenever they had gained some insight leading them on track. Because, of course even these seemingly unstructured hacking sessions had a purpose: to learn about the code to be able to define a task that would constitute a productive step.&lt;br /&gt;
&lt;br /&gt;
Know your next commit. If you cannot finish, throw away your changes, and define a new task you believe in with the insights you have gained. Do speculative experiment whenever needed, but do not let yourself slip into speculative mode without noticing. And never let speculative code enter your repository.&lt;/div&gt;</description>
			<pubDate>Sat, 22 Nov 2008 18:13:23 GMT</pubDate>			<dc:creator>Danbj</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:Know_Your_Next_Commit</comments>		</item>
	</channel>
</rss>