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

<channel>
	<title>Technical Team Read</title>
	<atom:link href="http://philwheeler.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://philwheeler.wordpress.com</link>
	<description>Personal reflections on career development in the Information Technology industry</description>
	<lastBuildDate>Sun, 16 Jan 2011 09:13:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='philwheeler.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Technical Team Read</title>
		<link>http://philwheeler.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://philwheeler.wordpress.com/osd.xml" title="Technical Team Read" />
	<atom:link rel='hub' href='http://philwheeler.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Office Environments and Children&#8217;s TV &#8211; A Lesson</title>
		<link>http://philwheeler.wordpress.com/2011/01/15/office-environments-and-childrens-tv-a-lesson/</link>
		<comments>http://philwheeler.wordpress.com/2011/01/15/office-environments-and-childrens-tv-a-lesson/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 11:25:17 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[office-politics]]></category>
		<category><![CDATA[teamicide]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=89</guid>
		<description><![CDATA[Any parent of young children will tell you that your TV viewing habits change rather dramatically in the early years.  While the programming is not typically the most cerebral stuff on the airwaves, it nonetheless has its place and occasionally &#8211; very occasionally &#8211; it can make you think. I had one of those moments [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=89&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://philwheeler.files.wordpress.com/2011/01/kidstv_morph1.jpg"><img class="alignleft size-thumbnail wp-image-108" style="margin:0 .5em .5em 0;" title="Children's TV" src="http://philwheeler.files.wordpress.com/2011/01/kidstv_morph1.jpg?w=150&#038;h=126" alt="Morph" width="150" height="126" /></a>Any parent of young children will tell you that your TV viewing habits change rather dramatically in the early years.  While the programming is not typically the most cerebral stuff on the airwaves, it nonetheless has its place and occasionally &#8211; very occasionally &#8211; it can make you think.</p>
<p>I had one of those moments this week while overhearing part of an episode of <a title="Go on. If you really have to.  I'll wait." href="http://www.citv.co.uk/static/engie/index.html" target="_blank">Engie Benjy</a>.  In it, two vehicles were having a race.  They were both trying their absolute best but eventually tied.  The vehicle owners cheered and congratulated both vehicles saying, &#8220;Well done you two. You&#8217;re both winners!&#8221;.</p>
<p>Ordinarily I&#8217;m not a big fan of that sentiment; it&#8217;s so desperately overused on childrens&#8217; TV programming that, as an adult, one can become very cynical about the idea.  It makes me cringe.  The real world doesn&#8217;t operate that way and that message, in my view, sets up an unrealistic expectation in children of how things work.  In school sports, exams or employment opportunities for example, we don&#8217;t all get to be winners.  Someone comes in first place and others miss out.  That&#8217;s just how life is.</p>
<p>But what about the office environment and corporate culture?  Is it reasonable to expect that there should be one winner and one or more losers?  Do we have to accept that office politics and judicious use of communication is just a fact of life in business?  I would argue that in a company (or at least on a team) there is an over-arching common goal that is shared among all staff.  While it might sound idealistic, working together towards a shared goal not only means that goal has the greatest chance of success, but ultimately will ensure everyone involved comes away a winner.</p>
<h2>Corporate Culture and Office Politics</h2>
<p>It should be noted that not all office politics is bad.  The process of building a community; making it healthy, cohesive and satisfying for its participants can be as much a political feat as that associated with negative connotations.  The difference between pathological and healthy, constructive politics is an important distinction to make.  To quote DeMarco and Lister:</p>
<p>An organization that succeeds in building a satisfying community tends to keep its people. When the sense of community is strong enough, no one wants to leave. The investment made in human capital is thus retained, and upper management finds itself willing to invest more. When the company invests more in its people, the people perform better and feel better about themselves and about their company. This makes them still less likely to move on. The positive reinforcement here is all to the good.</p>
<p>Individuals and teams alike are motivated and catalysed by the feeling of accomplishment; that delivering a quality product or result is worthwhile.  You can take pride in the workmanship or style in which that result was achieved.  If the sense of achievement and common purpose is removed through pathological politics, everyone very quickly begins to see that hard work and dedication &#8211; while being a nice organisational virtue &#8211; is not as important as butt-covering and protectionism.</p>
<p>If a team is assured that extra hours at the office will be well-rewarded and recognised if it means that a product can be delivered on or ahead of schedule they will likely put in the effort needed to achieve that goal.  This will be at the expense of time at home with the kids, out with friends or doing the sorts of things that give people respite in their own personal time and allow them to &#8220;recharge the batteries&#8221;.  Now assume that, having delivered the aforementioned product, the team is told that the recognition or appreciation promised won&#8217;t actually be in the form of a bonus, or won&#8217;t be an elevated pay rate for the additional hours, or will be merely remembered when the next round of performance reviews are due.  The motivation, enthusiasm and dedication of that team is immediately stripped and replaced with resentment.</p>
<p>If a senior manager is concerned that the team will collectively argue their case for, say, a promised day off or bonus, and decides to take each individual aside and explain that &#8220;we didn&#8217;t actually give specific assurances and you can either take what we&#8217;re offering or leave it&#8221;, politics come into full play.  Each individual on the team feels pressured and intimidated without any support from his peers.  People aren&#8217;t stupid.  They can see the divide-and-conquer approach being taken in the relative privacy of the manager&#8217;s office and react by becoming defensive, resentful, angry and disloyal.</p>
<p><a href="http://philwheeler.files.wordpress.com/2011/01/calvin_and_hobbes1.png"><img class="alignnone size-medium wp-image-110" title="Principles" src="http://philwheeler.files.wordpress.com/2011/01/calvin_and_hobbes1.png?w=300&#038;h=95" alt="Calvin and Hobbes - Principles" width="300" height="95" /></a></p>
<p>People are by nature reasonably perceptive creatures and will interpret what they view as being unfair, unilateral or otherwise negative changes or initiatives (rightly or wrongly) as deliberate acts; thereby reinforcing a feeling that they need to guard or actively work against that person or their efforts.</p>
<p>Successful change comes from open and honest communication, genuine attempts to share responsibility and credit and by allowing each person on the team to make equal, worthwhile contributions to that team&#8217;s success.  A manager&#8217;s role is to motivate change, create vision and develop political support (getting the team&#8217;s &#8220;buy-in&#8221;) even before any transition occurs.  If a team feels excluded or disempowered, the task becomes an &#8220;us-and-them&#8221; issue and no matter how well-intentioned any project, idea or goal is, it will at best be a struggle to achieve as individuals work to achieve their own needs; or at worst actively work against the goal becauses they feel so removed from the decision-making process that affected them.</p>
<p>Office Politics is totally unavoidable in the workplace, but it can be a force for good so that everyone wins if all members of the team &#8211; at all levels of the hierarchy &#8211; recognise the contribution they each make and actively work together to achieve those goals.  Maybe my reaction to that children&#8217;s TV show was just me projecting my resentment that life wasn&#8217;t so optimistic and inclusive in more companies, in which case maybe I need to take steps to see if the relationships and communication within my wider team is improved to the point where everyone&#8217;s main goal is to help each other succeed above all else.  Ultimately, isn&#8217;t that the best option to make sure we&#8217;re all winners?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=89&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2011/01/15/office-environments-and-childrens-tv-a-lesson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2011/01/kidstv_morph1.jpg?w=150" medium="image">
			<media:title type="html">Children's TV</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2011/01/calvin_and_hobbes1.png?w=300" medium="image">
			<media:title type="html">Principles</media:title>
		</media:content>
	</item>
		<item>
		<title>X Theory Management</title>
		<link>http://philwheeler.wordpress.com/2010/11/17/x-theory-management/</link>
		<comments>http://philwheeler.wordpress.com/2010/11/17/x-theory-management/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 23:25:25 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[bully]]></category>
		<category><![CDATA[defensive-management]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[teamicide]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/2010/11/17/x-theory-management/</guid>
		<description><![CDATA[I was recently given an account from a friend that reminded me of an article I read by Esther Derby on Bully Bosses.  Esther&#8217;s article paints a very grim of some of the worse-case situations employees might find themselves in: abusive, yelling, coercive or threatening managers who for whatever reason feel they need to exert [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=98&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_100" class="wp-caption alignleft" style="width: 172px"><img class="size-full wp-image-100 " title="Suspicion" src="http://philwheeler.files.wordpress.com/2010/11/suspicion.jpg?w=630" alt="Suspicious businessman"   /><p class="wp-caption-text">Suspicion</p></div>
<p>I was recently given an account from a friend that reminded me of an article I read by <a href="http://www.estherderby.com/category/insights" target="_blank">Esther Derby</a> on <a href="http://www.estherderby.com/2010/11/bully-boss-2.html" target="_blank">Bully Bosses</a>.  Esther&#8217;s article paints a very grim of some of the worse-case situations employees might find themselves in: abusive, yelling, coercive or threatening managers who for whatever reason feel they need to exert authority and control over their staff.</p>
<p>The case I heard differed considerably from these extremes &#8211; which I&#8217;ve had the good fortune to have never experienced &#8211; but still fits into the Bully Boss category: the defensive manager.</p>
<h3>Conservative Defensive Management</h3>
<p>Defensive Management is a style coined by Tim Lister and Tom DeMarco in their very excellent book, &#8220;<a title="Hard to find, but worth a read." href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439" target="_blank">Peopleware &#8211; Productive Projects and Teams</a>&#8221; (Dorset House, 2nd ed. 1999), which assumes that your staff are generally incompetent or mistake-prone.  Staff can&#8217;t be trusted to make the right decisions and their errors will reflect on you.  Only your judgement is competent; anyone else&#8217;s is supect.  Therefore you should vet and approve any and all important decisions before they are put in place.</p>
<p>Conservative Management is a style I&#8217;ve seen particularly prevalently in the public sector and in the finance sector.  These industries are by nature very risk and change averse and prefer to stick to well-established historical practices regardless of what might be happening in today&#8217;s market.  The management of these companies is often of a similar vein, with a career upbringing in strict heirarchy and an habitual acquiescence to upper management decisions.  An old-school management style of &#8220;if I say to you that the walls might look better painted green, you say &#8216;What shade?&#8217;&#8221;.  I could be wrong, but this type of disciplined management style is generally only found today in the armed forces.</p>
<p>Put these two together and you have a manager who expects all staff to conform to his way of thinking and agree unquestioningly with his decisions, who doesn&#8217;t trust his staff with any meaningful autonomy or authority and who needs to be involved in every decision.  This type of manager can be even harder to work under if he is prone to dark moods or creation of arbitrary deadlines that must be delivered.  This is a form of micro-management, but done in an intimidating way such that staff are afraid (or at least reluctant) to speak up or disagree.</p>
<p>As DeMarco and Lister argue,</p>
<blockquote><p>the only freedom that has any meaning is the freedom to proceed differently from the way your manager would have proceeded.</p></blockquote>
<p>Staff who feel untrusted, coerced and insignificant are less inclined to form together and work well as a team and are less likely to feel motivated at their work generally.  Productivity can only inevitably suffer as does innovation and growth.</p>
<p>This type of Bully Boss is something of a unique variety because he may be cheerful and approachable for much of the time, but as soon as something happens that doesn&#8217;t fit with his expectations, he can become grumpy and condescending, asserting his view of the way things should have been done and making people feel small and guilty.  Employees who have this type of manager typically adopt one of two coping mechanisms: they tolerate the behaviour and just try to get on with each work day, or they leave.  Esther&#8217;s article (above) lists other effects including stress, information hiding and a lack of engagement (a signficant one in my view).</p>
<p>Read Esther&#8217;s article (or better &#8211; subscribe to her blog!) and consider some of the coping strategies she suggests.  Have you had your own experience with a particular personality type in your direct management?  Tell me about it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=98&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/11/17/x-theory-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/11/suspicion.jpg" medium="image">
			<media:title type="html">Suspicion</media:title>
		</media:content>
	</item>
		<item>
		<title>Developing Your Team Standards</title>
		<link>http://philwheeler.wordpress.com/2010/09/05/developing-your-team-standards/</link>
		<comments>http://philwheeler.wordpress.com/2010/09/05/developing-your-team-standards/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 11:55:53 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Process and Policy]]></category>
		<category><![CDATA[Technical Team Lead]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">https://philwheeler.wordpress.com/?p=94</guid>
		<description><![CDATA[One of the most common chores in any development team is establishing an agreed set of standards for use within the wider development group.  Typically, the team lead is responsible for either contributing directly to – if not solely responsible for – the authoring of a standards document that defines how your deliverables are shaped. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=94&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the most common chores in any development team is establishing an agreed set of standards for use within the wider development group.  Typically, the team lead is responsible for either contributing directly to – if not solely responsible for – the authoring of a standards document that defines how your deliverables are shaped.</p>
<p>The most common scenarios I’ve seen are when a new Technical Team Lead has been appointed to the role (or been press-ganged into it) and a hospital pass is handed to that lucky candidate to own the task of getting the standards up to date, implementing them, or in more extreme cases, writing them from scratch.</p>
<p>I’ve found myself in this situation on more than one occasion and it is a completely overwhelming prospect when there is little or nothing to start from.  In this post, I will give a quick run-down of the key things you should include in your standards documentation and provide you with a working sample that you can adapt and improve as needed.</p>
<h2>Starting From Scratch</h2>
<p>Starting from scratch is probably the most intimidating position to be in.  You will often be lumped with this problem if the team is new, or if you are new to the team and no one has bothered to get around to it yet.</p>
<p>If you need to build out your standards from the very beginning, here are a few questions and considerations you need to address:</p>
<ul>
<li><strong>Architecture:</strong> Classic or SOA? What layers should you generally have (e.g. presentation, data access, business logic, security, etc.)?  What clients does your business usually target (e.g. thin, fat, mobile)?  What integration concerns do you need to standardise?</li>
<li><strong>Technologies:</strong> What code is accepted / disapproved? What data storage and retrieval technologies should you use?  What scripting frameworks?  What languages?</li>
<li><strong>Tools:</strong> What testing frameworks should you adopt?  What about mocking? What version control systems and policies do you have in place? Continuous Integration?</li>
<li><strong>Documentation &amp; Support:</strong> What are your minimum documentation expectations? How should your code be commented / documented?  Do you use documentation generators (e.g. Sandcastle, Live Documenter)?  What are your peer review expectations?  Who needs to be considered at handover when coding is complete and ready for delivery?</li>
</ul>
<h2>Updating Existing Standards</h2>
<p>Being tasked with updating your company’s existing standards is a much more problematic situation.  The existing standards may either have evolved or stagnated over time and may not, in their entirety at least, reflect the true nature of your current development landscape.</p>
<div id="attachment_95" class="wp-caption alignleft" style="width: 310px"><a href="http://philwheeler.files.wordpress.com/2010/09/standards-process.gif"><img class="size-medium wp-image-95" title="Standards Revision Process" src="http://philwheeler.files.wordpress.com/2010/09/standards-process.gif?w=300&#038;h=255" alt="Standards process" width="300" height="255" /></a><p class="wp-caption-text">Standards Review Process</p></div>
<p>The trouble is in the sorting of which content should remain, which should be modified and which should be removed altogether.  Start by identifying those standards that are completely obsolete or irrelevant to your current work; unsupported frameworks and languages, obsolete tools or unneeded documentation requirements.  Once this housekeeping task is taken care of, you can start on the more challenging part of adding new content in.  Pick your top problem area and define a workable approach to eliminate or minimise the impacts from that area.  After a couple of iterations, review how that standard is working and refine it.</p>
<p>When you feel that your team is operating well on this functional area, pick your next performance issue and repeat the process.</p>
<h2 style="clear:both;">Documentation Isn’t Standards</h2>
<p>It is quite common, especially in larger organisations, to have explicit provisions for various documents included as part of the team’s development standards.  Different people have different views on this topic, but my personal view is that documentation does not constitute a development standard; it is part of your process.</p>
<p>There are no doubt times when you need to supply a solution architecture document, design document or some other written artefact, but this is most often an internal requirement and does not affect how the actual product is designed and coded.  As mentioned before, unless it adds direct customer value, it isn’t really needed.</p>
<p>Your team may have some procedural requirement that outlines all the written material that is expected for a given deliverable, but this is effectively meta-content that only supplements the product – it doesn’t underpin it.</p>
<p><strong>Don’t standardise your documentation deliverables</strong> unless (and even here I’m not that convinced of the need) there is a direct customer benefit and the standard can be scaled to both small and large solutions.</p>
<h2>10 Commandments</h2>
<p>As a pretty good rule of thumb, your full standards document will probably grow and evolve to become something of a behemoth.  You can expect your new developers to read this a total of <strong>once</strong> while they are still</p>
<ol style="list-style-type:lower-alpha;">
<li>Full of enthusiasm about starting with a fresh new company and are eager to impress</li>
<li>Bored out of their brain while they ramp up their understanding of how your team works</li>
</ol>
<p>After this, you can expect your full standards document to be referred to in about one in every 100 cases.  This is normal (unless you run a code dictatorship, in which case you have bigger problems than whether your compliance rates are 100%).  It is because of this that you should have a standards 10 commandments list – preferably in soft copy (e.g. on your team’s SharePoint site or similar) that is easily found.  These ten commandments should summarise – in bullet form – as briefly as possible what your top ten minimum expectations are.</p>
<p>An example might be:</p>
<ol>
<li>Code must be checked in to version control at the end of each week <em>at a minimum</em> and <strong>must not break the build</strong>.</li>
<li>Unit tests must accompany all complex code and should ideally drive the design of the behaviours they test.</li>
<li>JQuery is to be used as the accepted JavaScript framework in all web applications.</li>
<li>Code should have full XML comments such that they are sufficiently descriptive when documentation is generated from it.</li>
<li>Hungarian notation will summon the four horsemen of the apocalypse and should therefore be avoided at every cost.</li>
<li>Never write from scratch in JavaScript that which can be found in a stable, supported jQuery plugin.</li>
<li>Include only those features that have been explicitly asked for by the customer.</li>
<li>Major features cannot be released without first passing a peer review.</li>
<li>Business values and variables should never be hard-coded under any circumstances.  Offenders will be exiled to supporting IE6 for the rest of eternity.</li>
<li>HTML should never be rendered explicitly through code.</li>
</ol>
<p>A list of key concerns such as this doesn’t undermine your larger standards document; nor does it replace it.  It is a quick reference so that developers can get an immediate grasp of your expectations around delivery.  If further information is needed, the standards document is where this should be found.</p>
<h2>Baseline Standards Document</h2>
<p>Having outlined all the considerations for writing a good standards document, it seems almost unfair to then expect you, dear reader, to then go off and write the whole thing from scratch.</p>
<p>Start by having a look at <a href="http://philwheeler.files.wordpress.com/2010/09/development-standards.docx">this development standards baseline</a> document and see whether it might serve as a good starting point for your own internal documentation.  This document is written with Microsoft .Net shops in mind – particularly web application producers.  However, it should be easily adaptable for any development situation.</p>
<p>Much of the content is taken from the <a title="Microsoft Coding Guidelines" rel="nofollow" href="http://msdn.microsoft.com/en-us/library/ms229042.aspx" target="_blank">Microsoft Coding Guidelines site</a>, with business-specific content prepended.</p>
<p>Hope this helps.  Enjoy.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=94&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/09/05/developing-your-team-standards/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/09/standards-process.gif?w=300" medium="image">
			<media:title type="html">Standards Revision Process</media:title>
		</media:content>
	</item>
		<item>
		<title>Overlooked Software Waste: Obsolete Code</title>
		<link>http://philwheeler.wordpress.com/2010/07/26/overlooked-software-waste-obsolete-code/</link>
		<comments>http://philwheeler.wordpress.com/2010/07/26/overlooked-software-waste-obsolete-code/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 11:42:27 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Lean Software]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[lean-software-development]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=76</guid>
		<description><![CDATA[Lean Software Management is an excellent approach for development teams who need to become more efficient and &#8211; more importantly &#8211; more mindful of their work system.  Even if you aren&#8217;t very familiar with Lean concepts, the underlying key principle is very simple: Eliminate Waste.  Waste, to use a simple definition is anything &#8211; anything [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=76&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://philwheeler.files.wordpress.com/2010/07/old-house.jpg"><img class="alignleft size-medium wp-image-80" style="padding-right:.8em;padding-bottom:1em;" title="Forgotten House" src="http://philwheeler.files.wordpress.com/2010/07/old-house.jpg?w=300&#038;h=200" alt="Decrepit old house" width="300" height="200" /></a>Lean Software Management is an excellent approach for development teams who need to become more efficient and &#8211; more importantly &#8211; more mindful of their work system.  Even if you aren&#8217;t very familiar with Lean concepts, the underlying key principle is very simple: Eliminate Waste.  Waste, to use a simple definition is anything &#8211; <em>anything</em> &#8211; that is not adding value for customers.</p>
<p>Within this waste category are seven subcategories:</p>
<ul>
<li>Partially done work</li>
<li>Extra processes</li>
<li>Extra features</li>
<li>Task switching</li>
<li>Waiting</li>
<li>Motion</li>
<li>Defects</li>
</ul>
<p>Partially done work, to quote Mary &amp; Tom Poppendieck&#8217;s book, <a title="Opens in a new window" href="http://amzn.to/9y9zUz" target="_blank">Lean Software Development: An Agile Toolkit</a>:</p>
<blockquote><p>Partially done software development has a tendency to become obsolete, and it gets in the way of other development that might need to be done.  [It] ties up resources in investments that have yet to yield results.</p></blockquote>
<p>If the partially done work never makes it into production, that effort is effectively written off, which carries a significant financial impact.</p>
<p>But what about software that&#8217;s already obsolete?</p>
<p>Without citing chapter and verse about <abbr title="Total Quality Management">TQM</abbr> and Quality Assurance processes, software carries an implicit total cost of ownership.  So often, we see a business or client who, on receipt of the product, smiles thankfully and never touches it again.  But software is like a house: it needs maintenance or it deteriorates.  The longer it is left to languish, the more holes begin appearing as time or technologies move on and extra features are gradually added over time, reducing its stability while increasing complexity.</p>
<p>So does obsolete code fall under the &#8220;partially done work&#8221; category?  In my view, close but it&#8217;s not quite a fit.  What about defects?</p>
<p>According to the aforementioned book:</p>
<blockquote><p>The amount of waste caused by a defect is the product of the defect impact and the time it goes undetected.</p></blockquote>
<p>This is probably a better fit for out-of-date code, but still doesn&#8217;t quite grasp at the insidious effect age has on software.  Even if no actual defects are encountered in a 6 or 7 year life span, the real implications aren&#8217;t felt until it&#8217;s time to upgrade the hardware or add that one last feature that requires a full rewrite.</p>
<p>I don&#8217;t believe it is any one person&#8217;s responsibility to ensure that software is regularly maintained and updated.  However as the team lead / development manager, you have a responsibility to clearly illustrate the costs and risks of aging code to the executive, client and any other decision makers.  Chances are this is the sort of topic that has been given approving nods and murmurs of agreement, followed by &#8220;we&#8217;ll definitely put that on our list of things to do&#8230; right after we finish the current backlog of work for this other project&#8221;.  Putting it off till tomorrow is a guaranteed way to ensure that it gets put off indefinitely.</p>
<p>Typically cost is another reason why investment is not made in existing applications or sites.  Too often the perception that &#8220;we just don&#8217;t have the budget for that right now&#8221; is an acceptable final word on software maintenance.  And that may well be true, but what is also left unappreciated is the rising cost to ultimately make the decision to upgrade.  The longer this is left, the harder to carry out it is.  Code ages, environments and operating systems come and go and complexity (or worse, convolutedness) increases as different developers come and go, adding their own style to the code base.  Saving a little money now neither does the developer, the client or the company any favours in the long term.</p>
<p>There are two (well, there are plenty but I&#8217;m picking on two) solutions to addressing obsolete software: push for (demand, even) a commitment from upper management to invest back into their software to ensure that the application doesn&#8217;t cost more to maintain (or even completely rewrite) in future.  Alternatively, just get on and start upgrading.  Explain that no more major enhancements can be facilitated until the code base is in a more stable and maintainable state.  One of these will probably meet more resistance than the other.  In my experience, it is often the former.  If a business has neglected an application to the point where it should almost be condemned, it also means they probably aren&#8217;t paying much attention to their software assets generally and are therefore either unwilling or unable to make good, cost and risk-based decisions.</p>
<p>Because ultimately, what is the alternative to fixing now or fixing later?  If your company is prepared to let its developers spend twice as much time (or more) adding new features or fixing bugs than they have to, perhaps it&#8217;s not the sort of company that has the sort of sustainable culture that allows a developer to thrive anyway.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=76&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/07/26/overlooked-software-waste-obsolete-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/07/old-house.jpg?w=300" medium="image">
			<media:title type="html">Forgotten House</media:title>
		</media:content>
	</item>
		<item>
		<title>Opening New Doors</title>
		<link>http://philwheeler.wordpress.com/2010/05/06/opening-new-doors/</link>
		<comments>http://philwheeler.wordpress.com/2010/05/06/opening-new-doors/#comments</comments>
		<pubDate>Thu, 06 May 2010 10:59:47 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Technical Team Lead]]></category>
		<category><![CDATA[career development]]></category>
		<category><![CDATA[personal development]]></category>
		<category><![CDATA[TTL]]></category>

		<guid isPermaLink="false">https://philwheeler.wordpress.com/2010/05/06/opening-new-doors/</guid>
		<description><![CDATA[At the end of this month I’ll be leaving my current job to start at a new company in a new town.  I’ll be taking up a position of Technical Lead for a finance company in Dunedin, New Zealand and will also be tasked with providing strategic technical input to the company’s service offerings. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=72&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="display:inline;border:0;margin:0 10px 0 0;" title="door1" src="http://philwheeler.files.wordpress.com/2010/05/door1.jpg?w=165&#038;h=244" border="0" alt="door1" width="165" height="244" align="left" /> At the end of this month I’ll be leaving my current job to start at a new company in a new town.  I’ll be taking up a position of Technical Lead for a finance company in Dunedin, New Zealand and will also be tasked with providing strategic technical input to the company’s service offerings.</p>
<p>This is the first time I’ve actually had the word “Lead” written into the role, which to many people might be quite alarming.  Why hasn’t this job function been formally recognised before?  The answer is that in all my previous roles, I have built a new team from scratch as a senior developer and the job description has never really adapted to reflect the broadened job functions.  This time I’m going into an established team and therefore a pre-defined recognised position.</p>
<p>Given that my job function will now require me to actively manage my team of developers (as opposed to the implicit “develop first, workload management second” expectation of my previous role), I feel I have finally reached a point where I need to place considerably more focus on my management skills.  This will be a challenge because, like many technical team leaders, I’ve had very limited chances to observe really good management in action.  Much of my line manager’s day-to-day activity has happened “behind closed doors”; precluding me from learning the tasks and challenges I need to understand.  To quote Esther Derby and Johanna Rothman, “poor managers create the illusion of productivity through busyness”.  Fairly or unfairly, my line managers’ productivity has often seemed illusory because it was actively hidden through unshared calendars, high levels of unavailability through absence and a lack of communication.  I should point out here that I am not suggesting my managers have always been unproductive.  Merely that I have not been given an opportunity to understand how they structure their workload to create an effective management style.</p>
<p>So I have elected to seek out an alternative source of management training in an excellent book called “<a title="If you're a team lead or junior manager, you need to buy this book!" href="http://www.pragprog.com/titles/rdbcd/behind-closed-doors" target="_blank">Behind Closed Doors</a>” by Esther Derby and Johanna Rothman.  As I progress through my new role, I will be writing here about my experiences in learning about the people and the work, building the team and its capabilities and identifying areas where my team can add real value to the business overall.  I’ll look at how the development team’s commitments and capacity are placed and how I can strengthen the team’s processes and throughput.</p>
<p>My next post (due at the end of June) will look at my first week on the job and the challenges I face in learning a new company’s products and services, my team’s role in facilitating those and how I ease myself and my team through the processes of Forming, Storming, Norming and Performing.</p>
<p>My hope is that these regular posts provide some valuable insight for others in similar situations.  I would be very surprised if I was the only one who found himself faced with these new challenges and hopefully I can pass on some experience and useful ideas to you along the way.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=72&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/05/06/opening-new-doors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/05/door1.jpg" medium="image">
			<media:title type="html">door1</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing Your Software Mortgage</title>
		<link>http://philwheeler.wordpress.com/2010/04/15/managing-your-software-mortgage/</link>
		<comments>http://philwheeler.wordpress.com/2010/04/15/managing-your-software-mortgage/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 12:31:48 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Technical Team Lead]]></category>
		<category><![CDATA[change-management]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[scope]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=59</guid>
		<description><![CDATA[Every developer has at one time or another faced the situation where the client asks for a &#8220;minor change&#8221; to the stated requirements.  Often this might be wording, layout or styling.  Other times it could be a functional change that appears to be a minor tweak but has far-reaching impacts that cause your household appliances [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=59&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_66" class="wp-caption alignleft" style="width: 310px"><a href="http://philwheeler.files.wordpress.com/2010/04/laptop-creditcard-2.jpg"><img class="size-medium wp-image-66" title="Technical Debt" src="http://philwheeler.files.wordpress.com/2010/04/laptop-creditcard-2.jpg?w=300&#038;h=199" alt="Your software credit" width="300" height="199" /></a><p class="wp-caption-text">Technical Debt</p></div>
<p>Every developer has at one time or another faced the situation where the client asks for a &#8220;minor change&#8221; to the stated requirements.  Often this might be wording, layout or styling.  Other times it could be a functional change that appears to be a minor tweak but has far-reaching impacts that cause your household appliances to eat your pets.</p>
<p>The difficulty (at least for me) arises when the client says something like</p>
<blockquote><p>It&#8217;s just a small change, isn&#8217;t it?  It should only take you an hour at most</p></blockquote>
<p>This always makes me uncomfortable because I want to do what the client&#8217;s asking (I like to please people) and from their point of view, they&#8217;re quite right that the change they&#8217;re asking for appears to be a very simple one.  However, I also know from experience that since they&#8217;re asking for this change during our release phase (i.e. we&#8217;ve done testing, UAT and pre-production) and it Just Can&#8217;t Wait it&#8217;s extremely risky and means that the testing I&#8217;ve done will effectively be rendered invalid and my version control will no longer reflect what&#8217;s being released into production.</p>
<p>So what are some good counter-arguments to clients who simply have to get that one last JavaScript animation on that text block?</p>
<h2>Your Software Mortgage</h2>
<p>Your Software Mortgage is the <a title="Opens in a new window" href="http://martinfowler.com/bliki/TechnicalDebt.html" target="_blank">technical debt</a> you incur whenever you have to &#8220;just get it done&#8221; at the expense of code quality or attention to process.  This might mean you don&#8217;t comment anything and just throw it together quick and dirty in time to meet your deadline or you don&#8217;t document this part for your handover &amp; support notes.  The upshot is of course that you&#8217;ll have to go back and do it right at some point.  The cost of having to do this instead of concentrating on your next iteration is your technical debt.</p>
<p>It&#8217;s not a 1:1 relationship either.  To get your code back to an acceptable standard (&#8220;paying your mortgage off&#8221;), you have to forego spending time on your next set of deliverables.  This means that not only is the client paying for deliverables that can&#8217;t be started yet, they&#8217;re also paying again for work that has already been delivered.  In order to make your debt repayments, you either need to deliver the next set of requirements early (ideally without incurring more debt) or negotiate a reduction in scope for the next release.</p>
<p>In order to evaluate the cost of technical debt against cost of lost business opportunities, the client usually benefits from seeing the impacts in dollar terms.  This is would be easy if it was actual money being discussed, but technical debt is a more abstract concept and therefore difficult to quantify.</p>
<h3>Quantifying Your Liquidity</h3>
<div id="attachment_65" class="wp-caption alignright" style="width: 160px"><a href="http://philwheeler.files.wordpress.com/2010/04/keyboard-bills.jpg"><img class="size-thumbnail wp-image-65" title="Bill Payments" src="http://philwheeler.files.wordpress.com/2010/04/keyboard-bills.jpg?w=150&#038;h=100" alt="Software Liquidity" width="150" height="100" /></a><p class="wp-caption-text">Liquidity determines your ability to pay your bills</p></div>
<p>Being able to put an actual figure on your <a title="Opens in a new window" href="http://en.wikipedia.org/wiki/Accounting_liquidity" target="_blank">liquidity</a> gives you more leverage to negotiate paying off your existing debt or avoid taking on new debt.</p>
<p>If your liquidity ratio is high (i.e. you have a high capacity to take on new debt), borrowing against your software quality will likely be less of a risk and you may feel more comfortable taking a quick and dirty approach in order to meet a deadline.  However if you have low liquidity (i.e. you&#8217;ve already taken on a lot of debt) there is considerably more risk in falling further behind on your mortgage payments.  As already mentioned, your code base must be maintained to keep a minimum standard of quality and supportability or you risk <a title="Opens in a new window" href="http://theagileexecutive.com/2009/09/29/technical-debt-on-your-balance-sheet/" target="_blank">Software Decay</a>:</p>
<blockquote><p>[Software Decay is] &#8230;code decayed to the point in which fixing anything in a hazardous  proposition – every fix is likely to break something else.</p></blockquote>
<p>So how do you calculate your liquidity?  Accounting has a number of different approaches, but most are more complex than the abstract idea of software management allows.  However, the <a title="Current  ratio" href="http://en.wikipedia.org/wiki/Current_ratio">current ratio</a>, which is the simplest  measure and is calculated by dividing the total current assets by the  total current liabilities can be loosely applied to code.</p>
<p>Depending on how granular you wanted to get with your reporting, you could either measure Lines of Code (LoC) or discrete functional blocks for a broader view.  Let&#8217;s assume you have exactly 100 separate methods that made up your application.  If your latest release required that 10 of these methods were rushed through and needed work, your current ratio would be 100 ÷ 10 which (obviously) equals 10; or &#8211; to put it another way &#8211; a ratio of 9:1 (i.e. for every code block needing refactored, you have 9 others that are considered optimal).</p>
<p>Deciding what constitutes an acceptable ratio depends a lot on your application&#8217;s complexity and size, but a general guide might be that a ratio of 3:1 (i.e. 25% of your code needs refactored) should be considered to be the maximum sustainable leverage your code base can afford and anything over 2:1 should be setting off alarm bells.</p>
<p>In short, keeping your unintended debt down gives you more     room to  intentionally take on debt when it&#8217;s useful to do so.</p>
<h3>Risk Ratio</h3>
<p>The later through the development / deployment process a change is submitted, the greater the risk associated with it becomes and the higher the cost to fix the consequences of that risk is.  If the client is asking for a change to be made after all testing phases are complete and the release is being deployed, it stands to reason that there is a much higher risk of introducing new problems than if the change had been done in the design phase.  This <a title="Opens in a new window" href="http://en.wikipedia.org/wiki/Risk_ratio" target="_blank">Risk Ratio</a> is the proportional increase in the amount of work required to fix something relative to when it goes wrong.</p>
<p>The Risk Ratio is an extremely valuable bargaining chip that quantifies the potential cost to the client of their requested change.  It forces them to consider the financial impacts of the change from a cost/benefit perspective.  An example Risk Matrix that has risk weightings from a scale of 1 &#8211; 10 looks like this:</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<col width="253"></col>
<col span="8" width="25"></col>
<thead>
<tr>
<th></th>
<th>Requirements Analysis</th>
<th>Requirements Review</th>
<th>Design</th>
<th>Build</th>
<th>Functional Testing</th>
<th>User Acceptance Testing</th>
<th>Deployment Testing</th>
<th>Release</th>
</tr>
</thead>
<tbody>
<tr>
<th>Typographic (spelling / punctuation)</th>
<td style="text-align:center;">1</td>
<td style="text-align:center;">1</td>
<td style="text-align:center;">2</td>
<td style="text-align:center;">2</td>
<td style="text-align:center;">3</td>
<td style="text-align:center;">4</td>
<td style="text-align:center;">5</td>
<td style="text-align:center;">6</td>
</tr>
<tr>
<th>Copy (text / wording)</th>
<td style="text-align:center;">1</td>
<td style="text-align:center;">2</td>
<td style="text-align:center;">2</td>
<td style="text-align:center;">3</td>
<td style="text-align:center;">4</td>
<td style="text-align:center;">5</td>
<td style="text-align:center;">6</td>
<td style="text-align:center;">7</td>
</tr>
<tr>
<th>Cosmetic (styles / layout)</th>
<td style="text-align:center;">2</td>
<td style="text-align:center;">2</td>
<td style="text-align:center;">3</td>
<td style="text-align:center;">4</td>
<td style="text-align:center;">5</td>
<td style="text-align:center;">6</td>
<td style="text-align:center;">7</td>
<td style="text-align:center;">8</td>
</tr>
<tr>
<th>Functional (client-side)</th>
<td style="text-align:center;">2</td>
<td style="text-align:center;">3</td>
<td style="text-align:center;">4</td>
<td style="text-align:center;">5</td>
<td style="text-align:center;">6</td>
<td style="text-align:center;">7</td>
<td style="text-align:center;">8</td>
<td style="text-align:center;">9</td>
</tr>
<tr>
<th>Functional (server-side)</th>
<td style="text-align:center;">3</td>
<td style="text-align:center;">4</td>
<td style="text-align:center;">5</td>
<td style="text-align:center;">6</td>
<td style="text-align:center;">7</td>
<td style="text-align:center;">8</td>
<td style="text-align:center;">9</td>
<td style="text-align:center;">10</td>
</tr>
</tbody>
</table>
<p>This matrix provides a quantifiable measure of how serious a change is based on the iteration&#8217;s progress.  You could use this as the basis of a calculation to determine the potential cost in dollar terms for any adverse impacts resulting from an unplanned change.  For example, if the client requested an existing style to be changed on your web application during your UAT phase and that style affected the layout for three pages, then you are tell the client that based on experience, there is a 60% chance that introducing a change at this point will cause a problem further down the line.  Given those odds of just under 1 in 3, there&#8217;s an extremely good chance that one of the three pages affected will suffer.</p>
<p>Alternatively, you can use this matrix to argue that any change being made at this point will require 6 times more effort to fix than if it had been raised during the outset of the project.  This is not an outrageous claim when you consider that the requirement might need to be formally documented, approved, developed, unit tested and acceptance tested again.</p>
<h2>Technical Inflation</h2>
<p><strong>Technical Inflation</strong> could be viewed as the ground lost when the current level of technology surpasses that of the foundation of your product to the extent that it begins losing compatibility with the industry.   Examples of this would be falling behind in versions of a language to the point where your code is no longer compatible with main stream compilers.</p>
<p>Managing your technical debt and inflation requires you to have a very clear understanding of how your debt is distributed.  Documenting candidates for refactoring is the best way to get a clear idea of the scope of work required to keep your application well-maintained.  This might be done using a source control system such as Microsoft TFS, where tasks, bugs and other work items can be recorded against a particular change or section of code; or using third-party tools such as <a title="Opens in a new window" href="http://agilezen.com/" target="_blank">AgileZen</a>.  Think of this as your Application Balance Sheet where your assets and liabilities can be easily reported on.</p>
<p>Technical Inflation is a direct product of sustained low liquidity and software decay.  The longer you leave something before fixing it, the more expensive it becomes to fix.</p>
<p>Ensure you have a clear idea of how much debt your application currently has so that you can make informed and reasoned arguments against adding any more work to an otherwise hard-to-see pile.  If you need to push back on a client&#8217;s demands so that you can ensure the sustainability of the client&#8217;s application, you will need evidence of why.  Having your books in order is a critical piece.</p>
<h2>Further Reading</h2>
<p><a title="A Primer in Technical Debt by Aaron Erickson (Opens in a new window)" href="http://http://www.informit.com/articles/article.aspx?p=1401640" target="_blank">Don&#8217;t Enron Your Software Project</a></p>
<p><a title="Opens in a new window" href="http://www.infoq.com/news/2010/03/monetizing-technical-debt" target="_blank">Monetizing the Technical Debt</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=59&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/04/15/managing-your-software-mortgage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/04/laptop-creditcard-2.jpg?w=300" medium="image">
			<media:title type="html">Technical Debt</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/04/keyboard-bills.jpg?w=150" medium="image">
			<media:title type="html">Bill Payments</media:title>
		</media:content>
	</item>
		<item>
		<title>No Excuse for No Requirements</title>
		<link>http://philwheeler.wordpress.com/2010/03/08/no-excuse-for-no-requirements/</link>
		<comments>http://philwheeler.wordpress.com/2010/03/08/no-excuse-for-no-requirements/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 09:36:35 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[BA]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[stakeholder-management]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=51</guid>
		<description><![CDATA[It&#8217;s scary how common this situation seems to be. So often as a developer, I find choosing to acquiesce in the client&#8217;s insistence that their enhancement or change is vitally important and, while they&#8217;re sorry it&#8217;s such late notice, needs to go out right away. Rather than demand that I am supplied with at least [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=51&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 510px"><img title="Agile Programming" src="http://farm1.static.flickr.com/35/63914774_b3e0cc9878.jpg" alt="Dilbert on Agile" width="500" height="175" /><p class="wp-caption-text">Dilbert on Agile</p></div>
<p>It&#8217;s scary how common this situation seems to be.</p>
<p>So often as a developer, I find choosing to acquiesce in the client&#8217;s insistence that their enhancement or change is vitally important and, while they&#8217;re sorry it&#8217;s such late notice, needs to go out right away.</p>
<p>Rather than demand that I am supplied with at least some semblance of a requirements document (thereby incurring the Outraged Stare of Daggers), I reluctantly smile pleasantly and get on with adding the feature.</p>
<div id="attachment_55" class="wp-caption alignleft" style="width: 210px"><img class="size-medium wp-image-55" title="Problems can snowball" src="http://philwheeler.files.wordpress.com/2010/03/snowball.jpg?w=200&#038;h=300" alt="Snowball" width="200" height="300" /><p class="wp-caption-text">Problems can snowball</p></div>
<p>It should therefore come as no surprise to me (or anyone else) when, after the fifth &#8220;last change&#8221; the client comes back for, I find myself wishing I&#8217;d saved everyone the cost, effort and frustration of having things explicitly written down from the outset.  Yet this situation is just <em>so very common</em> that it makes me wonder why it&#8217;s such a hard lesson to learn.</p>
<p>The difficulty in these sorts of situations arises typically when the change being requested is &#8220;just a small 5-minute job&#8221; or when &#8220;the colouring-in department won&#8217;t approve this feature unless we change these items&#8221;.  Each concession on a development iteration creates a precedent that becomes the expectation for all current and future iterations.  In other words, each unmanaged change that is allowed through without written requirements carries an exponentially proportional degree of risk the further through the delivery process you move.</p>
<p>Why is this so difficult? Well, the client (or their appointed representative) has a great deal of personal ownership in getting the feature exactly right.  If they&#8217;ve forgotten or omitted to include a detail that &#8211; while arguably insignificant &#8211; they absolutely must have, they will plead, cajole, argue and assert their case to the point where it&#8217;s often easier to simply comply than to appear pig-headedly stubborn.  The downside here is that you create &#8211; or at least contribute to &#8211; a sort of Parent / Child relationship where one party is always trying to bend the rules or circumvent established processes and the other is always resisting the temptation to concede to those demands.  It&#8217;s unhealthy for your team, it&#8217;s unhealthy for your process and it&#8217;s ultimately unhealthy for your client because that risk adds up: either as technical / design debt, increased development and testing cost, decreased auditability of design, or any combination of these.</p>
<p>So what&#8217;s the solution?  To always say &#8220;No&#8221; every time to teach your stakeholders a lesson?  Say &#8220;Yes&#8221; every time and make sure you document the discussion somehow?  Neither of those options are realistic or sustainable.  The best approach is to ensure you have communicated a clear and consistent process for handling this sort of situation <em>up front</em> before the issue actually arises.  I&#8217;m a recent convert to the Lean Software Methodology because I like the freedom it offers for requirements changes as part of a defined process.  The specifics I&#8217;ve outlined for my stakeholders work like this:</p>
<ul>
<li>The development team works in 3-week development cycles with an additional week for requirements review and workshops (workshops MUST include people from development, business analysis and the client)</li>
<li>Changes can be made at any time so long as those changes have absolutely zero impact on delivery timeframes or test effort</li>
<li>Any changes can be added to the requirements but will only be commenced once development is complete on the originally-scoped requirements being used as the basis for the current iteration</li>
<li>Changes that absolutely must be included in the current iteration can be included as long as all parties accept the delivery impacts and risks</li>
</ul>
<p>To help make the Production Line run as smoothly as possible, there are some basic rules that will help grease the wheels:</p>
<ol>
<li>Always have clear lines of ownership. <em>Know exactly  what you are supposed to do and ensure others know your domain of responsibility as well as theirs</em>.</li>
<li>Know your environment. <em>You can’t know everything, but  what you can know try to know it well.</em></li>
<li>Always factor in at least 10% contingency.  <em>Try to build a culture of &#8220;under-promise, over-deliver&#8221;.</em></li>
<li>Credibility is king. <em>Don&#8217;t make commitments based on uncertain knowledge; always deliver on commitments</em>.</li>
<li>If you find yourself in a hole the first thing to do is stop  digging. <em>Old cowboy saying.</em></li>
</ol>
<p>All these strategies are well and good as long as the business have defined clear and thorough requirements up front, but I can&#8217;t stress enough the importance of rule number 1, above.  Make sure your production line process has clear expectations defined for not only what your outputs are, but what your inputs need to be.  The business has an implicit obligation to provide as full and complete requirements to you sufficiently ahead of time so that you can review them, refine them and respond with accurate estimates.  If you regularly find yourself in a situation where you&#8217;re being asked to &#8220;just sneak this one little change in&#8221;, something is broken. You owe it to yourself and your broader team to get it fixed. Fast.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=51&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2010/03/08/no-excuse-for-no-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://farm1.static.flickr.com/35/63914774_b3e0cc9878.jpg" medium="image">
			<media:title type="html">Agile Programming</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2010/03/snowball.jpg?w=200" medium="image">
			<media:title type="html">Problems can snowball</media:title>
		</media:content>
	</item>
		<item>
		<title>The Psychology of Poor Process</title>
		<link>http://philwheeler.wordpress.com/2009/12/21/the-psychology-of-poor-process/</link>
		<comments>http://philwheeler.wordpress.com/2009/12/21/the-psychology-of-poor-process/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 08:50:12 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[BA]]></category>
		<category><![CDATA[deadlines]]></category>
		<category><![CDATA[lean-software-development]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=37</guid>
		<description><![CDATA[You would think after 18 months of forming and stabilising my development team that we&#8217;d have a pretty strong and settled process in place.  But the development team is only one player in a larger ecosystem and how that team is fed depends heavily on the requirements that they are given. When you&#8217;re in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=37&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_46" class="wp-caption alignleft" style="width: 150px"><a href="http://philwheeler.files.wordpress.com/2009/12/conveyor-belt.jpg"><img class="size-medium wp-image-46 " title="Empty Production Line" src="http://philwheeler.files.wordpress.com/2009/12/conveyor-belt.jpg?w=140&#038;h=210" alt="Conveyor Belt" width="140" height="210" /></a><p class="wp-caption-text">Empty Production Line</p></div>
<p>You would think after 18 months of forming and stabilising my development team that we&#8217;d have a pretty strong and settled process in place.  But the development team is only one player in a larger ecosystem and how that team is fed depends heavily on the requirements that they are given.</p>
<p><span id="more-37"></span></p>
<p>When you&#8217;re in the software building business, the pressure to deliver something &#8211; anything &#8211; by a certain date can be quite intense.  Sometimes its because a marketing campaign is scheduled, sometimes because a product is being released that the software needs to tie into or it may be that a service has been promised to customers or end-users by that date.  Whatever the reason, developers work best when given a fixed set of requirements to deliver by a committed, set target date.</p>
<p>Contrast this with a situation where one or more of the following situations occurs regularly:</p>
<ul>
<li>The client provides requirements with an assurance that they are &#8220;final and signed-off&#8221;, but continues to insist that small additions or amendments be made right up until &#8211; or even after &#8211; the final testing process has begun.</li>
<li>The client &#8211; in agreement with you &#8211; settles on a deliverable date by which all scoped work should be provided.  This is then casually pushed out to accommodate scope creep or alter the requirements.</li>
<li>The functional requirements are running late and the client asks that you just get started with what they&#8217;ve documented so far and the rest will be added in as you go.</li>
<li>The final requirements provided to the development team include numerous assumptions, vague functional specifications and &#8220;documented omissions&#8221; that will &#8211; assuredly &#8211; be provided in due course.</li>
</ul>
<p>People generally don&#8217;t enjoy working like this.  There is motivation, job satisfaction and a personal sense of pride (among other benefits) to be found in the challenge of achieving a goal.  People &#8211; and developers in particular &#8211; work well under conditions of managed stress and challenges where there is a tangible reward to be found at the end.  That reward is self-respect, the pride in achievement, appreciation, recognition or respect of the client and stakeholders and satisfaction in the delivery of a quality product.  Take away the measures for those motivators and you take away the motivation as well.</p>
<h2>The Problem</h2>
<p>Consider these scenarios:</p>
<ol>
<li>Your development team is working to a tight deadline, busting themselves to achieve it.  At the last minute it gets moved out. Your team was expecting victory,  some congratulations and appreciation (maybe a cake), and instead all they get  is more work.</li>
<li>The team is working to a difficult deadline, and must cut corners. They  build things quick-and-dirty because time is short and it&#8217;s better to  have something ugly that works than something beautiful half-built. The  deadline is pushed back and now the team (or, more likely, the Team Lead) have to explain why they did such a rough  job. The time to clean it up is longer than the extension.</li>
<li>The deadline gets moved out, so the team realigns priorities, working on  the new goals for the altered requirements.  The estimate for work is recalculated and work carries on towards the new deadline.  This happens once &#8211; maybe twice &#8211; more before the final deliverable is released.  The line manager asks the Team Lead how the original estimate compared to the actual development cost and the Team Lead must explain why the scope and cost started at Point A for $10 000, but finished at Point C for a total cost of $25 000.  (Even worse is if you have no adequate measurements of effort spend per developer and cannot even provide figures for how the estimate compares with the final product).</li>
</ol>
<p>Vague deadlines open the door for:</p>
<ul>
<li>Delivery dates that are hard to commit to</li>
<li>Meaningless estimates</li>
<li>Impact on scope for other deliverables</li>
</ul>
<p>Conversely, vague requirements lend themselves to</p>
<ul>
<li>Scope creep</li>
<li>Technical deficiencies</li>
<li>Redundant or inaccurate estimates</li>
</ul>
<p>As a product owner, line manager or client, you should be concerned about this because</p>
<ol>
<li>Your development costs begin to run away on you</li>
<li>Your product quality slips</li>
<li>Your development team becomes disillusioned, disaffected or cynical</li>
<li>Future projects are put at risk as your development team becomes accustomed to deadline extensions and scope changes</li>
</ol>
<p>Any one of these issues should be enough to cause concern &#8211; if not from a purely cost point of view then from a risk and succession planning one.  So what steps can be done to ensure that the psychology of your software shop team is healthy and robust?</p>
<h2>The Solution</h2>
<p>When it comes down to it, there are two broad ways in which you can remedy the state of delivered requirements and conditions under which you are expected to deliver the final product: influence the client (i.e. require them to adapt their processes to accommodate your needs better) or influence your environment (i.e. adapt your own internal processes to compensate for those factors outside your control).  The first is harder to achieve in large amounts although depending on what is asked of the client and how the request is packaged up, some results may be better than others.  The second allows more immediate and practical scope for change, but may not provide the breadth of control needed to effect meaningful results.</p>
<p>To this end, the following strategies can help you add value to your own service delivery:</p>
<ul>
<li>Ensure you have tools for defining when a deliverable has been satisfied.</li>
<li>Ensure estimates are based on tiny tasks, each no longer than a day or  two.</li>
<li>Ensure requirements are measurable (e.g. &#8220;Function X should work in exactly this way&#8230;&#8221;) and work with the client until they are.</li>
<li>Build to your own shorter fixed time frames (e.g. monthly) that can be dove-tailed into the client&#8217;s delivery deadlines.</li>
<li>Deliver only to your agreed time frames and initial scope, with any deadline or scope changes being pooled into a backlog to be commenced on completion of the original project requirements.</li>
<li>Ensure you leverage the tools you have to give you meaningful information about how your production process is performing and identify ways in which it could be streamlined.</li>
</ul>
<p>The concepts around <a title="Wikipedia (Opens in a new window)" href="http://en.wikipedia.org/wiki/Lean_software_development" target="_blank">Lean Software Development</a> provide excellent, non-prescriptive strategies for approaching the development process and for looking at key areas in which to improve: in particular, minimising waste.</p>
<div id="attachment_48" class="wp-caption alignright" style="width: 122px"><a href="http://philwheeler.files.wordpress.com/2009/12/production-line.jpg"><img class="size-thumbnail wp-image-48" title="Production Line" src="http://philwheeler.files.wordpress.com/2009/12/production-line.jpg?w=112&#038;h=150" alt="Production Line" width="112" height="150" /></a><p class="wp-caption-text">Well-Tuned Production</p></div>
<p>Ultimately, the best approach is to engage with the client and agree on a requirements / product delivery process that affords each party the flexibility they need coupled with the policies against which they can most effectively operate.  Setting the expectation with the client that late or incomplete requirements will result in those affected features being delayed for a future iteration (or until the requirements are satisfactory) and then committing to that will create a culture where there are consequences for a relaxed approach and reduces the waiting around or re-work for the development team.</p>
<p>No project &#8211; or any other relationship for that matter &#8211; can operate in strong and healthy way unless both parties are communicating effectively and often.  The development team can feel empowered and resolute with fixed, predictable deadlines and a set of confirmed, explicitly-defined requirements.  The client can feel more comfortable about their requirements delivery knowing that they can provide only those instructions that have been properly thought-out and need not operate under pressure to some intangible time frame.  Both parties know that if something can&#8217;t be provided in this iteration, it will not be forgotten and gets scheduled for completion on the next pass.</p>
<p>Protecting the head space of the development team is often stated to be the sole responsibility of the <abbr title="Technical Team Lead">TTL</abbr>, however the reality is that it often takes the contributions of a number of stakeholders to really create the sort of environment where the developer can fully thrive.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=37&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2009/12/21/the-psychology-of-poor-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2009/12/conveyor-belt.jpg?w=200" medium="image">
			<media:title type="html">Empty Production Line</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2009/12/production-line.jpg?w=112" medium="image">
			<media:title type="html">Production Line</media:title>
		</media:content>
	</item>
		<item>
		<title>Following By Example: The Role of Effective Leadership</title>
		<link>http://philwheeler.wordpress.com/2009/11/11/following-by-example-the-role-of-effective-leadership/</link>
		<comments>http://philwheeler.wordpress.com/2009/11/11/following-by-example-the-role-of-effective-leadership/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 02:13:11 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[strategies]]></category>
		<category><![CDATA[TTL]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=25</guid>
		<description><![CDATA[There are any number of things that can work against a TTL&#8216;s ability to perform his or her job effectively. These might relate to infrastructural limitations (i.e. availability or connectivity constraints), restrictive policies (e.g. information restriction, defensive internet / website policing), environmental inhibitors (e.g. fragmentation of time, noisy or interruptive work area, physical separation) or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=25&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-33" style="margin:0 1em .5em 0;" title="Following the Leader" src="http://philwheeler.files.wordpress.com/2009/11/robot-army.jpg?w=280&#038;h=175" alt="A development team needs the certainty of direction from its line management" width="280" height="175" />There are any number of things that can work against a <abbr title="Technical Team Lead">TTL</abbr>&#8216;s ability to perform his or her job effectively.  These might relate to infrastructural limitations (i.e. availability or connectivity constraints), restrictive policies (e.g. information restriction, defensive internet / website policing), environmental inhibitors (e.g. fragmentation of time, noisy or interruptive work area, physical separation) or inter-personal difficulties (e.g. siloed specialist teams, dependence on (groups of) individuals with other priorities or skill sets, availability of key personnel).</p>
<p>As the <abbr title="Technical Team Lead">TTL</abbr>, it is typically your role to ensure that team members are shielded as much as possible from counter-productive working conditions; minimising their effects where possible and trying to effect some change where practicable.  However trying to achieve this on your own can be taxing at best and near-impossible usually.  This is where your own line manager comes in.  Just as it is your job to work on clearing the path for your team to work at their best capacity, so it is your manager&#8217;s responsibility to enable the same for you.  Having an effective and actively engaged manager is a &#8211; regrettably &#8211; often rare privilege.</p>
<h4>Engage with the team and understand their project</h4>
<p>Having an active interest in the project helps ensure the development team feel recognised, appreciated and valued.  This doesn&#8217;t mean taking an active hand in the running of the team, micro-management or making decisions on the team&#8217;s behalf, but just having a physical presence adds a great deal from a psychological point of view.  The TTL will generally feel that their work has visibility and adds value, the fact that management aren&#8217;t interfering but still taking an interest sends the message that they are on the right path and the TTL will feel that issues or problems will be taken seriously and can be addressed easily because the manager is readily available for those types of discussions.</p>
<h4>Support your Team Lead and back their decisions up</h4>
<p>Typically the TTL role has only implied authority but no formalised line management, financial responsibility or personnel (hiring) authority.  Therefore, when the TTL makes a strategic decision or delivers a communication around a particular issue, it is reasonable to expect that such an act is well-informed and well-intentioned.  In these cases, the TTL needs to know that their line manager has faith in their ability and will support their decisions.  If  the manager just sits on the fence or tries too hard to please everyone, then the risk arises of an implicit message, &#8220;You have no autonomy or authority and I will undermine your decisions if they don&#8217;t fit my personal style&#8221;.</p>
<p>This form of Defensive Management is destructive and shows that the manager doesn&#8217;t trust his / her own people.  People who feel untrusted have little inclination to feel engaged in their company or to bond together as a team.</p>
<blockquote cite="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439%3FSubscriptionId%3D08WX39XKK81ZEWHZ52R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0932633439"><p>The only freedom that has any meaning is the freedom to proceed differently from the way your manager would have proceeded.</p></blockquote>
<h4>Respond to TTL communications and proposals in a timely fashion</h4>
<p>It&#8217;s to be expected and quite understandable that managers are typically busy people and are often away from their desk.  The usual approach to this is for the TTL to send an email asking for a response or an approval for a particular action.  Not responding (or &#8211; at a minimum &#8211; agreeing to respond by a certain date) sends a dual message of &#8220;Not only am I not physically present when you need my input, but I don&#8217;t view your communications as being important&#8221;.</p>
<p>This point relates to the previous in that a development team, and the TTL in particular, rely on the reassurance that the team is headed in the right direction.  Think of it as the &#8220;I told her I loved her when I married her&#8221; style of management.  If management aren&#8217;t treating issues, communications and requests for action with an audible degree of urgency (even if the response is, &#8220;let me think about it and get back to you by&#8230;&#8221;), then the team members are left to fill in the blanks to their own detriment: &#8220;my manager doesn&#8217;t respect this team&#8221;, &#8220;this company doesn&#8217;t care whether this team performs or not&#8221;, &#8220;I only hear back from my manager when something goes wrong&#8221;.</p>
<p>An effective leader is one who doesn&#8217;t need to interfere, audit or control the operations of a development team, but is available for discussion, makes a physical effort to show their presence on a regular basis and acts quickly on communications sent by the TTL or team members.  He or she will give the TTL freedom to act in the best interests of the team they are leading and the freedom to be wrong in the manager&#8217;s eyes.  In short, they act in a way that sends the implicit message that the team&#8217;s efforts are valued, respected and visible to those outside of the immediate project.</p>
<p>Recognising a team&#8217;s work and their efforts regularly demonstrates tacit approval, encouragement and respect.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=25&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2009/11/11/following-by-example-the-role-of-effective-leadership/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2009/11/robot-army.jpg?w=300" medium="image">
			<media:title type="html">Following the Leader</media:title>
		</media:content>
	</item>
		<item>
		<title>Technical Team Lead Charter</title>
		<link>http://philwheeler.wordpress.com/2009/10/13/technical-team-lead-charter/</link>
		<comments>http://philwheeler.wordpress.com/2009/10/13/technical-team-lead-charter/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 11:54:34 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Technical Team Lead]]></category>

		<guid isPermaLink="false">http://philwheeler.wordpress.com/?p=16</guid>
		<description><![CDATA[If you were tasked with writing a document that described exactly what it was that your function entailed, what would it look like? Would you write a Job Description; starting with Senior Developer as the basis and edited to include the additional responsibilities and roles you performed? Would its tone be descriptive or prescriptive? What [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=16&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_22" class="wp-caption alignleft" style="width: 160px"><a href="http://philwheeler.files.wordpress.com/2009/10/miles-of-files.jpg"><img src="http://philwheeler.files.wordpress.com/2009/10/miles-of-files.jpg?w=150&#038;h=150" alt="Documentation - The TTL&#39;s best friend" title="Miles of Files" width="150" height="150" class="size-thumbnail wp-image-22" /></a><p class="wp-caption-text">Documentation - The TTL's best friend</p></div>If you were tasked with writing a document that described exactly what it was that your function entailed, what would it look like?  Would you write a Job Description; starting with Senior Developer as the basis and edited to include the additional responsibilities and roles you performed?  Would its tone be descriptive or prescriptive?  What would the HR department&#8217;s view of it be?  Would they formally recognise it as an actual JD?  Would they be a bit upset that you were stepping on their territory?</p>
<p>What about writing a longer essay that described your job function in greater detail?  Would it become a description of an ideological role that you couldn&#8217;t really achieve in practice?</p>
<p>I was recently required to write just such a document: a Technical Team Lead &#8220;Charter&#8221; that described what my job function was, what the measurable goals of that function were and (as I found out later) something that would then be used as the basis of performance measures in the upcoming year.</p>
<p>My first attempt can be viewed here.  Comments and feedback most welcome as usual.<br />
<a href='http://philwheeler.files.wordpress.com/2009/10/technical-team-leadership.pdf'>Technical Team Leadership</a> (PDF)<br />
<a href='http://philwheeler.files.wordpress.com/2009/10/technical-team-leadership.docx'>Technical Team Leadership</a> (DOCX)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philwheeler.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philwheeler.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philwheeler.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philwheeler.wordpress.com&amp;blog=9746861&amp;post=16&amp;subd=philwheeler&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philwheeler.wordpress.com/2009/10/13/technical-team-lead-charter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fac017fac2f8e5f9dfc02dcc64588895?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drumnet</media:title>
		</media:content>

		<media:content url="http://philwheeler.files.wordpress.com/2009/10/miles-of-files.jpg?w=150" medium="image">
			<media:title type="html">Miles of Files</media:title>
		</media:content>
	</item>
	</channel>
</rss>
