<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>PeterSchuh.com</title><link>http://peterschuh.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/peterschuh" /><description>Agility and Realism in Software Development</description><language>en-US</language><lastBuildDate>Fri, 05 Apr 2013 09:18:49 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.5</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/peterschuh" /><feedburner:info uri="peterschuh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>peterschuh</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Sometimes help is closer than you think .. if you stop to think</title><link>http://feedproxy.google.com/~r/peterschuh/~3/Uf-XdugnQsM/</link><category>Thoughts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Wed, 30 Jan 2013 15:15:50 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=1043</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Just yesterday, Tuesday, our team was stuck on the wrong side of a very tight deadline. We needed to reach a significant milestone by the end of the day Friday. However, neither the team nor I had confidence that we would make it.</p>
<p>Now, just one day later, everything has changed. The entire team is confident that we&#8217;re going to complete this milestone with time to spare.</p>
<p>What happened?</p>
<p>Well, on Tuesday we already knew what the real issue was. A couple months back we decided to use a framework that was new to some members of the team. As it turned out, the learning curve was steeper than we&#8217;d realized.</p>
<p>Two developers are primarily responsible for the development work in this framework. Jim knew the framework when we selected it. Tim did not.</p>
<p>Jim had a lot of work on his plate, that he quietly likely could complete by the end of the day Friday.</p>
<p>Tim had less work to complete, but much of his time would be spent learning enough about the framework to get his work done. Tim was confident that, with assistance from Jim, he could get his work done on time. But the framework is not well documented, so Tim – and the rest of the team – had little confidence that he would be able to complete his task by Friday on his own.</p>
<p>At noon on Tuesday we hit on an idea. What if we found an expert on the framework to remote pair with Tim on Wednesday and Thursday? That expert could be located anywhere in the country, or even the world. We could possibly take out two birds with one stone. We could hit our Friday deliverable. And we could get some much-needed training on the framework for Tim.</p>
<p>By 5pm on Tuesday we had a signed SOW with an expert in the framework who was available to remote pair over the next two days.</p>
<p>And now it is Wednesday &#8212; just 24 hours later. Jim is on target to complete his deliverables for Friday. And Tim, after a day of remote pairing, is likely to complete his deliverables by the end of the day tomorrow, Thursday.</p>
<p>Thanks to the power of the inter-webs, a team that collaboratively thinks its way through tough spots, and management that is willing to back outside-the-box solutions.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/Uf-XdugnQsM" height="1" width="1"/>]]></content:encoded><description>Just yesterday, Tuesday, our team was stuck on the wrong side of a very tight deadline. We needed to reach a significant milestone by the end of the day Friday. However, neither the team nor I had confidence that we would make it. Now, just one day later, everything has changed. The entire team is [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Sometimes+help+is+closer+than+you+think+..+if+you+stop+to+think&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D1043"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=1043</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=1043</feedburner:origLink></item><item><title>Unsubscribe Means Unsubscribe, or: Don’t be Stupid</title><link>http://feedproxy.google.com/~r/peterschuh/~3/PEopNyFdBQE/</link><category>Thoughts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Thu, 03 Jan 2013 20:05:33 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=1037</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div id="attachment_1038" class="wp-caption alignright" style="width: 310px"><a href="http://peterschuh.com/?attachment_id=1038" rel="attachment wp-att-1038"><img class="size-medium wp-image-1038" title="Shut up shuttin' up." alt="Screen Shot 2013-01-03 at 10.45.30 PM" src="http://peterschuh.com/wp-content/uploads/2013/01/Screen-Shot-2013-01-03-at-10.45.30-PM-300x218.png" width="300" height="218" /></a><p class="wp-caption-text">Shut up shuttin&#8217; up.</p></div>
<p>I don&#8217;t like unsolicited emails. Period. But as I&#8217;ve tried to get the word out about <a title="ShowMojo" href="https://www.showmojo.com">ShowMojo</a> I&#8217;ve acquired some measure of temperance. It&#8217;s not easy getting in front of customers some times &#8212; especially the ones you can help the most.</p>
<p>Nonetheless, some companies don&#8217;t get it and just go way too far.</p>
<p>I received a mass email this morning from a service that we pay for to promote ShowMojo. I have zero interest in these emails and dutifully clicked unsubscribe. I was happy to do it. I had no hard feelings against the service and understand that some of their customers want these emails.</p>
<p>I was truly dumbfounded by what hit my inbox next. I&#8217;ll call it the: &#8220;Did you really mean to unsubscribe?&#8221; email. Choice quote from said email: &#8220;Was this a mistake?&#8221;</p>
<p>Yes. You&#8217;re so right. I accidentally hit the 5-point-font, off-white, no-underline &#8220;unsubscribe&#8221; link on your email then successfully (but completely inadvertently) navigated your intentionally-misleading &#8220;subscription preferences&#8221; webpage obstacle course. Absolutely I want you to continue to junk up my email box. Stupid me</p>
<p>But wait-a-minute. Quite irrationally, I asked my team if we currently use this particular service. The answer was no. Canceling was easy. And every $30 a month counts.</p>
<p>Oops. Stupid you.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/PEopNyFdBQE" height="1" width="1"/>]]></content:encoded><description>I don&amp;#8217;t like unsolicited emails. Period. But as I&amp;#8217;ve tried to get the word out about ShowMojo I&amp;#8217;ve acquired some measure of temperance. It&amp;#8217;s not easy getting in front of customers some times &amp;#8212; especially the ones you can help the most. Nonetheless, some companies don&amp;#8217;t get it and just go way too far. I received [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Unsubscribe+Means+Unsubscribe%2C+or%3A+Don%26%238217%3Bt+be+Stupid&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D1037"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=1037</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=1037</feedburner:origLink></item><item><title>Do Your Users Face Your Errors in Solitude?</title><link>http://feedproxy.google.com/~r/peterschuh/~3/F9xfLwBBBCo/</link><category>Thoughts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Fri, 14 Dec 2012 21:46:48 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=1033</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I cannot image where we would be without automated testing, continuous integration, Rspec, Cucumber and all the myriad tools and techniques available to build dependable, quality software product. But this doesn&#8217;t mean issues and errors don&#8217;t slip through.</p>
<p>A few months back I implemented a practice that I had considered using for years. I&#8217;d never done it because of the pushback I received from the teams I worked with. I regret not having done it years ago.</p>
<p>Every time a user encounters an error in our current product (<a href="http://showmojo.com" target="_blank">ShowMojo</a>) everyone on the development team gets an email. Not just for the Red Rails Box of Death, but for the little things that don&#8217;t work as well. The Javascript widgets that misfire, or fail to fire. And any time the system encounters an error, no matter how non-obvious it is to the user.</p>
<p>They may not be aware of it, but our users never encounter an error on their own. That error lands like a thud in every development inbox. It&#8217;s a thud because it&#8217;s unexpected. It&#8217;s a thud because it&#8217;s a call to action to the team: &#8220;Make it stop.&#8221;</p>
<p>When we first started this practice, there were dozens and dozens of errors a day. We had to categorize, tag, and prioritize them. It took several weeks to reclaim our inboxes. And we had to do this while pushing out new features. So there was a constant tug-of-war between current user experience and adding new value.</p>
<p>But one day came the silence of no errors. And it felt good, because we knew that&#8217;s how our users must feel  &#8212; even if they didn&#8217;t know quite how or why.</p>
<p>This isn&#8217;t the same as collecting errors are scanning logs, which can be easily forgotten or simply deprioritized. This might be difficult for huge products and strained teams. But this is something I&#8217;ll strive for with every new product, regardless of the initial resistance from the team.</p>
<p>It doesn&#8217;t feel right having the wrong answer for this question: &#8220;Do your users face your errors in solitude?&#8221;</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/F9xfLwBBBCo" height="1" width="1"/>]]></content:encoded><description>I cannot image where we would be without automated testing, continuous integration, Rspec, Cucumber and all the myriad tools and techniques available to build dependable, quality software product. But this doesn&amp;#8217;t mean issues and errors don&amp;#8217;t slip through. A few months back I implemented a practice that I had considered using for years. I&amp;#8217;d never [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Do+Your+Users+Face+Your+Errors+in+Solitude%3F&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D1033"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=1033</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://peterschuh.com/?p=1033</feedburner:origLink></item><item><title>Development Spikes, Technical Unknowns and Fuzzy Estimates</title><link>http://feedproxy.google.com/~r/peterschuh/~3/GMuZZ_y9-Iw/</link><category>Agile Practices</category><category>development spike</category><category>estimation</category><category>project inception</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Thu, 26 May 2011 05:55:39 PDT</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=882</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://peterschuh.com/wp-content/uploads/2011/01/ShermanBowTie.jpg"><img class="alignright size-medium wp-image-1017" title="ShermanBowTie" src="http://peterschuh.com/wp-content/uploads/2011/01/ShermanBowTie-200x300.jpg" alt="" width="200" height="300" /></a>Estimates are a fact of life for most of us. And often &#8211; while not always &#8211; they are a necessity. If I weren&#8217;t using some form of estimation on my current projects, they would be twisted up like Sherman bow ties. And on fire.</p>
<p>This brings us to an apparent paradox. The larger and more novel something is, the more we need to put some estimates around it &#8211; lest it end up a railroad-side barbecue. Yet the larger and more novel something is, the tougher it is to devise meaningful estimates.</p>
<p>But this isn&#8217;t a real paradox. It&#8217;s just a starting point.</p>
<p>At the very inception of a project or product we don&#8217;t need a thorough estimate of everything. We just need a simple set of estimates that tell us what to label the tick marks on our deliverable-level cost graph. Were we to cost out our initial estimates, would we be measuring project deliverable in increments of one thousand dollars, or ten thousand, or a hundred thousand? This lets the organization and team know what league they are playing in and how much to invest in upfront estimation and project tracking.</p>
<p>Most things we need to do should not be difficult to estimate. Anyone who&#8217;s been around the organization long enough should know how long it takes to spin up a shared development environment, the average time to build out a screen, and the usual duration of system and acceptance testing. For the rest we use development spikes.</p>
<p>We use a development spike to tell us whether some technical activity is feasible and/or to tell us how long it could take to complete.</p>
<p>Here are some examples of development activities (and questions) that learn more about with a development spike:</p>
<ul>
<li>Can we implement two-way SMS in our current infrastructure?</li>
<li>Can we reduce costs and time by using an open source charting package (or is it better to roll our own)?</li>
<li>How difficult will it be to upgrade to Ruby on Rails 3?</li>
<li>Can we do multiple file uploads without flash?</li>
<li>Will it handle the load?</li>
<li>How do we make these two systems talk to one another?</li>
</ul>
<p>A spike is typically throw-away code. It&#8217;s only purpose (at least in this case) Is to give us enough knowledge to state a fuzzy estimate with confidence.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/GMuZZ_y9-Iw" height="1" width="1"/>]]></content:encoded><description>Estimates are a fact of life for most of us. And often &amp;#8211; while not always &amp;#8211; they are a necessity. If I weren&amp;#8217;t using some form of estimation on my current projects, they would be twisted up like Sherman bow ties. And on fire. This brings us to an apparent paradox. The larger and [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Development+Spikes%2C+Technical+Unknowns+and+Fuzzy+Estimates&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D882"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=882</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=882</feedburner:origLink></item><item><title>A Project Manager’s Acid Test: Fund Your Own Product</title><link>http://feedproxy.google.com/~r/peterschuh/~3/s6aIrZEZvs4/</link><category>Thoughts</category><category>minimum viable product</category><category>product management</category><category>project management</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Mon, 28 Feb 2011 05:38:33 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=959</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://peterschuh.com/wp-content/uploads/2011/02/acidtest.jpg"><img class="alignright size-full wp-image-986" title="acidtest" src="http://peterschuh.com/wp-content/uploads/2011/02/acidtest.jpg" alt="" width="230" height="293" /></a>Do you think you are a rockstar project manager? Can you roll out an agile process and leap the tangle of legacy waterfall hurdles without breaking a sweat? Can you walk unaided from a fight club thronged with hackers, cowboy coders, support junkies and alpha heroes? Want to prove it?</p>
<p>I&#8217;ve got the acid test for you.</p>
<p>Identify a small product that you have always wanted to build. Commission something that you could use on the job or at home. It needs to be something that requires more than just you to complete. It must require a budget, paid help, realizable value, clear goals, and a plan. In other words, scope and fund your own project.</p>
<p>Yes. You fund the project with your own money. That&#8217;s what makes this an acid test.</p>
<p>For me, for example, this something is to rebuild and productize a web-application that has become a critical part of managing the rental properties my wife and I own. We have used two different prototypes over the last two years and I firmly believe this product captures a soon-to-be-ubiquitous element of property management. So I am taking the leap.</p>
<p>This PM acid test assesses whether you have the skill to contemplate and manage everything about your small project (and the product on which it is based). Either directly or via delegation you will need to:</p>
<ul>
<li>Define your own requirements and break them into plannable features.</li>
<li>Identify a MVP (minimal viable product) and keep the project aligned to that vision.</li>
<li>Find and contract with the professionals who will complete the work.</li>
<li>Forecast and manage the development schedule.</li>
<li>Identify the technologies to use and the deployment environment.</li>
<li>Vet archiitecrure and design decisions.</li>
<li>Review all completed deliverables from a functional and technical perspectives.</li>
<li>Balance new features versus technical debt.</li>
<li>Do anything else a project manager, product manager, product owner, stakeholder or sponsor would do or delegate.</li>
</ul>
<p>Of course you can get help on any or all of these activities. You can hire an architect to make decisions and review code. You can hire a QA professional to write scripts and run tests. But you still need to acclimate these professionals to your product and vision. And any additional hands will cut into your budget.</p>
<p>Even when delegating you still need to preform an informed review of all significant work products. Delegation without review is an elephant trap.</p>
<p>The only certainty around this acid test is that something will go badly. If you hire four contractors at least one will be a dud &#8211; you&#8217;ll pay someone to clean up that mess. Your own conception (and delivered specs) of the system will never be free of potholes &#8211; someone will need to go back and patch those, or dig up the road and start over. And your vision of the product will never be communicated so clearly as to avoid every misstep &#8211; that&#8217;s more rework still.</p>
<p>You will need to be on top of everything. Or you can sit back and watch Team Burn Rate blow half your budget in two weeks.  Whenever anything goes wrong it will be your fault. You did not give clear requirements. You hired the wrong person. You changed your mind. You let one decision sit too long and made another decision too early. You let a technical issue sit unaddressed as it smoldered its way through your release timeline.</p>
<p>Can you complete a releasable version of your own, personably-funded product before you cut off the money supply because you can&#8217;t lose any more? That&#8217;s why it is an acid test.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/s6aIrZEZvs4" height="1" width="1"/>]]></content:encoded><description>Do you think you are a rockstar project manager? Can you roll out an agile process and leap the tangle of legacy waterfall hurdles without breaking a sweat? Can you walk unaided from a fight club thronged with hackers, cowboy coders, support junkies and alpha heroes? Want to prove it? I&amp;#8217;ve got the acid test [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=A+Project+Manager%26%238217%3Bs+Acid+Test%3A+Fund+Your+Own+Product&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D959"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=959</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=959</feedburner:origLink></item><item><title>Have You Accounted for February Sick Days?</title><link>http://feedproxy.google.com/~r/peterschuh/~3/pkD55T2cwNk/</link><category>Thoughts</category><category>mismanagement</category><category>planning</category><category>velocity</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Tue, 08 Feb 2011 05:54:14 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=962</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://peterschuh.com/wp-content/uploads/2011/02/WornOut.jpg"><img class="size-medium wp-image-963 alignleft" title="WornOut" src="http://peterschuh.com/wp-content/uploads/2011/02/WornOut-290x300.jpg" alt="" width="203" height="210" /></a>Superflu weekend struck our family &#8212; and all the families in our daughters&#8217; playgroup. Based on preliminary reports (and my own condition) this could stretch into superflu fortnight.</p>
<p>This reminds me to ask the question: <em>Has anyone planned for sick days in February?</em></p>
<p><em><span style="font-style: normal;">I spotted a trend a few years back that I <a href="http://peterschuh.com/?p=398">blogged about in 2009</a>. Now I&#8217;m convinced that February is the Northern Hemisphere&#8217;s worst month for sick days. And I do account for February sick days in the delivery commitments that my teams make. </span></em></p>
<p>Of course, there are other perspectives. I once had a manager who, when contemplating the likelihood of illness-reduced delivery in February, rebutted: <em>Plan at the standard velocity. That&#8217;ll encourage the healthy employees to work overtime and cover the shortfall.</em></p>
<p><em><span style="font-style: normal;">He was all about morale, that one.</span></em></p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/pkD55T2cwNk" height="1" width="1"/>]]></content:encoded><description>Superflu weekend struck our family &amp;#8212; and all the families in our daughters&amp;#8217; playgroup. Based on preliminary reports (and my own condition) this could stretch into superflu fortnight. This reminds me to ask the question: Has anyone planned for sick days in February? I spotted a trend a few years back that I blogged about in [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Have+You+Accounted+for+February+Sick+Days%3F&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D962"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=962</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=962</feedburner:origLink></item><item><title>Doing Big Deployments That Don’t Suck</title><link>http://feedproxy.google.com/~r/peterschuh/~3/o0xqjQ1N5Pc/</link><category>Thoughts</category><category>deployment</category><category>management</category><category>real world</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Mon, 31 Jan 2011 05:20:32 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=923</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://peterschuh.com/wp-content/uploads/2011/01/semaphore.jpg"><img class="alignright size-medium wp-image-950" title="semaphore" src="http://peterschuh.com/wp-content/uploads/2011/01/semaphore-221x300.jpg" alt="" width="221" height="300" /></a>I&#8217;ve been doing more than my fair share of deployments lately.</p>
<p>These deployments aren&#8217;t the one-click-then-beer variety you find on Heroku or in some seriously agile shops. These deployments are arduous day-long journeys, caravanning eight unique technologies, traversing multiple connected systems both up- and down-stream. And bad things do live in the water.</p>
<p>Seriously, it has been a lot of hard work and some difficult times reliving past mistakes. So here&#8217;s my list of freshened lessons that make big deployments suck less:</p>
<p><strong>1. One group chat and one conference line. </strong>Don&#8217;t use email for the deployment team. It&#8217;s slow. terrible at threading conversations. And, somehow, people always get dropped off the address list &#8211; or appended to the cc field 37 times. A dozen individual chats and phone calls are terrible for anything but proving why Europe mothballed the semaphore back in the 19th century.</p>
<p><strong>2. A deploy with fewer people is better. </strong>An all-hands-on-deck deploy may sound comforting. In reality. that&#8217;s just more people in the way, arguing over the best corrective path, and slowly burning out while standing at the ready. Deploys with fewer people &#8211; with clear responsibilities and fully prepared for the tasks of the day &#8211; beat mob deploys any day of the week.</p>
<p><strong>3. Have your support people at the ready. </strong>Just because your core deploy team is fully briefed and prepared doesn&#8217;t mean you have all the expertise you&#8217;ll ever need. Know who else you&#8217;ll need if the fit hits the shan. Make sure that each member of this auxiliary group is ready to drop in at a phone call&#8217;s notice. Collect and distribute the best contact information for that auxiliary group to each member of your core group prior to deploy day.</p>
<p><strong>4. Clear communication channel. </strong>Who owns outward communication and in what direction? People who need deploy status updates could include stakeholders, upper management, cooperate support teams, and auxiliary team members. They will not all want or need the same status reports. (Hint: you don&#8217;t want to send a 100-line deploy plan every hour to your stakeholders.) You need to decide in advance who owns which channel, the frequency of status updates, and the content of those updates.</p>
<p><strong>5. Clear decision-making. </strong>When your app server and the database stop talking the last thing you need is a team that descends into bickering over which server to kick first. A deploy will involve a variety of experts, but there should be a single person in charge who &#8211; once all voices have been heard &#8211; calls the shots.</p>
<p><strong>6. Clear accountability. </strong>The entire deploy team should know who is responsible for what well before the deploy begins. For me, that means one owner for each discrete part of the deploy. This separation may be by system, technology or product subteam &#8211; whatever makes sense for the deploy. Finally, only core deploy team members own deploy tasks. Sometimes a non-team-member is responsible for completing a task, but we still want a core deploy team member accountable to see that it gets done.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/o0xqjQ1N5Pc" height="1" width="1"/>]]></content:encoded><description>I&amp;#8217;ve been doing more than my fair share of deployments lately. These deployments aren&amp;#8217;t the one-click-then-beer variety you find on Heroku or in some seriously agile shops. These deployments are arduous day-long journeys, caravanning eight unique technologies, traversing multiple connected systems both up- and down-stream. And bad things do live in the water. Seriously, it [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Doing+Big+Deployments+That+Don%26%238217%3Bt+Suck&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D923"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=923</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=923</feedburner:origLink></item><item><title>Make Something Awesome</title><link>http://feedproxy.google.com/~r/peterschuh/~3/66jxb9SgRWY/</link><category>Thoughts</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Wed, 12 Jan 2011 05:40:58 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=845</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>We have so many things to fret over when building software:</p>
<p style="padding-left: 30px;">Requirements. Quality. Deadlines. Budgets. Scope creep.</p>
<p style="padding-left: 30px;">Dependencies. Audits. Deployment plans. Disaster  recovery.</p>
<p style="padding-left: 30px;">Single points of failure.</p>
<p style="padding-left: 30px;">Other systems. Other teams. Other everything.</p>
<p style="padding-left: 30px;">Backouts. Blackouts. Timeouts. Burnout.</p>
<p style="padding-left: 30px;">On call. Fire call. Five nines. Server down.</p>
<p style="padding-left: 30px;">Bad managers. Weak programmers. Ill-suited customers.</p>
<p style="padding-left: 30px;">The random bus.</p>
<p>Perhaps we hold fast to the long-term course. Fortunate, still, our leaders flare near-terms into the night. Even so our endeavor rolls on as involuntary peregrination.</p>
<p>Though it never was how can we return to the way it should be? Create and inspire. Band together for common purpose and tantalizing gain. Strive and fall and lift one-anther higher. Set collective effort on uncommon aspiration. How do we forget to remember? To make something awesome.</p>
<p><a href="http://peterschuh.com/wp-content/uploads/2011/01/41762694_moon_getty.416.jpg"><img class="size-full wp-image-929  aligncenter" title="_41762694_moon_getty.416" src="http://peterschuh.com/wp-content/uploads/2011/01/41762694_moon_getty.416.jpg" alt="" width="291" height="115" /></a></p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/66jxb9SgRWY" height="1" width="1"/>]]></content:encoded><description>We have so many things to fret over when building software: Requirements. Quality. Deadlines. Budgets. Scope creep. Dependencies. Audits. Deployment plans. Disaster recovery. Single points of failure. Other systems. Other teams. Other everything. Backouts. Blackouts. Timeouts. Burnout. On call. Fire call. Five nines. Server down. Bad managers. Weak programmers. Ill-suited customers. The random bus. Perhaps [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Make+Something+Awesome&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D845"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=845</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=845</feedburner:origLink></item><item><title>That Huge Estimate May Be a Vote of No Confidence</title><link>http://feedproxy.google.com/~r/peterschuh/~3/8n7ybcWp9Ew/</link><category>Thoughts</category><category>estimation</category><category>unsolicited feedback</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Mon, 03 Jan 2011 05:07:17 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=822</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://peterschuh.com/wp-content/uploads/2011/01/sprayfoam.jpg"><img class="alignright size-medium wp-image-898" title="sprayfoam" src="http://peterschuh.com/wp-content/uploads/2011/01/sprayfoam-215x300.jpg" alt="" width="172" height="240" /></a>I&#8217;ve seen it happen several times. The business requests an upfront, full-cost estimate for some feature or functionality. A business person writes something up &#8211; far simpler than the normal story-writing or requirements-drafting process. The development team reviews the write-up. Questions, clarifications and adjustments happen. An estimate is assembled and then KA-BLAM! &#8211; everyone is blown over by the sheer size of it.</p>
<p>When even the development team is left scratching its head saying: &#8220;Yeah, that looks way big to us too, but &#8230; &#8221; you know there are problems bigger than whatever comes after that ellipses.</p>
<p>Granted, there are mitigating circumstances. The requirements &#8211; such as they are &#8211; may delve into a new and unknown domain. The technology may be novel to both the team and the corporate IT ecosystem. But even in these cases, if the team cannot mount a strong justification  for an eye-popping estimate, you have to ask whether there are other issues lurking in the shadows.</p>
<p>In these cases, the two most common issues I&#8217;ve set alight are:</p>
<p>1. <strong>The delivery team lacks confidence in its own technical ability (due to a skills mismatch, lack of training, or other reasons).</strong> This issue goes beyond the time it might take to ramp up on new technologies, adjust to a new domain, or proof a novel design approach. Teams can readily explain all this in their estimates. But an intractable problem arises &#8211; with a huge estimate in tow &#8211; when   the development team fears that it&#8217;ll never fully tackle a new technology, domain, or approach. Or, sometimes, it&#8217;s an unconquered legacy technology, domain, or approach frustrating future development.</p>
<p>2. <strong>The delivery teams lacks confidence in its business partner&#8217;s ability to honestly collaborate and openly negotiate with the team.</strong> It&#8217;s okay if the business partner doesn&#8217;t get the requirements solidified on the first, the second or third try. Agile teams know this can be difficult, and agile processes are geared to accommodate. However, when a customer repeatedly demands prompt and accurate delivery on half-baked requirements, even an agile team will take a tanker-truck of spay foam to the delivery estimate.</p>
<p>While the causes are dramatically different, the end result for each issue is the same. The team&#8217;s huge estimate reflects an inability to adjust and adapt. In one case the team lacks confidence in its own ability; in the other case the team lacks confidence in its customer. Regardless of the cause, these are issues that need to be addressed, as they impede far more than the team&#8217;s ability to deliver an estimate.</p>
<p>Sometimes a huge estimate is just a huge estimate. Sometimes it&#8217;s something much more. Next time you see a jaw-dropper of an estimate wrapped in flimsy explanation, it might be worth taking the time to find out why.</p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/8n7ybcWp9Ew" height="1" width="1"/>]]></content:encoded><description>I&amp;#8217;ve seen it happen several times. The business requests an upfront, full-cost estimate for some feature or functionality. A business person writes something up &amp;#8211; far simpler than the normal story-writing or requirements-drafting process. The development team reviews the write-up. Questions, clarifications and adjustments happen. An estimate is assembled and then KA-BLAM! &amp;#8211; everyone is [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=That+Huge+Estimate+May+Be+a+Vote+of+No+Confidence&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D822"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=822</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=822</feedburner:origLink></item><item><title>Mobile Advertising at the Expense of Usability and the Corner Pizzeria</title><link>http://feedproxy.google.com/~r/peterschuh/~3/M4wnUgga5RQ/</link><category>Thoughts</category><category>mobile</category><category>usability</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Schuh</dc:creator><pubDate>Mon, 27 Dec 2010 05:29:08 PST</pubDate><guid isPermaLink="false">http://peterschuh.com/?p=865</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>The &#8220;Maps&#8221; application on my iPhone used to work great. It pulled up the number of a nearby joint so fast I never bothered to save those numbers to my contacts list.</p>
<p>Then, about a month back, something annoying happened. I&#8217;d search for a local joint &#8211; say Gino&#8217;s East, to order pizza &#8211; and my normal search result appeared different.</p>
<table>
<tbody>
<tr>
<td>
<p><div id="attachment_868" class="wp-caption alignnone" style="width: 210px"><a href="http://peterschuh.com/wp-content/uploads/2010/12/IMG_0892.jpg"><img class="size-medium wp-image-869 " title="Before" src="http://peterschuh.com/wp-content/uploads/2010/12/IMG_0892-200x300.jpg" alt="" width="200" height="300" /></a><p class="wp-caption-text">Before</p></div></td>
<td>
<p><div id="attachment_868" class="wp-caption alignnone" style="width: 210px"><a href="http://peterschuh.com/wp-content/uploads/2010/12/IMG_0891.jpg"><img class="size-medium wp-image-868 " title="After" src="http://peterschuh.com/wp-content/uploads/2010/12/IMG_0891-200x300.jpg" alt="" width="200" height="300" /></a><p class="wp-caption-text">After</p></div></td>
</tr>
</tbody>
</table>
<p>While I noticed a difference &#8211; my restaurant listing is now a &#8220;sponsored link&#8221; &#8211; I didn&#8217;t think much of it. Then the call was answered by GrubHub and not Gino&#8217;s East. I hung up.</p>
<p>After further inspection, I discovered my around-the-corner pizzeria is now the unassuming red pin next to the big glaring advertisement.</p>
<p>The math here is pretty obvious &#8211; had I completed the call. GrubHub takes a cut from my Pizzeria. Google takes ad dollars from GrubHub. Apple, I&#8217;m sure, gets some form of compensation.</p>
<p>Now, let&#8217;s talk unintended consequences.</p>
<p>What happens if I succumb to mobile advertising Nirvana and click the default  GrubHub ad on every search?<strong> </strong>I was going to order takeout from my Pizzeria anyway. Similarly, I was going to make a reservation at La Gondola on Saturday regardless of a GrubHub ad. The upshot here is that either my local restaurant takes less profit or raises its prices &#8211; one of us ultimately pays for it.</p>
<p>Conversely, what happens if I evade the GrubHub ad? I can &#8211; and do &#8211; click around the ad to ring my local joint directly. It&#8217;s only one extra tap. But it&#8217;s a precise tap &#8211; while cradling a baby, while walking down the sidewalk, while hanging for dear life inside a CTA train.</p>
<p>Perhaps the precedent is more important. I consider &#8220;Maps&#8221; an application that I paid for when I bought my iPhone. It came preinstalled. I couldn&#8217;t remove it if I wanted to. And the phone certainly wasn&#8217;t free.</p>
<p>It&#8217;s only one extra tap, but this is the first time I&#8217;ve been annoyed by &#8211; or ever seen &#8211; an ad in a preinstalled application on ANY phone I&#8217;ve owned. And this isn&#8217;t just any advertising. This advertising affects how I use the phone. Personally, I will pay to avoid being assaulted by advertising. That&#8217;s one reason I don&#8217;t have an Android phone. That&#8217;s the major reason I&#8217;m selective about my use of Google.</p>
<p>What&#8217;s the upshot?</p>
<p>For me, I see a behavior change. One by one, I&#8217;ll add local shops and restaurants to my contact list. Hopefully it&#8217;ll take Google a couple more years to find its way there.</p>
<p>For mobile usability, this is a loss, as the extra ad dollar is clearly more important than the paying customer &#8211; even on an iPhone.</p>
<p>For my local joints, it&#8217;s one more national player trying to take a bite out of their pie. That&#8217;s also bad for me.</p>
<p><img src="file:///Shared%20Files/Personal/Photo%20Library%20-%20Pete.aplibrary/Previews/2010/12/26/20101226-195138/yJ5whV2QQuiSEJsda4wcLg/IMG_0891.jpg" alt="" /></p>
<img src="http://feeds.feedburner.com/~r/peterschuh/~4/M4wnUgga5RQ" height="1" width="1"/>]]></content:encoded><description>The &amp;#8220;Maps&amp;#8221; application on my iPhone used to work great. It pulled up the number of a nearby joint so fast I never bothered to save those numbers to my contacts list. Then, about a month back, something annoying happened. I&amp;#8217;d search for a local joint &amp;#8211; say Gino&amp;#8217;s East, to order pizza &amp;#8211; and [...]&lt;p&gt;&lt;a href="http://sharethis.com/item?&amp;#038;wp=3.5&amp;#38;publisher=8b731aca-727c-473d-b700-ffafa4487b60&amp;#38;title=Mobile+Advertising+at+the+Expense+of+Usability+and+the+Corner+Pizzeria&amp;#38;url=http%3A%2F%2Fpeterschuh.com%2F%3Fp%3D865"&gt;ShareThis&lt;/a&gt;&lt;/p&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://peterschuh.com/?feed=rss2&amp;p=865</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://peterschuh.com/?p=865</feedburner:origLink></item></channel></rss>
