<?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>Dave Talks Shop &#187; Software Development</title>
	<atom:link href="http://www.davidkspencer.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davidkspencer.com</link>
	<description>Thriving in the 21st century workplace</description>
	<lastBuildDate>Tue, 03 Jan 2012 13:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ship it, move on!</title>
		<link>http://www.davidkspencer.com/2011/08/02/ship-it-move-on/</link>
		<comments>http://www.davidkspencer.com/2011/08/02/ship-it-move-on/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 13:08:19 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=678</guid>
		<description><![CDATA[Releasing a product is one of the hardest jobs we have, as creators of software.  Developing a product is a potentially never-ending process; there are always new features to be added, bugs to be fixed, and test configurations to validate against.  A release date pulls the team together, an often-moving deadline to strive against as [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2011/08/02/ship-it-move-on/">Ship it, move on!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Releasing a product is one of the hardest jobs we have, as creators of software.  Developing a product is a potentially never-ending process; there are always new features to be added, bugs to be fixed, and test configurations to validate against.  A release date pulls the team together, an often-moving deadline to strive against as an organization.  Everybody pulls out all the stops, developers and testers work through nights and weekends, technical writers come out of the woodwork to keep documentation updated, and the leadership team meets daily to ask the question: &#8220;Is it done yet?&#8221;</p>
<p>The question, of course, is really &#8220;is it done <strong>enough</strong> yet?&#8221;.</p>
<p>We finally shipped ProSphere 1.0 at the close of July.  I am not surprising anyone when I say that wasn&#8217;t the first release date we had in mind, nor am I surprising anyone when I said we shipped with a backlog of items we wished had made it into 1.0.  But at some point you need to ship it and move on.</p>
<p>Today I have a slightly different team; a few people have changed responsibilities to allow the teams to better meet the needs of our next release.  And while I work to integrate that new team together, I also stew over a laundry list of requirements and enhancements to our product for the next release.  Resolving priority conflicts, providing gross estimates, learning new areas of the product, and making sure nothing slips through the cracks &#8212; it&#8217;s a busy time.</p>
<p>It&#8217;s a totally different kind of busy than when trying to release a product &#8212; but it&#8217;s just as important.  The context shift is jarring, but the quality of the work done today will impact our working lives for the coming months, and have a direct impact on the satisfaction of our customers with the next version of this product.</p>
<p>This is, of course, the job we all signed up for.  It&#8217;s an exciting time.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2011/08/02/ship-it-move-on/">Ship it, move on!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2011/08/02/ship-it-move-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing ProSphere</title>
		<link>http://www.davidkspencer.com/2011/07/14/introducing-prosphere/</link>
		<comments>http://www.davidkspencer.com/2011/07/14/introducing-prosphere/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 13:14:11 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[EMC]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=670</guid>
		<description><![CDATA[In 1996, I joined the CLARiiON team to work on a new Storage Resource Management product. It was a management software leap to go along with the leap forward from SCSI to Fibre Channel. We looked at everything that was “wrong” about the existing solutions, took into account new requirements based on the scalability of [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2011/07/14/introducing-prosphere/">Introducing ProSphere</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In 1996, I joined the CLARiiON team to work on a new Storage Resource Management product. It was a management software leap to go along with the leap forward from SCSI to Fibre Channel. We looked at everything that was “wrong” about the existing solutions, took into account new requirements based on the scalability of the new hardware, updated our products to use the leading edge technologies, and created something entirely new – Navisphere. It was a huge splash for CLARiiON, and helped define everything I think of as successful in a software project.</p>
<p>Fifteen years later, I’m writing about a new big splash for EMC in the SRM space – <a href="http://www.emc.com/about/news/press/2011/20110714-01.htm">ProSphere 1.0</a>. I’ll stop you right here and tell you that you need to <a href="http://chucksblog.emc.com/chucks_blog/2011/07/managing-block-storage-at-scale-introducing-emc-prosphere.html">go read Chuck’s post</a> on the product. I can’t out-do his deep-dive into the industry angles and why it’s such a big deal, so I won’t even try.</p>
<p>What I will tell you is why working on this product was so different from any other product I’ve touched at EMC, and why I’m so proud to be able to announce it here. Just like fifteen years ago, it was a chance to take a look at everything “wrong” while also still looking in new directions at the same time the industry is making another scale leap with Cloud environments. This has been some of the hardest work I’ve done here at EMC. But seeing it get out the door is making it all worth it.</p>
<p><span id="more-670"></span>EMC ControlCenter has a decade-plus roller-coaster history.  It’s been through some challenging times, on many fronts, but we’ve never stopped trying to improve it for our customers.  We often talked about things we’d like to do differently, given the chance.  By the middle of 2008, a vision for the future was firming up – and we had a name for it.  “SRM 7,”  reflecting our goal to avoid “growing” ControlCenter to a new major version after 6.x.</p>
<p>We handed out T-shirts with a stylized “7” inside a diamond shape (which might evoke a certain superhero).  The (perhaps dangerous) implication?  SRM 7 was going to fly in and save the day.  We were all a bit skeptical.  But today we’re announcing the first shipping release of that product – ProSphere 1.0.</p>
<p>Why do I think it’s such a big deal?</p>
<p><strong>We didn’t rebuild ControlCenter</strong></p>
<p>Early on, we faced a critical decision – do we rebuild ControlCenter piece by piece, or do we build a new solution from the ground up?  We knew part of the issue with ControlCenter was feature creep.  We wanted to focus on critical customer use cases and build the application that could do those, and resist the temptation to build a giant unwieldy Swiss Army Knife.  That philosophy bled into everything.  We didn’t build a giant infrastructure that could address all our needs; we architected an extensible solution and implemented enough of it to get us through the use cases we were attacking.  We avoided writing “just in case” code to support possible future features.  We didn’t build what we could reuse.  We knew we couldn’t ever finish this in time if we wrote it all from scratch, so we pulled in proven components from other shipping EMC products and integrated them.</p>
<p>Further than that, we didn’t want to be the single best interface for every deep use case – we knew you wanted to use the right tools for those jobs.  So we made a plan &#8212; find those tools, link to them, launch them in context, and make your sign-in transparent – and in the process eliminate thousands of lines of code which need to be tested, debugged, upgraded, and so on.  It’s a win on every front.</p>
<p>You’re never going to have a “lean” piece of software to do the giant job of managing the storage for your entire enterprise.  But ProSphere is downright svelte compared to ControlCenter, and we intend to keep it that way.</p>
<p><strong>It was ok to look outside</strong></p>
<p>Another shift we made in ProSphere was to look outside our traditional sources of software components.  We didn’t want to write, maintain, and test unneeded software.  We didn’t want to architect and design unneeded components.  We pulled in open source software, we used open standards, and we got creative.  It was a learning curve for the development team, but in the end we have a product that communicates using known web technologies and patterns, and which we hope will serve as the foundation for an open, extensible management solution.</p>
<p>This extends deep into the product’s DNA, not just a superficial claim about what our APIs look like.  Eliminating traditional agents, using HTTP to communicate between our machines, going to a virtual appliance model, using industry-standard system monitoring  … all these things make the system higher quality and more extensible with less code to carry.</p>
<p><strong>We got Agile</strong></p>
<p>One of our early decisions was to abandon the waterfall software method we had more or less down to a science in ControlCenter, and replace it with an enterprise-scale Agile development approach.  In my personal opinion, two excellent things came out of that decision: we “forced” our development managers to take ownership of use cases within the product, and we created cross-functional (development, quality engineering, documentation, product management, user experience design) teams to tackle those use cases in close collaboration with each other.  In my fifteen years of software development, this is the closest cooperation I’ve seen between functions on a project team of this scale.</p>
<p><strong>We built a safety net</strong></p>
<p>Last, but most certainly not least, this product has the most aggressive safety net I’ve encountered.  Every day, thousands of automated tests run against the system in various forms – unit tests against the code, integration tests against the REST interfaces, automated UI tests against the finished product in a test environment (deployed automatically after every finished build), and even more automated UI tests against the finished product in a “real” environment.  Individual developers had access to a simple web-based tool to deploy a build, patch it, and run a suite of hundreds of automated regressions against it prior to delivery – all from their desks, without ever seeing an installation screen.</p>
<p>We combined this with static analysis tools constantly analyzing the source trees to check for bugs, security lapses, stylistic violations, and undesirable complexity, with web-based dashboards for everyone to see.  Finally, there’s a dedicated team doing manual run-throughs of customer use cases in a variety of real-world environments.  You take all that and combine it with an organizational mandate not to tolerate technical debt, not to tolerate little bugs accumulating in the system, and you’ve got a team that understands what quality means and has an extremely low rate of regressions.</p>
<p>Part of what took us so long was building all that scaffolding, and changing the culture of our development and test organizations to get us here.  And now that it’s built (not that it’s ever “done!”), it will pay for itself for years to come.</p>
<p><strong>In conclusion</strong></p>
<p>I’ve been involved on this product for about three years now … the same amount of time I’ve been a father.  And like any Proud Papa, I can’t wait to show off.</p>
<p>We built a solid foundation – a highly deployable, serviceable, and usable application – and concentrated our efforts on a small, tight family of use cases using that foundation.  We’re already working on what’s next.  I think we’ve changed the game here.  I’m proud to be a part of that.  I was just one manager, with one small team, working on little bits and pieces of this giant project.  I’m grateful to my team for consistently seeing the big picture and working nonstop to get us there.  I can’t begin to explain how proud I am of the work they did.</p>
<p>It hasn’t been easy; a lot of blood, sweat, and tears are flowing in the hallways.  But nothing worth achieving is easy, and there are a lot of smiles today as we finally take the wraps off this.</p>
<p>ProSphere 1.0 is just the first step.  It’s your turn now.  Check it out.  Tell us what we’re doing right, what we’re doing wrong.  Help us take this to the next level.  I promise I’ll listen and do my part to make sure your voice is heard.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2011/07/14/introducing-prosphere/">Introducing ProSphere</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2011/07/14/introducing-prosphere/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ask a stupid question &#8230;</title>
		<link>http://www.davidkspencer.com/2010/04/08/ask-a-stupid-question/</link>
		<comments>http://www.davidkspencer.com/2010/04/08/ask-a-stupid-question/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 16:16:46 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=588</guid>
		<description><![CDATA[&#8230; get an important answer. Two colleagues of mine demonstrated to me today a habit which, on its surface, can be difficult to understand.  They really enjoy asking the stupid questions.  We&#8217;ll be in a design review, looking at a fairly straightforward diagram showing a few components interacting, and they&#8217;ll ask what customer use case [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/04/08/ask-a-stupid-question/">Ask a stupid question &#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>&#8230; get an important answer.</p>
<p>Two colleagues of mine demonstrated to me today a habit which, on its surface, can be difficult to understand.  They really enjoy asking the stupid questions.  We&#8217;ll be in a design review, looking at a fairly straightforward diagram showing a few components interacting, and they&#8217;ll ask what customer use case this represents and what those components are.</p>
<p>We all know the answer.  It&#8217;s fairly obvious. But the person writing the design didn&#8217;t label the components and left it open to interpretation.</p>
<p>My first instinct was to jump in, say it wasn&#8217;t important, that we needed to get to the guts of the design to review it.  I was wrong.</p>
<p><span id="more-588"></span></p>
<p>The benefit of asking the stupid question is that the stupid answer you get just might not be the one you expect.  It&#8217;s so obvious that everyone just assumes their answer is right.  They probably are.  But when five people each feel that way, and nobody makes sure all five are thinking of the same stupid answer, you&#8217;re probably in a situation where there is more than one stupid answer out there.  And as work progresses, more and more assumptions get built atop those shaky foundations, until someone finally figures out the flaw in communication.</p>
<p>By then, everyone is so invested in their own interpretation that there are bound to be difficult conflicts, messy redesigns, and more.</p>
<p>So ask the question up front.  Don&#8217;t be afraid to look dumb.  One of these times you&#8217;ll spot the problem a month early and it&#8217;ll all be worth it.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/04/08/ask-a-stupid-question/">Ask a stupid question &#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2010/04/08/ask-a-stupid-question/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iWorry about our progammers</title>
		<link>http://www.davidkspencer.com/2010/03/08/iworry-about-our-progammers/</link>
		<comments>http://www.davidkspencer.com/2010/03/08/iworry-about-our-progammers/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 13:00:14 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=580</guid>
		<description><![CDATA[My first desktop PC didn&#8217;t much resemble the PCs of today.  It was a TRS-80 Color Computer II, with 16K of RAM, a single cartridge slot, and two joystick ports.  If you&#8217;re like me, you also had a computer like this one &#8212; maybe a TI-99/4A, a Commodore 64, or a PET.  Chances are, it [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/03/08/iworry-about-our-progammers/">iWorry about our progammers</a></p>
]]></description>
			<content:encoded><![CDATA[<p>My first desktop PC didn&#8217;t much resemble the PCs of today.  It was a TRS-80 Color Computer II, with 16K of RAM, a single cartridge slot, and two joystick ports.  If you&#8217;re like me, you also had a computer like this one &#8212; maybe a TI-99/4A, a Commodore 64, or a PET.  Chances are, it booted into an interpreted BASIC command line prompt.  For many of us writing software today, our first experiments in software development came from looking at the prompt and wondering, &#8220;What can I do here?&#8221;</p>
<p><a title="Me back in 1984 with my Commodore Vic 20" href="http://www.flickr.com/photos/27315689@N00/459020985/" target="_blank"><img class="center frame" src="http://farm1.static.flickr.com/241/459020985_07d4f48b2f_m.jpg" border="0" alt="Me back in 1984 with my Commodore Vic 20" /></a><br />
<small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://www.davidkspencer.com/blog/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Extra Ketchup" href="http://www.flickr.com/photos/27315689@N00/459020985/" target="_blank">Extra Ketchup</a>.  This is not me &#8230; but it practically could be!</small></p>
<p><span id="more-580"></span></p>
<p>I saw Google last week proclaiming the <a href="http://www.siliconrepublic.com/news/article/15446/business/in-three-years-desktops-will-be-irrelevant-google-sales-chief">impending death of the desktop computer</a>, in favor of ubiquitous mobile computing with computing power provided by the cloud.  I see more people replacing their gaming PCs with consoles, their family desktops with notepads, and their notepads with iPads and iPhones.</p>
<p>As a geek who loves gadgets, I&#8217;m not opposed to this.  I love progress, and I love the shiny new technology we have access to now.  But I can&#8217;t help but look at what happens when a young kid first boots up a device like this.</p>
<p>Imagine a world where the iPad is the ubiquitous platform of choice.  Where do you get applications for your iPad?  From one vendor: Apple.  How do you write an application for your iPad?  You ask Apple for permission.  You apply to be a developer, ponying up $99 a year to do so.  You buy the specific hardware they support, so you can develop and test.  You learn their proprietary SDK, write something, and then want to share it with your friends.  How do you do that?  You ask permission again, before they&#8217;ll put your software on their store.</p>
<p>These are not huge barriers to people who seriously want to develop iPhone or iPad software, as demonstrated by the 100,000+ applications currently available for download.  But it&#8217;s a moderate barrier to the hobbyist, and an insurmountable one to the middle-school kid with a dream and some spare time, and a further insurmountable one to the person who just wants to experiment and share with friends and has no desire to publish to the world.</p>
<p>I don&#8217;t want to make Apple look like the villain here.  Consumers are demanding easier to use devices that &#8220;just work&#8221; and companies like Apple, Sony, and Microsoft are stepping up.  But I have to wonder what impact this is going to have on the future generation of software engineers who are being born today (or who were born 3 to 5 years ago).  Will we have a generation of people who are expert users but have no inclination to build?  Or will the definition of &#8220;build&#8221; change in some way?</p>
<p><em>(Thanks to <a href="http://surranet.blogspot.com/">Michael Surran</a> for the completely awesome photo on flickr which I am using in this post.  His use of the <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons </a>license has made it possible for me to show you exactly the image I wanted for this post with a clean conscience.)</em></p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/03/08/iworry-about-our-progammers/">iWorry about our progammers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2010/03/08/iworry-about-our-progammers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EDN puts its money where its mouth is</title>
		<link>http://www.davidkspencer.com/2010/02/24/edn-puts-its-money-where-its-mouth-is/</link>
		<comments>http://www.davidkspencer.com/2010/02/24/edn-puts-its-money-where-its-mouth-is/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 13:49:07 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[EMC]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=578</guid>
		<description><![CDATA[I got a great email last week from my colleague Susan Shapiro, who works with the EMC Community Network.  The EDN (EMC Developer Network) is organizing a coding challenge for EMC World 2010, with a respectable amount of prize money ($25K total split among several prizes) at stake.  Being the self-centered guy I am, I [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/02/24/edn-puts-its-money-where-its-mouth-is/">EDN puts its money where its mouth is</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I got a great email last week from my colleague Susan Shapiro, who works with the EMC Community Network.  The <a href="https://community.emc.com/community/edn">EDN</a> (EMC Developer Network) is organizing a coding challenge for EMC World 2010, with a respectable amount of prize money ($25K total split among several prizes) at stake.  Being the self-centered guy I am, I immediately confirmed that EMC employees were eligible (they are, but only for one of the prizes) before letting myself get excited.</p>
<p>The concept: write a project where multiple EMC developer technologies can be used in a single program.  Bonus points for incorporating other online technologies.  Win money and fame and the adoration of the world.</p>
<p>I&#8217;m waiting for the detailed T&amp;C, but you can read up more on it <a href="http://bit.ly/9Sxbx1">here</a>.  <a href="http://stevetodd.typepad.com/my_weblog/2009/05/15-minutes-of-innovation-break-the-tablets.html">Innovation through contest</a> is something EMC has tinkered with quite a bit, as you may have read on Steve Todd&#8217;s blog last year.</p>
<p>Definitely check out the link for more info. I&#8217;m hoping I can find some time in between all my &#8220;real work&#8221; to put a couple of these tools through their paces.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/02/24/edn-puts-its-money-where-its-mouth-is/">EDN puts its money where its mouth is</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2010/02/24/edn-puts-its-money-where-its-mouth-is/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simplicity is a virtue</title>
		<link>http://www.davidkspencer.com/2010/02/18/simplicity-is-a-virtue/</link>
		<comments>http://www.davidkspencer.com/2010/02/18/simplicity-is-a-virtue/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 14:31:25 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=576</guid>
		<description><![CDATA[You&#8217;ve probably heard a variation on this statement from a software developer, made in jest, but containing a nugget of sincerity: It was hard to create, it should be hard to use (or maintain). Basically, we worked hard to get this stuff done and we expect you as a user or future maintainer to put [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/02/18/simplicity-is-a-virtue/">Simplicity is a virtue</a></p>
]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ve probably heard a variation on this statement from a software developer, made in jest, but containing a nugget of sincerity:</p>
<blockquote><p>It was hard to create, it should be hard to use (or maintain).</p></blockquote>
<p>Basically, we worked hard to get this stuff done and we expect you as a user or future maintainer to put the same effort into it.  After all, it took many man-years to write the software, it&#8217;s not too much to expect you to spend a few weeks reading manuals and understanding it before you start complaining that it&#8217;s hard to use.</p>
<p>As Paul Young <a href="http://www.paulmyoung.net/2010/02/mom-microwave-and-tree-chippers.html">recently wrote</a>, though, imagine if wood-chippers took that approach.</p>
<p>Imagine if an author did?  &#8220;It took me years to write this novel, you should have to do some research before you read it.&#8221;</p>
<p><a href="http://en.wikipedia.org/wiki/Gravity%27s_Rainbow">Some do</a>, I guess.  I&#8217;ve read a few novels that require major work to get through.  Sometimes the end result is even worth the work.  But as my fiction writing friends tell me, in general you don&#8217;t want your readers to be thinking about your <strong>writing</strong>, you want them thinking about your <strong>story</strong>.  Similarly, you don&#8217;t want your users thinking about your software <strong>design</strong>, you just want them thinking about the <strong>task</strong> your software enables.</p>
<p>I feel the same way about maintaining and testing software.  We want developers thinking about the code, not about the way you wrote it.  You don&#8217;t want someone looking at your code, peering at it for a few minutes, and then saying, &#8220;Oh, I get it.  Wow, that&#8217;s clever.&#8221;</p>
<p>There&#8217;s a famous quote attributed to a half-dozen different writers (and perhaps originated by Blaise Pascal), that says, basically, &#8220;I am sorry I wrote such a lengthy letter; I did not have time to write a short one.&#8221;  It takes time to create simple, elegant software.  When we force the issue and compress the time spent on a project, you end up with complex code and complex user interactions.  We should consider this a problem, not a point of pride.</p>
<p>When we present some difficult software to our users, we should apologize to them.  &#8220;I&#8217;m sorry this UI is so complex.  I didn&#8217;t have time to make it easier.&#8221;  Instead, we make them feel guilty.  &#8220;Ah, perhaps you should have taken the training,&#8221; or read the manual more carefully, or attended our seminar.</p>
<p>Think about the people on your team, and ask yourself if they &#8220;get&#8221; this concept.  Realize, that if they don&#8217;t, you&#8217;re eventually going to lose your market share to a competitor who does.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/02/18/simplicity-is-a-virtue/">Simplicity is a virtue</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2010/02/18/simplicity-is-a-virtue/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Doing the wrong thing for the right reason</title>
		<link>http://www.davidkspencer.com/2010/01/19/doing-the-wrong-thing-for-the-right-reason/</link>
		<comments>http://www.davidkspencer.com/2010/01/19/doing-the-wrong-thing-for-the-right-reason/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:06:55 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=559</guid>
		<description><![CDATA[I&#8217;ve written before about how we can&#8217;t afford to be religious about our science.  I&#8217;m seeing that situation in a new light based on some experiences while working on our Next Big Thing here in Ionix Storage Resource Management. We&#8217;ve staffed this team with people who have worked on successful, shipping products.  Many of them [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/01/19/doing-the-wrong-thing-for-the-right-reason/">Doing the wrong thing for the right reason</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written before about how we can&#8217;t afford to be <a href="http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/">religious</a> about our science.  I&#8217;m seeing that situation in a new light based on some experiences while working on our <em>Next Big Thing</em> here in Ionix Storage Resource Management.</p>
<p><span id="more-559"></span></p>
<p>We&#8217;ve staffed this team with people who have worked on successful, shipping products.  Many of them &#8220;grew up&#8221; in a world where certain things (like, say, continuous integration, or test-driven development) were unheard of.  There are inevitable growing pains as we push for certain behaviors and results.  Sometimes there&#8217;s a failure in the software pipeline and the answer from the responsible party is &#8220;This wouldn&#8217;t have happened if we had XYZ in place,&#8221; where XYZ is a practice from some product they used to work on.</p>
<p>As a technical lead, it&#8217;s my responsibility to try and educate people and raise the quality of everyone&#8217;s work.  I&#8217;m supposed to push for the best practices we all need to understand and employ.  But I also need to make sure a product goes out the door.  So when I&#8217;m in a closed-door meeting with senior management and they say, &#8220;Do you think we should put XYZ in place?&#8221; I have to stop and ponder.</p>
<p>The answer, in my heart, is <strong>no</strong>.  Take away the crutch, make the team fail a few times.  People learn from failure.  In a few months they will adapt and be better for it (or they will have gotten fed up and left).</p>
<p>The answer, in my brain, is <strong>yes</strong>.  I know that without this crutch, they will be less productive for a few months.  And I know where we&#8217;re supposed to be in a few months, and I&#8217;m not sure we can get there without the crutch.</p>
<p>I tell management both these answers.  They ask me what we should do.</p>
<p>And this is why our jobs are hard.</p>
<p><em>(I usually end up leaning towards the practical side here, and hope that we can educate in parallel.  But I&#8217;m always left wondering if I should be more extremist&#8230;.)</em></p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2010/01/19/doing-the-wrong-thing-for-the-right-reason/">Doing the wrong thing for the right reason</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2010/01/19/doing-the-wrong-thing-for-the-right-reason/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep your dogma leashed</title>
		<link>http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/</link>
		<comments>http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 13:29:58 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=549</guid>
		<description><![CDATA[If you look up dogma on wikipedia today, you&#8217;ll see this phrase as part of the definition: &#8220;It is not to be questioned.&#8221;  Software developers are at their core scientists, however, and scientists are defined by the fact that they ask questions.  So it should be obvious that there&#8217;s no room for dogma in your [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/">Keep your dogma leashed</a></p>
]]></description>
			<content:encoded><![CDATA[<p>If you look up dogma on wikipedia today, you&#8217;ll see this phrase as part of the definition: &#8220;It is not to be questioned.&#8221;  Software developers are at their core <strong>scientists</strong>, however, and scientists are defined by the fact that they ask questions.  So it should be obvious that there&#8217;s no room for dogma in your software group.  And yet, go down the hall to a few of your more senior developers and ask them about coding standards, development practices, or even IDE preference.  Good luck.</p>
<p><span id="more-549"></span></p>
<p>My organization made a recent decision to formalize the technical lead role a little bit within their scrum teams.  We did it because we felt there was a gap not being filled, and we felt like our ability to execute and ship a product was being impacted.  A colleague of mine forwarded me an <a href="http://www.infoq.com/news/2009/12/agile-team-lead">article</a> about the agile &#8220;team lead&#8221; role, and I was more interested in the comments than the actual text &#8212; people discussing whether the role was strictly agile or not.</p>
<p><strong>I&#8217;m sorry, but I could not care less.</strong></p>
<p>I&#8217;m reminded of a <a href="http://www.leadingagile.com/2009/12/adopting-agile-isnt-point.html">recent post</a> by Mike Cottmeyer (who, by the way, gets paid to help companies adapt agile) where he argues that adopting agile isn&#8217;t the point.  The point is to <strong>add value to the business</strong>.</p>
<p>The point isn&#8217;t to play with new technology, to be open-source, to write tests, to measure coverage, or to adhere to standards.  We do these things when the time is right because we believe (<strong>based on evidence</strong>) that doing those things will lead to specific results.  Scientists can&#8217;t afford to be religious about their science, and computer science is no exception.  Don&#8217;t stop asking questions.  Don&#8217;t stop challenging your leaders, your preachers, your prophets.  If you feel like your practices are set by robed oracles atop a mountaintop, something is wrong with your organization.  Now&#8217;s as good a time as any to push back and find out why.</p>
<p>Because in the end, <strong>we&#8217;re here to sell software that delights our customers and keeps us in business</strong>.  Everything else is peripheral.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/">Keep your dogma leashed</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2009/12/08/keep-your-dogma-leashed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working in the moment</title>
		<link>http://www.davidkspencer.com/2009/10/27/working-in-the-moment/</link>
		<comments>http://www.davidkspencer.com/2009/10/27/working-in-the-moment/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 12:41:28 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Corporate]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=530</guid>
		<description><![CDATA[I&#8217;ve been thinking a bit more about the topic of my previous post (deadlines forcing decisions and focus), and comparing it to some other moments of high-energy, high-engagement, high-satisfaction productivity over the years.  I realized there was a factor I hadn&#8217;t really considered before, and that was the capacity of the task to force all [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/10/27/working-in-the-moment/">Working in the moment</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking a bit more about the topic of my previous post (<a href="http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/">deadlines</a> forcing decisions and focus), and comparing it to some other moments of high-energy, high-engagement, high-satisfaction productivity over the years.  I realized there was a factor I hadn&#8217;t really considered before, and that was the capacity of the task to force all participants to <strong>remain in the moment</strong>.</p>
<p><span id="more-530"></span><br />
For example, contrast these two anecdotes:</p>
<blockquote><p><strong>Ben</strong> knows his daughter is home sick from school today, and he&#8217;s worried about her.  He keeps getting a weird exception coming from apache and he can&#8217;t figure out why.  He&#8217;s got half the team in his cube, and as soon as they&#8217;re done he knows he can go home and check on his daughter.  But no matter what, nothing works.  It takes him until 9 PM, and it ends up being something really stupid and obvious.  He&#8217;s mad at himself for missing it, and mad at the team for not finding it.  He leaves frustrated and angry.</p></blockquote>
<blockquote><p><strong>Jill</strong> has no plans tonight, which is good because she keeps running into problems with the local maven repository.  She&#8217;s got half the team in her office trying to figure out why.  5 PM comes and goes, and the team stays on the task.  While they&#8217;re swapping stories over cold pizza at 9 PM someone spots a stupid configuration problem.  They all laugh about it, promise not to tell anyone how simple it was to solve, and go their separate ways.</p></blockquote>
<p>Two years from now, both these developers will remember those nights.  While the end result was <strong>exactly the same</strong> in both situations, one team will bond closer through the hardship while the other will not.  One developer will think of it somewhat fondly, the other as a time when his work kept him from being where he needed to be.</p>
<p>Jill had the freedom to be in the moment, while Ben&#8217;s attention was elsewhere.  This isn&#8217;t Ben&#8217;s fault, or a credit to Jill.  It&#8217;s just unhappy circumstance.  How many of us have been in situations like both those?  I remember staying late into the evening trying to fix a configuration problem for a ControlCenter demo at EMC World &#8212; it was annoying and frustrating but in total the team that stayed to fix it grew closer and remembers it with a chuckle.  Why?  We were miles from home, had nowhere else to be, and had the freedom to attack the problem fully in the moment.</p>
<p>I&#8217;m not suggesting you hire only mid-20s kids with no families who will lose themselves in their work.  But it&#8217;s important to recognize the reasons why the <strong>same circumstances</strong> can either build a team <strong>up</strong> or tear it <strong>down</strong>.  I&#8217;m also not suggesting (by far!) that managers manufacture artificial barriers for teams to overcome together.  Software development is full of enough pitfalls that the team will stumble into these situations without your help!</p>
<p>So the question becomes: what can a manager, a technical leader, or a team member do to help the team operate in the moment?  How can we capitalize on those moments when they arrive?  How much does the <strong>attitude of the leaders present</strong> (and remember: we expect leadership at all levels here &#8230; directors and interns share this responsibility!) shape the way the team perceives a difficult moment?</p>
<p>More than I think people realize.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/10/27/working-in-the-moment/">Working in the moment</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2009/10/27/working-in-the-moment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In praise of deadlines</title>
		<link>http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/</link>
		<comments>http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 13:07:39 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.davidkspencer.com/?p=527</guid>
		<description><![CDATA[A pressing deadline is a powerful thing.  Without a deadline, ideas can drown each other competing for supremacy in a sea of data.  People use and abuse their own value functions to find fault with any possible approach.  But faced with a deadline, thinkers break out of analysis paralysis and become doers.  Of course, an [...]<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/">In praise of deadlines</a></p>
]]></description>
			<content:encoded><![CDATA[<p>A pressing deadline is a powerful thing.  Without a deadline, ideas can drown each other competing for supremacy in a sea of data.  People use and abuse their own value functions to find fault with any possible approach.  But faced with a deadline, <strong>thinkers</strong> break out of analysis paralysis and become <strong>doers</strong>.  Of course, an unrealistic deadline just causes panic and sloppy work as people scramble to meet impossible goals and push themselves deep into technical debt.<br />
<span id="more-527"></span><br />
I&#8217;ve long felt that iterative development (like <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile</a>/<a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a>) is worth exploring for just this reason.  By forcing teams to march against regularly placed deadlines while empowering them to self-organize in the context of those deadlines, you harness the deadline&#8217;s power repeatedly during a project&#8217;s life.</p>
<p>I recently had a chat with a senior developer working on a very difficult task, trying to achieve demonstrable results in a tight time frame.  I look at his workload and know he&#8217;s walking that fine line between &#8220;challenging&#8221; and &#8220;impossible.&#8221;  How did he describe its impact on his motivation, his engagement?  As <strong>the most fun he&#8217;d had at work in over 5 years</strong>.  And what was the last one?  Another crazy struggle, when a major scalability issue appeared late in a development cycle and teams were forced to come together and refactor major components with very little time to actually design and lots of pressure to actually produce.</p>
<p>Are software developers inherently broken, looking for painful exercises in futility?  I don&#8217;t think so.  I think if you look the tasks that push people to these heights of motivation you&#8217;ll find a few things in common:</p>
<ul>
<li>Well-defined success criteria</li>
<li>Insufficient time to enter analysis paralysis</li>
<li>Developers empowered to pursue their own ideas</li>
<li>Cooperation of close-knit and competent peers</li>
</ul>
<p>The question I can&#8217;t answer is whether people operating on those projects produce higher quality products.  It&#8217;s clear to me that they enjoy their work more, but is that enough?  Perhaps the ruthless attention to continuous integration you see at the heart of Agile/Scrum is a safety valve for that question.</p>
<p>This post is from: <a href="http://www.davidkspencer.com">Dave Talks Shop</a><br/><br/><a href="http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/">In praise of deadlines</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidkspencer.com/2009/10/20/in-praise-of-deadlines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

