<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gil Zilberfeld &#8211; Lean-Agile Software Consultant</title>
	<atom:link href="http://www.gilzilberfeld.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gilzilberfeld.com</link>
	<description>Lean-Agile Software Consultant</description>
	<lastBuildDate>Wed, 12 Jun 2019 16:31:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>http://www.gilzilberfeld.com/wp-content/uploads/2015/04/cropped-fav-32x32.png</url>
	<title>Gil Zilberfeld &#8211; Lean-Agile Software Consultant</title>
	<link>http://www.gilzilberfeld.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">105511133</site>	<item>
		<title>&#8220;Better Estimation&#8221; Slides from Nordic Testing Days 2019</title>
		<link>http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html</link>
					<comments>http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Fri, 31 May 2019 13:40:47 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=5018</guid>

					<description><![CDATA[<p>Oh, what a rush! So many people overcrowded the room, it seems so many have problems with estimates! But that didn&#8217;t deter them, they got through playing with dice and arguing about cheeses. Got very good feedback, and if you want &#8211; I can do it in your venue. Just click the Contact link. In</p>
<p><a href="http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html">“Better Estimation” Slides from Nordic Testing Days 2019</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignright is-resized"><img fetchpriority="high" decoding="async" data-attachment-id="5019" data-permalink="http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html/whatsapp-image-2019-05-31-at-14-29-09#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09.jpeg" data-orig-size="747,1328" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="WhatsApp-Image-2019-05-31-at-14.29.09" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09-576x1024.jpeg" class="wp-image-5019" src="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09-576x1024.jpeg" alt="" width="249" height="443" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09-576x1024.jpeg 576w, http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09-169x300.jpeg 169w, http://www.gilzilberfeld.com/wp-content/uploads/2019/05/WhatsApp-Image-2019-05-31-at-14.29.09.jpeg 747w" sizes="(max-width: 249px) 100vw, 249px" /></figure>
</div>



<p class="wp-block-paragraph">Oh, what a rush!</p>



<p class="wp-block-paragraph">So many people overcrowded the room, it seems so many have problems with estimates! But that didn&#8217;t deter them, they got through playing with dice and arguing about cheeses. Got very good feedback, and if you want &#8211; I can do it in your venue. Just click the <a href="http://www.gilzilberfeld.com/contact">Contact </a>link.</p>



<p class="wp-block-paragraph">In the meantime, the slides are below.</p>

<p><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/key/mjN0InX6aabkGc" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p>
<div style="margin-bottom: 5px;"> </div>

<p class="wp-block-paragraph">&nbsp;</p>The post <a href="http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html">“Better Estimation” Slides from Nordic Testing Days 2019</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2019/05/better-estimation-slides-from-nordic-testing-days-2019.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5018</post-id>	</item>
		<item>
		<title>&#8220;Better Estimation and Planning&#8221; Workshop at Nordic Testing Days 2019</title>
		<link>http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html</link>
					<comments>http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 01 May 2019 17:09:26 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=5000</guid>

					<description><![CDATA[<p>It&#8217;s Nordic Testing Days time again! And this time I&#8217;m wearing my agile hat (The TDD hat gets a rest until ExpoQA two weeks later). I&#8217;m going to talk about the dreaded planning session. Or in other words &#8211; estimates hurt so much, can we stop? Well, if you&#8217;re lucky, the answer would be yes</p>
<p><a href="http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html">“Better Estimation and Planning” Workshop at Nordic Testing Days 2019</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image"><figure class="alignright is-resized"><img decoding="async" data-attachment-id="5001" data-permalink="http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html/logo1-3#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1.png" data-orig-size="1920,1080" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="NTD 2019" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1-1024x576.png" src="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1-1024x576.png" alt="Gil Zilberfeld is speaking on agile planning in nordic testing days 2019" class="wp-image-5001" width="234" height="132" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1-1024x576.png 1024w, http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1-300x169.png 300w, http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1-768x432.png 768w, http://www.gilzilberfeld.com/wp-content/uploads/2019/05/logo1.png 1920w" sizes="(max-width: 234px) 100vw, 234px" /></figure></div>



<p class="wp-block-paragraph">It&#8217;s Nordic Testing Days time again!</p>



<p class="wp-block-paragraph">And this time I&#8217;m wearing my agile hat (The TDD hat gets a rest until ExpoQA two weeks later). I&#8217;m going to talk about the dreaded planning session. Or in other words &#8211; estimates hurt so much, can we stop?</p>



<p class="wp-block-paragraph">Well, if you&#8217;re lucky, the answer would be yes (that&#8217;s #NoEstimates), but even if not, and estimates are not going away, we&#8217;ll make sure we&#8217;re using them wisely.</p>



<p class="wp-block-paragraph">This workshop is about experiencing all kinds of estimates, starting with agile oldie-but-goodie planning poker, but soon move into more &#8220;accurate&#8221; and &#8220;precise&#8221; methods, like using historical data for projections.</p>



<p class="wp-block-paragraph">In the end I&#8217;ll even show you tools you can take home and use with your teams for making planning sessions less hurtful, and even shorter.</p>



<p class="wp-block-paragraph">God may not play with dice, but we will. I&#8217;m bringing all kinds of dice, and we&#8217;re going to make history. Literally. </p>



<p class="wp-block-paragraph">This is going to be fun.</p>



<p class="wp-block-paragraph">But Nordic Testing Days is also about, you know, testing. I&#8217;m looking forward to meet old and new friends and discuss testing, TDD, BDD, Clean code and all kinds of ways to make sure software does what it should.</p>



<p class="wp-block-paragraph">Check out the full abstract of the workshop on the <a href="https://nordictestingdays.eu/events/workshops/better-estimation-and-planning">Nordic Testing Days </a>site. </p>The post <a href="http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html">“Better Estimation and Planning” Workshop at Nordic Testing Days 2019</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2019/05/better-estimation-and-planning-workshop-at-nordic-testing-days-2019.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5000</post-id>	</item>
		<item>
		<title>&#8220;Better Estimation&#8221; Slides from #AgileTD 2018</title>
		<link>http://www.gilzilberfeld.com/2018/11/better-estimation-slides-from-agiletd-2018.html</link>
					<comments>http://www.gilzilberfeld.com/2018/11/better-estimation-slides-from-agiletd-2018.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Thu, 15 Nov 2018 11:51:01 +0000</pubDate>
				<category><![CDATA[AgileTD]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4950</guid>

					<description><![CDATA[<p>It&#8217;s great coming back to Agile Testing Days. After the &#8220;Spring and Integration Testing&#8221; tutorial, I gave a workshop on estimations. Ok, some #NoEstimates as well. Here are the slides:</p>
The post <a href="http://www.gilzilberfeld.com/2018/11/better-estimation-slides-from-agiletd-2018.html">“Better Estimation” Slides from #AgileTD 2018</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p>It&#8217;s great coming back to Agile Testing Days. After the &#8220;Spring and Integration Testing&#8221; tutorial, I gave a workshop on estimations. Ok, some #NoEstimates as well. Here are the slides:</p>
<p><iframe src='https://www.slideshare.net/slideshow/embed_code/123082746' width='1170' height='959' sandbox="allow-popups allow-scripts allow-same-origin allow-presentation" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></p>The post <a href="http://www.gilzilberfeld.com/2018/11/better-estimation-slides-from-agiletd-2018.html">“Better Estimation” Slides from #AgileTD 2018</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/11/better-estimation-slides-from-agiletd-2018.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4950</post-id>	</item>
		<item>
		<title>&#8220;The Whole Story&#8221; Slides from #AgileManc</title>
		<link>http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html</link>
					<comments>http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 09 May 2018 14:20:03 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4879</guid>

					<description><![CDATA[<p>Had a blast presenting at Agile Manchester. Attached is a killer pony. And the slides below.</p>
The post <a href="http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html">“The Whole Story” Slides from #AgileManc</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p><div id="attachment_4880" style="width: 166px" class="wp-caption alignright"><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4880" data-attachment-id="4880" data-permalink="http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html/machecorn#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn.png" data-orig-size="531,1011" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="MacheCorn" data-image-description="" data-image-caption="&lt;p&gt;Gil Zilberfeld presented on user stories at Agile Mancheseter 2018&lt;/p&gt;
" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn.png" class=" wp-image-4880" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn.png" alt="" width="156" height="297" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn.png 531w, http://www.gilzilberfeld.com/wp-content/uploads/2018/05/MacheCorn-158x300.png 158w" sizes="auto, (max-width: 156px) 100vw, 156px" /></a><p id="caption-attachment-4880" class="wp-caption-text">Gil Zilberfeld presented on user stories at Agile Mancheseter 2018</p></div></p>
<p>Had a blast presenting at Agile Manchester.</p>
<p>Attached is a killer pony.</p>
<p>And the slides below.</p>
<p><iframe src='https://www.slideshare.net/slideshow/embed_code/96522095' width='1170' height='959' sandbox="allow-popups allow-scripts allow-same-origin allow-presentation" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></p>The post <a href="http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html">“The Whole Story” Slides from #AgileManc</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/05/the-whole-story-slides-from-agilemanc.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4879</post-id>	</item>
		<item>
		<title>My Hovercraft Is Full of Eels</title>
		<link>http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html</link>
					<comments>http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 25 Apr 2018 14:37:01 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4866</guid>

					<description><![CDATA[<p>A story from my Clean Code class. The class exercises revolves around different aspects of the game Tic-Tac-Toe. I like this game as a platform for  exercises: It doesn&#8217;t seem to need any requirement specification. People know the game, and assume that they know exactly how they need to code it. Most of them skip</p>
<p><a href="http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html">My Hovercraft Is Full of Eels</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891.jpg"><img loading="lazy" decoding="async" data-attachment-id="4868" data-permalink="http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html/28zs891#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891.jpg" data-orig-size="800,442" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="hovercraft" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891.jpg" class=" wp-image-4868 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891.jpg" alt="Gil Zilberfeld explains how translation errors cause bugs" width="546" height="302" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891.jpg 800w, http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891-300x166.jpg 300w, http://www.gilzilberfeld.com/wp-content/uploads/2018/04/28zs891-768x424.jpg 768w" sizes="auto, (max-width: 546px) 100vw, 546px" /></a>A story from my Clean Code class. The class exercises revolves around different aspects of the game Tic-Tac-Toe.</p>
<p>I like this game as a platform for  exercises: It doesn&#8217;t <em>seem</em> to need any requirement specification.</p>
<p>People know the game, and assume that they know exactly how they need to code it. Most of them skip the design phase. It illustrates, every single time, how developers just rush out to &#8220;get the job done&#8221;, rather than think, design and then code.</p>
<p>One of the first exercises is to start writing code for the game, mostly focusing on names and operations, rather than on actually making it work.</p>
<p>At the end of the exercise we review the code of one of the students. It looked something like this:</p>
<pre class="lang:java decode:true">public class Game{
  public Game() {
    Board board = new board();
    Player playerX = new Player();
    Player playerO = new Player();
  }
  ...
}
</pre>
<p>Looks innocent enough, right? I&#8217;ve done the exercise more than I can remember, and many times a Game class starts out just like this.</p>
<div style="background: #FFFFFF; font-family: Courier New, Courier; font-size: 10pt; color: #000000; padding: 0px;"></div>
<p>Here&#8217;s the thing: Notice that the <strong>Game</strong> creates the <strong>Board</strong>? That means there&#8217;s a new board for every game.</p>
<p>You know, in real life, there&#8217;ll be multiple games on the same board. If we actually thought about modeling the relationship between the Game instances and the Board instances, it would be many-to-few (or even many-to-one, if we&#8217;re reusing the board).</p>
<p>Next, the <strong>Game</strong> creates the <strong>Player</strong> instances. Since there&#8217;s no indication in the requirements who manages the players, the Game is an viable design choice. I&#8217;m not going to discuss where it is a good or bad one, but it is a viable one.</p>
<p>Still, as we can read the code, we see that not only does the <strong>Game</strong> class contains the <strong>Player</strong> and <strong>Board</strong> entities, it actually creates them.</p>
<p>Now, would you describe a game like that to a friend who doesn&#8217;t know what&#8217;s that everyone&#8217;s playing?</p>
<p>No. You&#8217;d probably describe it like this:</p>
<blockquote><p>A game is played by two players on a board.</p></blockquote>
<p>Although the code reads like:</p>
<blockquote><p>A game creates a board. It then creates the players.</p></blockquote>
<h2>Mincing Words</h2>
<p>One of the things I talk about (repeatedly) in the Clean Code class, is the importance of ubiquitous language. That means we use as much as we can names and operation terms from the real domain (the product language) across the requirements, design, code, tests, documentation and operations.</p>
<p>Since we&#8217;re dealing with code, what you already see is a dissonance. We see that the relationship between the objects in the model is not as we describe it in the real world.</p>
<p>Of course, it can be a lot more basic. Many attendees who do the exercise describe the <strong>Board</strong> in the <strong>Game</strong> like this:</p>
<div style="background: #FFFFFF; font-family: Courier New, Courier; font-size: 10pt; color: #000000; padding: 0px;"></div>
<pre class="lang:java decode:true">public class Game {
  boolean [][] multi = new int[3][3];
  ...
}
</pre>
<p>I don&#8217;t know about you, but never have I heard the game described using the word &#8220;array&#8221;. Even by developers. Go ahead, ask them.</p>
<h2>Mind Your Language</h2>
<p>Of course English and Java (or whatever persuasion you come from on either) are different. Languages have differences inherently.</p>
<p>However, what happens when we have translations errors? Sometimes, we understand, no harm done. Sometimes we end up with a weird <a href="https://www.youtube.com/watch?v=G6D1YI-41ao">Hungarian to English dictionary</a>.</p>
<p>In software, we end up with bugs. Some of them are inconsequential. Some of them are built on the wrong assumptions and backed up by the wrong translation.</p>
<p>How do we fight the translation errors? Well, first acknowledge that programming is a translation activity, and as such prone to translation errors.</p>
<p>Second, don&#8217;t skip the design. Use the terms from the domain in the code.</p>
<p>But also, tell the usage story. If we describe the game like this:</p>
<blockquote><p>A game is played by two players on a board</p></blockquote>
<p>Then maybe the code should look like this:</p>
<pre class="lang:java decode:true">public class Player {
  public void play(Game game) {...}
}

public class Game
  public void setBoard(Board board) {...}
}
</pre>
<p>There are only a few that read as the game is described. If you want easily maintainable design (and who doesn&#8217;t) start with as less translation as possible.</p>
<p>You&#8217;ll thank yourself later.</p>The post <a href="http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html">My Hovercraft Is Full of Eels</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/04/my-hovercraft-is-full-of-eels.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4866</post-id>	</item>
		<item>
		<title>Code Coverage And Other Lies We Tell Our Selves</title>
		<link>http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html</link>
					<comments>http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 04 Apr 2018 14:01:28 +0000</pubDate>
				<category><![CDATA[Complexity]]></category>
		<category><![CDATA[Coverage]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4853</guid>

					<description><![CDATA[<p>So what&#8217;s up?&#8221; &#8220;Well, we&#8217;re really glad that you&#8217;re helping us with TDD, and we see a lot of progress. People not only continue to write tests, they get annoyed when others don&#8217;t.&#8221; Excellent. And we&#8217;re meeting today because&#8230;? &#8220;The tests people are writing are good, and they definitely increase the coverage, but we&#8217;re so</p>
<p><a href="http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html">Code Coverage And Other Lies We Tell Our Selves</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/27np4i1.jpg"><img loading="lazy" decoding="async" data-attachment-id="4855" data-permalink="http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html/27np4i1#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/27np4i1-e1522944140431.jpg" data-orig-size="300,454" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="complexity" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/27np4i1-e1522944140431.jpg" class=" wp-image-4855 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/04/27np4i1.jpg" alt="Gil Zilberfeld talks about complexity and silver bullets concerning code coverage and TDD" width="370" height="559" /></a>So what&#8217;s up?&#8221;</p>
<p>&#8220;Well, we&#8217;re really glad that you&#8217;re helping us with TDD, and we see a lot of progress. People not only continue to write tests, they get annoyed when others don&#8217;t.&#8221;</p>
<p>Excellent. And we&#8217;re meeting today because&#8230;?</p>
<p>&#8220;The tests people are writing are good, and they definitely increase the coverage, but we&#8217;re so far off our goal. What can we do to increase our coverage?&#8221;</p>
<p>I see. (Smiling on the outside, crying on the inside)</p>
<p>So I begin my coverage rant. Including (but not limited to):</p>
<ul>
<li>How coverage of 0% is definitely bad, but 100% doesn&#8217;t mean much</li>
<li>How you can get that 100% coverage in a very costly manner, and still it won&#8217;t mean much</li>
<li>How you can get that 100% coverage in a very cheap way (skip the asserts), and it won&#8217;t mean much (obviously)</li>
<li>How you can cover code completely, and it would be a big waste, since the feature is not used by the users</li>
<li>How everybody uses coverage tools, because frankly that&#8217;s the easiest thing to measure</li>
</ul>
<p>I would say that they were amazed at my logical explanation, and finished the meeting early, promising to remove all coverage metrics from their system.</p>
<p>But of course, that is completely false.</p>
<h2>Fresh out of silver bullets</h2>
<p>&#8220;But management wants to see the coverage numbers going up&#8221;.</p>
<p>Of course they do. And why is that?</p>
<p>&#8220;Well, that&#8217;s a simple proxy for quality, isn&#8217;t it?&#8221;</p>
<p>I could see the disappointment in their eyes. They expected other answers. Simpler, easy to implement, expert answers.</p>
<p>In Cynefin language, our friends were asking for a solution for a <strong>complicated</strong> problem, but they live in a <strong>complex</strong> system. In the complicated realm, we ask an expert how to solve a problem, and the expert gives you the solution. If not, we find another expert, but the answer has to be out there, since the knowledgeable expert has seen and solved this problem a million times before.</p>
<p>Alas, we&#8217;re living in a complex world, where there is no &#8220;right&#8221; answer. No silver bullet for you.</p>
<p>In the complex domain, we need to find our own solution, the one that fits our context. Applying the expert advice as &#8220;best practice&#8221; which doesn&#8217;t take our context into consideration, is asking for trouble, and sets us up for disappointment. Trust me, it&#8217;s a nice, big disappointment, covered with lots of tears and pain. Just waiting to happen</p>
<p>But it can get even worse, when we ask the wrong question. Our friends asked &#8220;how do we get our coverage numbers up&#8221;. I&#8217;ve mentioned a few options during my rant, but hopefully they won&#8217;t take those suggestions too seriously.</p>
<h2>What do we really want?</h2>
<p>The hidden request behind &#8220;how can we increase our coverage&#8221; can be either:</p>
<p>1. We want better quality.<br />
2. We want <strong>to be seen</strong> <strong>as having</strong> better quality.</p>
<p>And now we have to decide.</p>
<p>If we seek better quality, we need to work at it. The real question we should ask is &#8220;how do we improve&#8221;. Since we&#8217;re in a complex world, there are no recipes, but there are suggestions to try. Our concept of quality and improvement may differ wildly from others&#8217;, and so there may be different paths to get there.</p>
<p>(By the way, there is no one tool that will solve our specific problems, because tools are built to solve &#8220;everyone&#8217;s&#8221; problems. Since there are no silver bullets, we have to work at it hard &#8211; define what matters, define the metrics, track the metrics, and decide based on the findings if you&#8217;re going forward, backwards or sideways.}</p>
<p>If however, it&#8217;s the second goal we&#8217;re after, that&#8217;s a completely different story. We can improve our statistics in many creative ways. In fact, one of them is actually going through improvement.</p>
<p>But that would be too much work, right? All we need is to get management off our back so we can get back to &#8220;real work&#8221;.</p>
<p>There are cheaper methods to make us look like we&#8217;re improving. It just so happens, that those methods don&#8217;t align with the project&#8217;s quality goals.</p>
<p>No big deal, is it?</p>The post <a href="http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html">Code Coverage And Other Lies We Tell Our Selves</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/04/code-coverage-and-other-lies-we-tell-our-selves.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4853</post-id>	</item>
		<item>
		<title>Let&#8217;s talk about stress, baby &#8211; Part 3</title>
		<link>http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html</link>
					<comments>http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 07 Feb 2018 15:22:08 +0000</pubDate>
				<category><![CDATA[agile]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4810</guid>

					<description><![CDATA[<p>To finalize the series on stress and agile, let&#8217;s talk about what we can do to lower distress. But who are &#8220;we&#8221;? Leaders and managers are responsible and accountable for creating a safe work environment, that allows individuals to feel respected and motivated. We should make it safe to discuss the messy stuff. It maybe</p>
<p><a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html">Let’s talk about stress, baby – Part 3</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p>
<table id="tablepress-10" class="tablepress tablepress-id-10">
<thead>
<tr class="row-1">
	<th colspan="3" class="column-1">This series of posts is about stress, specifically in agile environments, where it comes from and what to do about it</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html"  style="text-decoration:underline;">Part 1</a></td><td class="column-2"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html"  style="text-decoration:underline;">Part 2</a></td><td class="column-3"><a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html"  style="text-decoration:underline;">Part 3</a></td>
</tr>
</tbody>
</table>
<!-- #tablepress-10 from cache --></p>
<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1.jpg"><img loading="lazy" decoding="async" data-attachment-id="4820" data-permalink="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html/232tvb1#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1.jpg" data-orig-size="509,500" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="232tvb[1]" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1.jpg" class="size-full wp-image-4820 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1.jpg" alt="" width="509" height="500" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1.jpg 509w, http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tvb1-300x295.jpg 300w" sizes="auto, (max-width: 509px) 100vw, 509px" /></a>To finalize the series on stress and agile, let&#8217;s talk about what we can do to lower distress.</p>
<p>But who are &#8220;we&#8221;?</p>
<p>Leaders and managers are responsible and accountable for creating a safe work environment, that allows individuals to feel respected and motivated.</p>
<p>We should make it safe to discuss the messy stuff. It maybe uncomfortable, but it beats finding out when everything blows up in our face.</p>
<h2>Individuals and interactions</h2>
<p>We should respect, empathize and above all create safety. Safety for people to talk freely, without fearing repercussions.</p>
<p>Here are ways to acheive it.</p>
<ul>
<li>Leading by example<br />
Part of the safety comes when people start talking. But they won&#8217;t, unless they see what happens first to those who do, and this is where leaders come in. They show that it&#8217;s ok to talk about stress, and how it affects work and results. They show <strong>in action</strong> that safety is important to them, the organization and the work. Because it is. Leaders and managers discuss the uncomfortable things, as if they are regular, day-to-day matters, because they are. Addressing stress once a year, is not really addressing it, it is just sweeping it under the rug. We continue to discuss it, and we hammer this message on, and people would respond.</li>
</ul>
<ul>
<li>Listening<br />
In a safe environment, when people start talking, leaders actively listen. This includes one-on-ones, retrospectives and even watercooler talks. When people don&#8217;t talk about the issues, leaders ask about them to get their perspective and to do something about it. People who know there&#8217;s an open ear will open up.</li>
</ul>
<ul>
<li>Responding<br />
Talking is not enough. People feel distress when they feel they are not in control. Leaders need to give workers more control to solve issues by themselves. Leaders also try to help them when the issues <strong>are</strong> outside their control. Yes, some things will fall into the &#8220;it&#8217;s out of our hands&#8221; bucket, but they should be the minority.</li>
</ul>
<ul>
<li>Intervening<br />
When we notice something that may compromise safety, we don&#8217;t wait. Leaders fix and pre-empt, if possible. We say out loud that some behaviors are not allowed. And if behaviours become patterns- we make sure that those behaviours are not tolerated.</li>
</ul>
<ul>
<li>Monitoring<br />
We need to know how people really feel, and in our context, how they feel about work. Relationship between workers, managers and their peers are important to improve safety. This is not easy to do, because we need to make it safe for people to talk straight (closing the circle with leading by example, listening and responding).</li>
</ul>
<ul>
<li>Educating<br />
As we continue to create and maintain the safe environment, we continue to explain the principles of safety and why it is important for everyone. As new people come into the team and to the organization, we make them feel safe by doing all the above.</li>
</ul>
<p>Rinse. Repeat.</p>
<p>With safety we lower distress, and create an environment that encourages action, results and creativity. We improve on the organization, team and, of course, on the personal level.</p>
<p>So when people say that &#8220;ever since they moved to agile they are more stressed&#8221;, it&#8217;s time to take a good look at the work environment.</p>
<ul>
<li>Does the team work <strong>with</strong> the product owner or does whatever she says, no arguments?</li>
<li>What happens if they miss their &#8220;estimation&#8221;?</li>
<li>Is there continuous communication between everyone?</li>
</ul>
<p>Agile does not create distress. It reflects it and shows how safe the environment really is.</p>
<p>That&#8217;s a good place to start.</p>The post <a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html">Let’s talk about stress, baby – Part 3</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4810</post-id>	</item>
		<item>
		<title>Let&#8217;s talk about stress, baby &#8211; Part 2</title>
		<link>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html</link>
					<comments>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 24 Jan 2018 15:25:41 +0000</pubDate>
				<category><![CDATA[agile]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4794</guid>

					<description><![CDATA[<p>Last time we talked about eustress (the good kind of stress) and distress (the bad kind). How does one turn into another? And what can we do to stay on the light side, rather than turn to the dark side? The stress we feel is in our head. We translate how we see the environment around</p>
<p><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html">Let’s talk about stress, baby – Part 2</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p>
<table id="tablepress-10-no-2" class="tablepress tablepress-id-10">
<thead>
<tr class="row-1">
	<th colspan="3" class="column-1">This series of posts is about stress, specifically in agile environments, where it comes from and what to do about it</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html"  style="text-decoration:underline;">Part 1</a></td><td class="column-2"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html"  style="text-decoration:underline;">Part 2</a></td><td class="column-3"><a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html"  style="text-decoration:underline;">Part 3</a></td>
</tr>
</tbody>
</table>
<!-- #tablepress-10-no-2 from cache --></p>
<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1.jpg"><img loading="lazy" decoding="async" data-attachment-id="4818" data-permalink="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html/232tll1#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1.jpg" data-orig-size="378,384" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="232tll[1]" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1.jpg" class="size-full wp-image-4818 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1.jpg" alt="" width="378" height="384" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1.jpg 378w, http://www.gilzilberfeld.com/wp-content/uploads/2018/01/232tll1-295x300.jpg 295w" sizes="auto, (max-width: 378px) 100vw, 378px" /></a><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html">Last time</a> we talked about eustress (the good kind of stress) and distress (the bad kind). How does one turn into another? And what can we do to stay on the light side, rather than turn to the dark side?</p>
<p>The stress we feel is in our head. We translate how we see the environment around us, to predictions of what might happen. For example, what might happens if I don&#8217;t finish coding on time, what if I miss something while testing, and what if I don&#8217;t get the next customer.</p>
<p>What can we do about it?</p>
<p>Let&#8217;s start with the bad news. Stress is not going away. We&#8217;re all working in a business environment, which dictates deadlines and keeps an eye on results. (I know, I know, some of those are misguided and unrelated to the business goals, but they too will remain with us for a long time). Agile methods just raise the bar.</p>
<p>To tell the truth, in the waterfall era, what we did was really unprofessional. Hiding the actual status of our work, working on what *we* thought was best, and delayed decisions sometimes until it was too late to change back. The shroud was a stress reliever (at least until just before release).</p>
<p>Agile methodologies try to align the development processes with the business goals. Increased visibility helps there. Incremental releases help as well. They allow the business to confirm going forward, or change course. With extra visibility comes some stress.</p>
<p>Regardless on how <em>we</em> feel, this is mainly good for business.</p>
<p>Until we leave, because we&#8217;re overstressed. Then it&#8217;s not so good for the business.</p>
<h2>We forgot something on the way to agile</h2>
<p>One of the <a href="http://agilemanifesto.org/principles.html" target="_blank" rel="noopener">agile manifesto</a> 12 principles talks about &#8220;motivated individuals&#8221;. You know, the same ones from &#8220;individuals and interactions&#8221;.</p>
<p>Scrum also puts motivation in the spotlight. Two of the values of scrum are &#8220;respect&#8221; and &#8220;courage&#8221;. While the other values &#8220;openness&#8221;, &#8220;commitment&#8221;, and &#8220;focus&#8221; is what we expect people to <strong>give</strong>, respect and courage is what we want to <strong>feel</strong>.</p>
<p>Stress is something we feel. How we deal with it lies in our hands: Our experience, maturity, relationship and skill level.</p>
<p>But mostly, it&#8217;s up to the managers and leaders, who set the tone by creating a safe (and sometimes unsafe) environment. With more safety, our distress goes back to eustress.</p>
<p>How do leaders create a safe environment? That&#8217;s in the final part of the series.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html">Let’s talk about stress, baby – Part 2</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4794</post-id>	</item>
		<item>
		<title>Let&#8217;s Talk About Stress, Baby &#8211; Part 1</title>
		<link>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html</link>
					<comments>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 03 Jan 2018 15:31:28 +0000</pubDate>
				<category><![CDATA[agile]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4791</guid>

					<description><![CDATA[<p>&#160; &#8220;Me, and everyone I know who started doing agile, are stressed&#8221;. If you ask around, people are feeling a bit more stressed than before the big agile arrived. Why is that, and is good, bad or ugly? Now, where is this stress coming from in agile teams? In the good ol&#8217; days of waterfall,</p>
<p><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html">Let’s Talk About Stress, Baby – Part 1</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>
<table id="tablepress-10-no-3" class="tablepress tablepress-id-10">
<thead>
<tr class="row-1">
	<th colspan="3" class="column-1">This series of posts is about stress, specifically in agile environments, where it comes from and what to do about it</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html"  style="text-decoration:underline;">Part 1</a></td><td class="column-2"><a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-2.html"  style="text-decoration:underline;">Part 2</a></td><td class="column-3"><a href="http://www.gilzilberfeld.com/2018/02/lets-talk-about-stress-baby-part-3.html"  style="text-decoration:underline;">Part 3</a></td>
</tr>
</tbody>
</table>
<!-- #tablepress-10-no-3 from cache --></p>
<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1.jpg"><img loading="lazy" decoding="async" data-attachment-id="4797" data-permalink="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html/222aya1#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1.jpg" data-orig-size="409,311" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="222aya[1]" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1.jpg" class="size-full wp-image-4797 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1.jpg" alt="" width="409" height="311" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1.jpg 409w, http://www.gilzilberfeld.com/wp-content/uploads/2018/01/222aya1-300x228.jpg 300w" sizes="auto, (max-width: 409px) 100vw, 409px" /></a>&#8220;Me, and everyone I know who started doing agile, are stressed&#8221;.</p>
<p>If you ask around, people are feeling a bit more stressed than before the big agile arrived. Why is that, and is good, bad or ugly?</p>
<p>Now, where is this stress coming from in agile teams?</p>
<p>In the good ol&#8217; days of waterfall, life was simple. There was a release once a year, and that last release month was really stressful. It was stressful because everyone was interested in what we were doing, what the status and quality of the release was, and if it&#8217;s actually going to happen on time (spoiler &#8211; late and full of bugs).</p>
<p>Very stressful release month, but mind you, this stress came with a discount. Because in the preceding eleven months, we felt no stress at all. Nobody was intereseted in what we were doing, and in fact, we contributed to the fog of war by not discussing anything with each other.</p>
<p>Agile is completely different.</p>
<p>There&#8217;s a deadline every couple of weeks. There&#8217;s the pressure we feel to show we made progress. People expect this from us, and we don&#8217;t want to let them down. Within these two weeks, there&#8217;s no hiding either. Everybody knows everything about the status, and what&#8217;s the probable outcome of the sprint. Even worse, because of the short time span, and extra visibility, we actually need to make decisions in broad day light, instead of deferring them to a later more suitable time, pushing them out of view.</p>
<p>Recurring deadlines, increased visibility, accountability and uncomfortable decisions &#8211; all contributing to a more stressful life.</p>
<h2>Damn stress</h2>
<p>Didn&#8217;t some agile manifesto principle say something about sustainable pace? Instead, this stress seems like it&#8217;s working against us.</p>
<p>Stress makes us feel we &#8220;need to do&#8221; something, because if not, there will be consequences. And depending on how we perceive these consequences (and perception plays a big role here) we respond in kind.</p>
<p>There are really two categories of stress. While they are not &#8220;good&#8221; or &#8220;bad&#8221;, they split based on our response.</p>
<p>Eustress, is the &#8220;good&#8221; kind. It&#8217;s the one that gets us out of bed in the morning. The one that springs us to action. It&#8217;s the motivator, the energizer. When we&#8217;re making the decisions, we&#8217;re in control and those &#8220;stressors&#8221; as they are called, move us forward.</p>
<p>Distress, the &#8220;bad&#8221; kind, sits heavy on us, and more so. This kind of stress stifles us, demotivates us and depletes our energy. We&#8217;re more occupied with how we feel, so we either do nothing, or make mistakes due to the perceived consequences. We also feel distressed when we&#8217;re not in control. When things are handed down to us, and we need to deal with them.</p>
<p>When eustress turns into distress, we&#8217;re in trouble. And agile is the srtess agent.</p>
<p>All the deadlines, extra visibility and transparency &#8211; we didn&#8217;t ask for them. Hence we feel the distress. even more so, it&#8217;s mostly inflicted on teams without choice. And that stress is consistent, all the time. That&#8217;s not easy to live with.</p>
<p>Can we do something about the stress?</p>
<p>Does agile cause only distress?</p>
<p>Is ice cream the only answer?</p>
<p>We&#8217;ll see how to handle stress next time.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html">Let’s Talk About Stress, Baby – Part 1</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2018/01/lets-talk-about-stress-baby-part-1.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4791</post-id>	</item>
		<item>
		<title>Getting to Working Software: Code Reviews &#8211; Benefits</title>
		<link>http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html</link>
					<comments>http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html#respond</comments>
		
		<dc:creator><![CDATA[Gil Zilberfeld]]></dc:creator>
		<pubDate>Wed, 20 Dec 2017 15:00:43 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Working software]]></category>
		<guid isPermaLink="false">http://www.gilzilberfeld.com/?p=4774</guid>

					<description><![CDATA[<p>Last time we talked about the different mechanisms and practices we put in place in order to get us to working software, the main metric in agile delivery. We talked about how &#8220;working software&#8221; means not just that software is functional, it&#8217;s built to last. One of the most effective of these practices is code</p>
<p><a href="http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html" class="more-link themebutton">Read More</a></p>
The post <a href="http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html">Getting to Working Software: Code Reviews – Benefits</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></description>
										<content:encoded><![CDATA[<p>
<table id="tablepress-8" class="tablepress tablepress-id-8">
<thead>
<tr class="row-1">
	<th colspan="2" class="column-1">This series is about practices to get to "working software", as the Agile Manifesto tells us. While they are not any methodology-specific, like scrum or XP, they are very important and we should understand them better.</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"><a href="http://www.gilzilberfeld.com/2017/11/getting-to-working-software-introduction.html">Introduction</a></td><td class="column-2"><a href="http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html">Code review - Benefits</a></td>
</tr>
</tbody>
</table>
<!-- #tablepress-8 from cache --></p>
<p><a href="http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1.jpg"><img loading="lazy" decoding="async" data-attachment-id="4782" data-permalink="http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html/21c2tl1#main" data-orig-file="http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1.jpg" data-orig-size="751,499" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Code review benefits" data-image-description="" data-image-caption="" data-large-file="http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1.jpg" class=" wp-image-4782 alignright" src="http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1.jpg" alt="Gil Zilberfeld talks about the benefits of code reviews, part of the series on working software, as practices of agile development." width="473" height="314" srcset="http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1.jpg 751w, http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1-300x199.jpg 300w, http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1-480x320.jpg 480w, http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1-320x213.jpg 320w, http://www.gilzilberfeld.com/wp-content/uploads/2017/12/21c2tl1-240x160.jpg 240w" sizes="auto, (max-width: 473px) 100vw, 473px" /></a><a href="http://www.gilzilberfeld.com/2017/11/getting-to-working-software-introduction.html">Last time</a> we talked about the different mechanisms and practices we put in place in order to get us to working software, the main metric in agile delivery. We talked about how &#8220;working software&#8221; means not just that software is functional, it&#8217;s built to last. One of the most effective of these practices is code reviews, and we&#8217;ll start, as always, with &#8220;Why&#8221;.</p>
<h2>Code reviews with benefits</h2>
<p>Usually while we write code, we&#8217;re in &#8220;functional mode&#8221;, getting the code to work. We&#8217;re problem solvers, and we try to translate a design we have in our mind (or the one that we&#8217;ve reviewed with the team), into code. We&#8217;re not just typing, we&#8217;re eager to see that it&#8217;s working.</p>
<p>While the focus means we&#8217;re go forward, we miss out on things on the way. The things that jump at us when we look at the code a week later, and we either don&#8217;t understand what we did there, or think &#8220;I could have done it differently&#8221;. On top of that there are the things that we still miss completely. As agile people, we need feedback.</p>
<p>This is where the code reviews come in, and it brings some awesome benefits.</p>
<ul>
<li>Finding problems early</li>
</ul>
<p>We have other people look at our code, <strong>before</strong> it gets into production, testing, or even an integrated environment. These problems we&#8217;ve missed, when we focused on &#8220;making it work&#8221;. The impact of the things we didn&#8217;t cover can range from holding back development because the build broke, to sneaking bugs into production. Having other sets of eyes on what <strong>we</strong> <strong>think</strong> works can uncover issues, and give us an opportunity to fix them before any damage is done. Agile development is about reducing risk, and early feedback does that.</p>
<ul>
<li>Fight complexity</li>
</ul>
<p>Any code we write is already complex. It carries with it not just &#8220;what it does&#8221; and &#8220;how it&#8217;s written&#8221;, but also mountains of invisible assumptions, multiple dependencies, and personal preferences. Unless a miracle happens and we happen to write the code once and it&#8217;s so good it will stay like this forever, we (or someone else ) will get back in there. The more complex it is, we (or they) will have longer time understanding it, maintaining it, and our chances of inserting a bug or two increases.</p>
<p>Code reviews are the opportunity we have to reduce complexity. Make things simpler, readable and isolated. Understand the assumptions and make sure that &#8220;the new guy&#8221;, coming in to the code in a few weeks doesn&#8217;t miss them. And that further maintenance is less costly than rewriting the whole thing. This is another type of feedback we need in agile development, which goes under technical excelence.</p>
<ul>
<li>Knowledge sharing</li>
</ul>
<p>In big projects, we are so focused on &#8220;what <b>I </b>write&#8221;, and forget that all the other people on the project are also thinking the same. The more people we have, the more assumptions on &#8220;how other people think&#8221; there are. These differences between how <strong>we</strong> think, and how <strong>they</strong> think cause all kinds of shenanigans. They result in longer integrations, unexpected bugs, and fun-filled post-mortems.</p>
<p>Spreading the knowledge of design, requirements and &#8220;how things should work&#8221;, is a great way to reduce the number of those social events. The more we do it, we&#8217;ll save ourselves the heartache involved.</p>
<p>Code reviews are a way to show other people (hopefully people who we integrate our code with theirs) our code. An opportunity to discuss what we were thinking when we were building it, how it solves the problem, and what is still open, or what we should be thinking about next.</p>
<p>Regardless if you&#8217;re a junior or a senior, and if your partner in the review is junior or senior you&#8217;ll both learn something every time you review code.</p>
<p>We&#8217;ll talk about how to do code reviews effectively in future posts, but here&#8217;s a spoiler: They are short and frequent, so there are multiple small opportunities to spread the knowledge. Knowledge sharing goes under the agile principles of technical excelence and sustainable pace.</p>
<ul>
<li>Promote collective code ownership</li>
</ul>
<p>One of the principles of Extreme Programming is Collective Code Ownership. There&#8217;s no one person responsible for a piece of code, even if she&#8217;s the writer of that code. It also means that when she&#8217;s on holiday in the Caribbean, and there&#8217;s a production problem in that code, we don&#8217;t wait for her to return, or even worse, start pressuring her to cut her vacation short so she can come and save us. Everyone on the team should be able to step in and change the code.</p>
<p>We&#8217;ve already discussed knowledge sharing in general. But this benefit of code reviews goes a bit further. Encouraging other people to &#8220;step into your house&#8221; (confirming that it&#8217;s not really yours) creates an environment where people don&#8217;t protect &#8220;their&#8221; code from others. They are actually encouraged to make it habitable for other people. And when the partner says &#8220;I understand&#8221;, that means that the house is ready to be lived in. Collective code ownership is part of agile&#8217;s technical excelence principles.</p>
<ul>
<li>Maintain conventions</li>
</ul>
<p>Part of the &#8220;I can live in this house&#8221;, says &#8220;I understand what&#8217;s written, and why it&#8217;s written like that&#8221;. If and when I&#8217;ll be called in, I can make changes in the code. The things that make it easier to understand and make changes are conventions.</p>
<p>Conventions can be stylistic, naming related, design, architecture related and more. They can be from where we put the opening braces, to deciding if inlining functions is good or bad, to how we split packages, to when we introduce a new service. They all fall into the &#8220;This is how <strong>we</strong> develop here&#8221; bucket. Conventions make our lives easy because there are fewer decisions to make, and therefore fewer things to worry about. The team conventions should <strong>always </strong>outweigh personal preferences.</p>
<p>There are no &#8220;best&#8221; conventions (including where to put opening braces). There are those that are good for the team. And code reviews are perfect opportunities to teach them, and enforce them. Once more pillar in agile&#8217;s technical excelence principles.</p>
<h2>There are lots of opportunities</h2>
<p>Code reviews as an opportunity for improvement seem to be a recurring theme. It&#8217;s not just chance, though. If we want to get those benefits we need to allot time and prioritize code reviews. More on that next.</p>The post <a href="http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html">Getting to Working Software: Code Reviews – Benefits</a> first appeared on <a href="http://www.gilzilberfeld.com">Gil Zilberfeld - Lean-Agile Software Consultant</a>.]]></content:encoded>
					
					<wfw:commentRss>http://www.gilzilberfeld.com/2017/12/getting-to-working-software-code-reviews-benefits.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4774</post-id>	</item>
	</channel>
</rss>
