<?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>The Nomadic Developer</title>
	<atom:link href="http://nomadic-developer.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nomadic-developer.com</link>
	<description>Surviving and Thriving in the World of Technology Consulting</description>
	<lastBuildDate>Fri, 26 Apr 2013 15:04:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nomadic-developer.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Nomadic Developer</title>
		<link>http://nomadic-developer.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nomadic-developer.com/osd.xml" title="The Nomadic Developer" />
	<atom:link rel='hub' href='http://nomadic-developer.com/?pushpress=hub'/>
		<item>
		<title>Hype, &#8220;Big Data&#8221;, and Towards a More Pragmatic Analytics</title>
		<link>http://nomadic-developer.com/2012/11/30/pragmaticanalytics/</link>
		<comments>http://nomadic-developer.com/2012/11/30/pragmaticanalytics/#comments</comments>
		<pubDate>Fri, 30 Nov 2012 11:58:51 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Agile Analytics]]></category>
		<category><![CDATA[Business Intelligence]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=231</guid>
		<description><![CDATA[According to Industry Pundits™, IT departments worldwide will be spending an amount of money equal to the GDP of several midsized countries on Big Data. As someone who has been around the block a few times, I have seen many hype cycles come and go. But there is something truly staggering about the hype around [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=231&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>According to Industry Pundits™, IT departments worldwide will be spending an amount of money equal to the GDP of several midsized countries on Big Data. As someone who has been around the block a few times, I have seen many hype cycles come and go. But there is something truly staggering about the hype around Big Data these days. It is enough to make you question the whole thing &#8211; or at least wonder just how deep the inevitable trough of disillusionment is going to be!</p>
<h2>Is It Big Data, or Big Hype?</h2>
<p>There is, of course, a kernel of truth to the hype. Much of the most interesting work in tech in general &#8211; and the startup world in particular &#8211; is occurring in what can vaguely be called the &#8220;Big Data&#8221; space. Amazon, Facebook, and Google, three of the so called &#8220;four horsemen of technology&#8221; (the fourth being Apple) drive their profitability via Big Data. As these companies lead, it isn&#8217;t just other startups following, but corporate IT departments are suddenly are looking at their long running &#8220;Business Intelligence&#8221; initiatives and wondering why they are not seeing the same kinds of return on investment. They are thinking&#8230;  if only we tweaked that &#8220;BI&#8221; initiative and somehow mix in some &#8220;Big Data&#8221;, maybe *we* could become the next Amazon.</p>
<p>Sadly, many such initiatives are doomed to failure. Many companies will task IT with coming up with a big data initiative, but won&#8217;t really involve the business at all. Many of these cases will result in IT going out and <a href="http://nomadic-developer.com/2009/12/12/business-intelligence-does-not-come-from-a-product/">buying a product</a>, installing it on desktops (or perhaps even tablets), and subsequently declaring victory. Of course, the value from this activity is dubious at best, typically resulting in lots of licenses acquired that, ultimately, sit on a shelf and seldom get used.</p>
<p>That might be bad, but there are worse things that can happen. There will be others that will go forth and try to build a comprehensive platform. Because IT often works in isolation, without a specific business problem to work on, the urge is often to try to build a solution that a theoretical business person can use to do analytics in a generic sense. There are, of course, serious problems with this approach:</p>
<ul>
<li><span style="line-height:13px;">Tendency to spend years &#8220;perfecting the universal platform&#8221;.</span></li>
<li>Building a platform that, in an attempt to be usable by a general business user, dumb things down and don&#8217;t deliver sufficient value.</li>
</ul>
<p>Without a specific business problem to focus on, not only do you build more platform than you need, but you tend to build a platform that lacks the depth needed to solve the kind of problems you solve with modern analytical tools. Let&#8217;s face it &#8211; most business users are not experts in how to use Monte-Carlo simulation, neural networks, or other tools that are in the domain of the data scientist.</p>
<h2>Want To Do Analytics? Start with a Business Problem!</h2>
<p>It seems like rather trite advice, and I am loathe to say never very often, but I can say with certainty that you should <strong>never</strong> build out a Big Data or Analytics initiative without a specific business problem in mind. Sure, there are lot&#8217;s of people who would love to raid your corporate treasury in order to build out the &#8220;one platform to rule them all&#8221; &#8211; or even just sell you a bunch of shelfware. But that doesn&#8217;t actually do what you are there to do, which is get results, not buy software.</p>
<p>Our advice is at ThoughtWorks is, unambiguously, start small. Every good analytics problem has an underlying analytics question &#8211; something like &#8220;given what we know about a customer, how likely are they to leave for a competitor?&#8221; or &#8220;given a set of transactions, what is the likelihood of fraud?&#8221;. We then look at what data sources &#8211; some conventional, some far from conventional &#8211; are available to help solve the problem. We do discovery work in the data, and proceed to work up a hypothesis about how we can use said data to predict something about the customer, transaction, or other subject of interest. And then we test our hypothesis. And if the test works out, we move on and find a way to operationalize our finding for the benefit of the customer. Or if not, we seek the next hypothesis and try again.</p>
<p>The key to success in any agile process is the <em>feedback loop</em>. The problem with BI and even many incarnations of more modern analytics initiatives is the distinct lack of feedback that occurs when you build a platform before you solve a problem. The reason we call this Agile Analytics is because we use these feedback loops &#8211; and the learning associated with them &#8211; to guide our efforts.</p>
<h2>Data Science versus Data Voodoo</h2>
<p>Of course, a feedback loop doesn&#8217;t guarantee results. The work, the science, has to be solid as well. The tools of yesterday, doing things like building data cubes to slice and dice data, might be good at telling you what happened. They do little, however, to tell you meaning behind data, or to be useful for predictive use. For this, we bring in data scientists, often people with PhDs in mathematics, physics, or related fields, to develop predictive algorithms. The kind of people who developed things like modern spam filters that predict an answer to the question &#8220;is this email likely to be spam&#8221; using Bayesian classifiers.</p>
<p>The tools of the data scientist are vast indeed. Neural networks, machine learning, natural language processing, and more are among the techniques such people often use when developing analytics solutions. More importantly, they know when to use these tools, and they know when simpler tools will suffice &#8211; and when a pivot from one technique to another is needed if a hypothesis does not work out. It is the data scientist, not the tools themselves, that makes Agile Analytics possible. This is why we cringe when we see products advertised that claim to allow end users to bypass the data scientist and allow users of all proficiencies to, say, apply neural networks to data sets. We would feel the same way about do it yourself surgery kits!</p>
<h2>Scaling Based on Results</h2>
<p>The pundits are right about the potential around analytics and big data. But they frequently understate the risks of wasting money by engaging on long running programs that invest far too much prior to seeing results. ThoughtWorks took up Agile because we saw companies engage in massive waste by investing money into projects for years before results are realized. Analytics is no different. In fact, given the amount of hype around analytics, it is even more prudent you demand results before you scale up investment.</p>
<p>Our call to action is to start with discovery. We are happy to help with this, but even if we don&#8217;t, we believe starting these initiatives using small teams of less than six people. Start by establishing an analytics question, engage in a short discovery phase &#8211; typically around 3 weeks &#8211; to form and test your hypothesis, and based on your results, go from there. When Google got started, they certainly did not start with a seven figure budget and some enterprise software package promising to &#8220;index the internet&#8221;. Neither should you, as you engage in your analytics initiative.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/231/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=231&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2012/11/30/pragmaticanalytics/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>On (not) Being Post-Technical</title>
		<link>http://nomadic-developer.com/2012/05/30/on-not-being-post-technical/</link>
		<comments>http://nomadic-developer.com/2012/05/30/on-not-being-post-technical/#comments</comments>
		<pubDate>Wed, 30 May 2012 00:20:25 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=211</guid>
		<description><![CDATA[In ThoughtWorks, one of the most poignant insults one can throw at you is &#8220;so-and-so has gone post-technical&#8221;. This usually means one has entered the land of management, that place where you give back your brain in exchange for money (or prestige.. or nothing, as it turns out). Lately, as I have taken on additional [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=211&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In ThoughtWorks, one of the most poignant insults one can throw at you is &#8220;so-and-so has gone post-technical&#8221;. This usually means one has entered the land of management, that place where you give back your brain in exchange for money (or prestige.. or nothing, as it turns out).</p>
<p>Lately, as I have taken on additional roles at ThoughtWorks, the temptation to go &#8220;post technical&#8221; has put itself forward. Imagine not having to think anymore. Imagine being able to just focus on &#8220;strategy&#8221; and &#8220;people issues&#8221;, without all that hard technology stuff.</p>
<p>I could take that path, but I&#8217;d rather not&#8230;</p>
<p>I remain technical. My day-to-day job may involve things like Statements of Work and such, and I do not write code 100% of the time, but I am making a decision to at least remain somewhat involved in the technical communities in which I have interest.</p>
<p>Of course, my time is more limited, given I have taken on some management responsibility lately. So I can&#8217;t pursue everything. And I do have to admit that with my reduced time, I am likely never to be the most &#8220;technical person&#8221; in any given group of TWers. In fact, given that TWers are all generally really good at their jobs, it would be utter arrogance for me to assume I could keep up with them when I only act in a technical role for 40% of my time. So my bar isn&#8217;t TWers &#8211; they will most likely all be more technical than I am. But it is remaining competent enough to understand at least 40% of what they talk about, and more importantly, remain excited about technology.</p>
<p>So what am I excited about these days, here is my own, personal, &#8220;tech radar&#8221; (no fancy graphics required):</p>
<ul>
<li>Functional Languages and Big Data</li>
</ul>
<p>Someday, the world will catch up to where the F#/Clojure people are now. I think the tie between FP and Big Data is strong, and given that is where much of the value will be created in the next 5 years with corporate IT spend, the use of FP will only increase.</p>
<ul>
<li>IaaS (note, I don&#8217;t say cloud&#8230; too overloaded)</li>
</ul>
<p>I got the cloud bug this year, and I will admit, I am a terminal case. I saw an app where someone deployed a load balancer with an http request. And not an http request that converts into an email that goes to a tech that puts a physical one on a rack. Infrastructure as code is changing this business. Imagine the ability to specify, in human readable code, an organization&#8217;s entire server configuration. And realize that configuration by executing the DSL it is written in. That day is approaching, fast. Imagine the possibilities &#8211; from everything to devops to disaster recovery.</p>
<p>Why don&#8217;t I say cloud? The term is so overloaded that it is meaningless. Anything that runs on the internet is putting &#8220;cloud&#8221; in front of it&#8217;s name, which is why I have stopped using the term and do everything I can to use more descriptive terms.</p>
<ul>
<li>Lean Startup</li>
</ul>
<p>Though not a technology, it is the first thing from a project management standpoint I have been truly excited about in years. At least since Agile, maybe more so. Why? It finally closes the loop, bringing in the entire scientific method into the business of software development. It seems so obvious now, it never ceases to surprise me that it took our industry 50 years to adopt it. Lean Startup, to me, is the application of the scientific method to how you run business. I recently did a <a href="http://www.thoughtworks.com/events/understanding-mvp-connecting-continuous-delivery-lean-startup-movement">webinar that nicely encapsulates</a> how I feel about it in much more detail, but my general sense is that this builds on CD and gives organizations that embrace it a much more repeatable, sustainable path to successfully delivering business results with software.</p>
<p>The three things above are the tools I believe will create most of the value in corporate software over the next 5 years. And I fully intend to remain competent enough to discuss these topics with both technical and business audiences, even if I don&#8217;t write code every single day anymore. The trick, not being a full time software developer anymore, will be to:</p>
<ul>
<li>Make sure I don&#8217;t stop doing some technical work &#8211; I still intend to pair program with the team when I can, as well as keep up with a selection of OSS projects I am involved with.</li>
<li>Continue to read new technical material &#8211; I am on planes a lot, should not be too hard. For example, I am learning Python now, despite that I don&#8217;t have a good reason to personally code in python.</li>
<li>Be aware &#8211; ultra-aware &#8211; that I am not the most technical person in the room. My team-mates will likely know more than me, and I will defer to them on technical arguments more often than not, especially if they have decent data on why a given technical decision needs to be one way or another.</li>
</ul>
<p>Will this work? We will see. I am only in the starting stages of this journey &#8211; will be interesting to see the degree to which my technical skills atrophy from not being a full time developer anymore!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=211&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2012/05/30/on-not-being-post-technical/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Why I Work At ThoughtWorks (and why you should too&#8230;)</title>
		<link>http://nomadic-developer.com/2012/01/03/why-thoughtworks/</link>
		<comments>http://nomadic-developer.com/2012/01/03/why-thoughtworks/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 20:27:03 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[consulting]]></category>
		<category><![CDATA[ThoughtWorks]]></category>
		<category><![CDATA[career satisfaction]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=210</guid>
		<description><![CDATA[Alas, we enter a new year, a time at which many people start thinking about opportunities. This was a place I found myself, three years ago today, when I made the decision that I wanted to work for ThoughtWorks. Three years, four countries, and several really great clients later, I still feel as good about [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=210&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Alas, we enter a new year, a time at which many people start thinking about opportunities. This was a place I found myself, three years ago today, when I made the decision that I wanted to work for ThoughtWorks. Three years, four countries, and several really great clients later, I still feel as good about ThoughtWorks as the day I made that fateful decision. This posts outlines why I am here, why I stay, and why you should consider a future here as well. I should make sure to say here, as always, these views are mine, and do not necessarily represent that of the company.</p>
<p><strong>Reason #1: Lack of an &#8220;adult/child&#8221; dynamic between sales and delivery that is common at many firms</strong></p>
<p>In many companies, particularly consulting companies, salespeople call the shots, have most of the respect, and take home most of the rewards. Delivery &#8211; the &#8220;programmers&#8221;, are the people who are to be managed, paid as little as possible, and controlled by management. You see this commonly in pay structures, you see this in who is listened to when it is time to try a new idea (i.e. think agile before it was popular), and you see this in who makes up the management of the company. Bluntly, what you tend to see in most consulting companies is that former salespeople make up most of the management &#8211; which helps contribute to this effect.</p>
<p>At ThoughtWorks, in my experience, the relationship between demand generation and supply is much more balanced. It isn&#8217;t always perfect &#8211; sometimes we may go too far to the delivery end of the spectrum here, to the chagrin of our demand generation people &#8211; but it is much better than the status quo most places, where salespeople are considered &#8220;the adults in the room&#8221;, with &#8220;resources&#8221; (aka delivery) to be managed. It has a much more egalitarian feel &#8211; which feeds into a greater sense of career satisfaction and engagement. It is not a mistake that this greater sense of engagement, frankly, is a driver of our growth.</p>
<p><strong>Reason #2: We have a purpose</strong></p>
<p>In most companies, consulting or no, the sole purpose of profit is to enrich shareholders. At ThoughtWorks, we have a greater purpose. When we say we want to change the world and make it a better place, <a href="http://www.thoughtworks.com/cn/social-impact">we mean it</a>. As a firm, we invest our energy, our time, and significant resources towards projects that serve the cause of social justice.</p>
<p>Why does this matter? I don&#8217;t know about you, but the idea that the profits that I help create for this company make the world a better place is a lot more compelling to me than the alternative, which is usually helping some rich dude buy a slightly larger yacht. It makes me more engaged in my work than I would otherwise be. And I can&#8217;t speak for everyone at ThoughtWorks, but this is true for scores of others as well.</p>
<p>Ironically, it is this greater engagement that increases our financial returns. Companies that lack this purpose driven engagement often have to use extrinsic means (usually cash) in order to try to achieve the same level of commitment. Because our people are more engaged, they are more likely to go above and beyond for our clients. This, in turn, drives greater financial success, greater technical innovation, and greater ability to do social impact work &#8211; starting the cycle anew. While ThoughtWorks isn&#8217;t <a href="http://www.informit.com/articles/article.aspx?p=1354690">Consultopia</a>, a concept I described in <a href="http://www.amazon.com/Nomadic-Developer-Surviving-Technology-Consulting/dp/0321606396">my book</a> about consulting, it is likely the closest company among large technology consulting companies you will find.</p>
<p><strong>Reason #3 &#8211; We are truly transnational</strong></p>
<p>For me, one of the chief reasons I joined ThoughtWorks was that I wanted to work for a truly global company that was global for the right reasons. There are many companies that seek to open offices in India or other offshore locales in order to do rate arbitrage. They will say they are opening offices in places like India to access the talent pool, but what they usually mean is that they need a means to do work at lower rates.</p>
<p>One of the things that impresses me about ThoughtWorks is that, as a strategy, when we open an offshore office, we make it a priority to find work in that market, and as a goal, make it so that market can be self-sustaining. Two years ago, we opened our first Latin American office in Porto Allegre, Brazil. Within a year, we already had clients in the Brazilian market. Our efforts in China over the years have also yielded &#8220;in China, for China&#8221; type work.</p>
<p>There are several benefits to this. A primary benefit is that we gain better geographic diversity in our client base. This diversity allows us to better weather the natural ups and downs that will occur in any given region. As places like Brazil, India, and China rise, we already have relationships with those respective business communities. This does not happen if you are primarily in the rate arbitrage business, as companies that do that tend to tie offshore revenue to first world economies &#8211; spending most of their energy doubling down on first world business relationships, rather than developing world relationships.</p>
<p>Why is this good for you, as a potential ThoughtWorker? First off, you get a chance to get involved in these emerging markets. Second, you have a better shot at getting exposed to these cultures &#8211; all of which add to your value as a consultant should you decide to learn how to work with such a diverse set of people. Third, you work for an organization that is sufficiently diversified that the potential rise of Brazil, India, and China will only create more opportunities for you, rather than fewer.</p>
<p><strong>Reason #4 &#8211; We won&#8217;t do evil</strong></p>
<p>As a company, we have <a href="http://www.thoughtworks.com/values-and-culture">strong values</a>. Every client we take on, we vet to make sure we are comfortable with what they do as a business. This isn&#8217;t always easy, and there are definitely shades of gray. But chances are, if a company derives most of it&#8217;s revenue from activities related to war, uses it&#8217;s profits to fuel hate against marginalized minorities, such as blacks, women, or the LGBT community, or otherwise does not have aligned values, we will not work for them.</p>
<p>This does not come without cost. There have been times where our pipeline was light, and work was offered that would help the company through a slow period. And frequently, there are very vibrant conversations about exactly where to draw the line when something is a &#8220;shade of gray&#8221;. I am reasonably certain we do not always get it right. But compared to most companies, which, being polite, operate on the principle of ATM (Anything For Money) &#8211; ThoughtWorks is head and shoulders above the rest.</p>
<p><strong>Reason #5 &#8211; We often work on the hardest, most difficult problems</strong></p>
<p>When we engage, the stakes are usually quite high for the company engaging us. This provides a sense of meaning and purpose to the work that is compelling, frequently very technically interesting, and almost always very interesting from a social point of view. After approaching three years at ThoughtWorks, it has become rather obvious to me that many problems that are presumably software problems really have a corporate strategy or political problem at their core. This kind of work, very common here, helps you as a ThoughtWorker exercise skills that a pure software shop can&#8217;t offer &#8211; things like building coalitions, selling crazy ideas, and creating delivery climates conducive to innovation. ThoughtWorks is not just a great place to learn technology, agile, lean, or continuous delivery &#8211; it is also a great place to learn how to navigate the ropes that exist in large organizations so you can actually get things done.</p>
<p><strong>It isn&#8217;t for Everyone</strong></p>
<p>Look, ThoughtWorks isn&#8217;t for everyone. Most roles require extensive travel. And we have a pretty <a href="http://www.thoughtworks.com/our-process">hard-core vetting process</a> for new hires. But I believe that the opportunity to do amazing work &#8211; work that is literally &#8220;make or break&#8221; type work for many of our clients &#8211; in a manner that truly makes the world a better place &#8211; is worth it. It is a place where you will have deep respect as a technical person. It is a place that bears the costs of doing the right thing. It is a place that you will be proud to work for. If you would like to join us, please let me know, either directly (aerickson &#8211; at &#8211; thoughtworks.com), or by going to our new site for potential candidates at <a href="http://join.thoughtworks.com/">join.thoughtworks.com</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=210&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2012/01/03/why-thoughtworks/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>The Link Between Continuous Delivery and Agile</title>
		<link>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/</link>
		<comments>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:07:41 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=208</guid>
		<description><![CDATA[Now that Agile has passed the 10-year mark, many people are starting to wonder what the next step should be in the evolution of Agile. As we start to think about what&#8217;s next, it doesn&#8217;t hurt to think for a moment about how we got here in the first place. As the saying goes, it&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=208&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Now that Agile has passed the 10-year mark, many people are starting to wonder what the next step should be in the evolution of Agile. As we start to think about what&#8217;s next, it doesn&#8217;t hurt to think for a moment about how we got here in the first place. As the saying goes, it&#8217;s hard to know where you&#8217;re going if you don&#8217;t know where you&#8217;ve been!</p>
<p>So let&#8217;s turn back the clock through the mists of time in the years leading to the <a href="http://agilemanifesto.org/">Agile Manifesto</a> in 2001. Back when this movement started, many of the &#8220;reasons for Agile&#8221; just seemed very intuitive. People over process? Sure. Responding to change versus following a predefined plan? Common sense. On the surface, few people would disagree with the assertions made in the Agile Manifesto. But is that enough? Can you following the Manifesto—do it all by the book—and be guaranteed to create software that delivers economic benefit? No. <em>By itself, Agile doesn&#8217;t lead to business value!</em></p>
<h2>How Can By-the-Book-Agile Fail?</h2>
<p>Let&#8217;s be clear. With its increased collaboration with the customer, more frequent releases, and increased engineering and testing discipline, Agile makes delivering value <em>more likely</em>. It&#8217;s certainly a vast improvement over multi-year &#8220;<a href="http://www.informit.com/articles/article.aspx?p=1748768">too big to fail</a>&#8221; Waterfall software projects. But even if you do everything right, even if you have the best practitioners in the world building your product, you can still create a product that fails to make money.</p>
<p>Agile—and here we mean the kind that includes the right engineering practices, such as test-driven development (TDD), pairing, SOLID principles, automated acceptance testing, and continuous integration—will ensure that you create a product that works&#8230;in the lab, at least. However, despite your best efforts, you might build a very functional eCommerce site that tries to sell something that nobody really wants. Or you might build an internal application that can&#8217;t go beyond the lab because the operations people can&#8217;t support it in production. These issues—and many other things outside direct control of the team practicing Agile—can thwart even your best efforts.</p>
<p>Article <a href="http://www.informit.com/articles/article.aspx?p=1758809&amp;seqNum=3">continues here</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=208&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/11/01/the-link-between-continuous-delivery-and-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Hourly Rates Considered Harmful</title>
		<link>http://nomadic-developer.com/2011/10/12/hourly-rates-considered-harmful/</link>
		<comments>http://nomadic-developer.com/2011/10/12/hourly-rates-considered-harmful/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 16:34:18 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[consulting]]></category>
		<category><![CDATA[ThoughtWorks]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=204</guid>
		<description><![CDATA[So here you are, on a project, and everything is going great. You are delivering value, your customer is happy, and all is well and right with the world. You are doing Agile &#8211; including the parts like pairing and TDD that lots of people pay lip service to but far fewer actually do. You [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=204&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So here you are, on a project, and everything is going great. You are delivering value, your customer is happy, and all is well and right with the world. You are doing Agile &#8211; including the parts like pairing and TDD that lots of people pay lip service to but far fewer actually do. You even are getting to use innovative technology like F#, Clojure, JRuby, Hadoop, NoSQL, Knockout.js, or one of dozens of technologies that somehow manage to enhance your productivity. Awesome!</p>
<p>One problem though. Your rates are too high. Can you help us train this group over here to be like you? They work for 1/3 your cost, and don&#8217;t ask us lots of hard questions all the time.</p>
<p>Sigh.</p>
<p>Of all the ways to sell services of higher end technology consultants &#8211; if I had to choose a worst way &#8211; I think I would end up with hourly rates. It is the same measurement vendor management departments in most large companies use to &#8220;price&#8221; the services of said consultants.  Unfortunately, it is a number that, in isolation, tells you very little of importance, for two main reasons:</p>
<ul>
<li>Measurement of effort at the wrong level of precision</li>
<li>Measurement of cost irrespective of value delivered</li>
</ul>
<h3>Measurement of effort at the wrong level of precision</h3>
<p>How many people are doing estimates on a per hour basis? There may be a few, but I highly doubt there are people other than GANTT chart driven control freaks looking to normalize that kind of thing. The reality is that, as a developer, I have a mix of useless hours, and a few really good ones where the vast majority of the value get&#8217;s delivered. The whole hours thing is a vestige from the temporary employment industry where programming was considered a fancier form of typing. We need to recognize it for the vestigial tail it is.</p>
<p>What should replace it? I am a big fan of weekly or monthly rates when working under a time and materials contract. I don&#8217;t mind the idea of &#8220;per person-sprint&#8221; either &#8211; which fits nearly into the idea that we would rarely fund only a percentage of a given sprint or iteration. I am open to other models that match funding with the unit of work, but do so in a way that you can know in advance (i.e. I would reject per story on the basis of you can only estimate effort &#8211; and it brings on too many potential fights or negotiations about how big a story ended up being).</p>
<h3>Measurement of cost irrespective of value delivered</h3>
<p>The precision issue, however, isn&#8217;t the biggest issue. The biggest issue I have with hourly rates is that they are the denominator in a much more important number, that being ratio of value delivered to cost. This issue is an old one, well covered in <a href="http://www.joelonsoftware.com/articles/HighNotes.html">Joel Spolsky&#8217;s post on the subject.</a> The specific problem &#8211; however &#8211; for higher end consulting firms, is that rates tend to be higher. Without considering value delivered in part of the equation, rate conversations tend to always be self-defeating, as it highlights the cost, without talking about the value.</p>
<p>The problem, of course, is that value delivered is often a squishy thing to measure, while you can read the cost per hour right off the invoice. To me, this is the biggest reason why <a href="http://continuous-delivery.thoughtworks.com/">Continuous Delivery</a> is important, particularly the kind that has a feedback loop that measures financial performance &#8211; it allows us to actually measure the numerator in the value delivered equation. In the best of all worlds, we move to a funding model that funds the <a href="http://www.informit.com/articles/article.aspx?p=1750200">Minimum Viable Product</a> up front, but then moves to a Evidence Based Funding model (aka &#8220;Continuous Funding&#8221;) based on value delivered via Continuous Delivery.</p>
<h3>Something Has To Be Done</h3>
<p>The funding model is broken. It has been for a long time, leading to sub-optimal results. Competition by rate irrespective of value delivered is a race to the bottom, leading to all sorts of bad outcomes for companies that get involved. Sadly, too many do. Continuous Delivery is a start, perhaps if we can get to Evidence Based Funding &#8211; we can actually sustain continuous delivery.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=204&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/10/12/hourly-rates-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Everybody’s Doing Agile&#8211;Why Can’t We?</title>
		<link>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/</link>
		<comments>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 15:17:16 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=201</guid>
		<description><![CDATA[Have you gone Agile? What are you doing this year to become Agile? We must become Agile in the next three months! These days, it is not unusual to hear about executives wanting to do an “Agile Transformation” on the entire company. Who knew that a bunch of relatively obscure techies would create a movement [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=201&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Have you gone Agile? What are you doing this year to become Agile? We must become Agile in the next three months! These days, it is not unusual to hear about executives wanting to do an “Agile Transformation” on the entire company. Who knew that a bunch of relatively obscure techies would create a movement that is now the lingua franca of executives who are attempting to turn around companies! Agile really has “come a long way, baby.”</p>
<p>It’s amazing how things change in ten years. Once considered a methodology preferred by software developers because it “helped them avoid having to do status reports,” Agile has now gone beyond its original remit as a software development method. The word Agile, in many places, has become nearly synonymous with the word Good. As flattering this must be to the original founders, it probably means it would be wise to think, very candidly, whether Agile—as in Agile Software Development, or a broader Agile Enterprise—is really something that your company can achieve.</p>
<p>Read the rest of this article <a href="http://www.informit.com/articles/article.aspx?p=1743015">at InformIT here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=201&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/08/08/everybody%e2%80%99s-doing-agile-why-can%e2%80%99t-we/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Welcome to the Revenge of The Nerds Economy</title>
		<link>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/</link>
		<comments>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 22:43:30 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=195</guid>
		<description><![CDATA[Many of you will remember Revenge of The Nerds, that fine classic movie where a bunch of, well, nerds take over the campus of Adams college by outsmarting and outwitting the jocks. For people who work in computers of a certain age and disposition &#8211; say, a late 30s geek from a western culture like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=195&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Many of you will remember Revenge of The Nerds, that fine classic movie where a bunch of, well, nerds take over the campus of Adams college by outsmarting and outwitting the jocks. For people who work in computers of a certain age and disposition &#8211; say, a late 30s geek from a western culture like myself who might have fit the nerd stereotype at various points in his early upbringing &#8211; the movie was somewhat influential. It told a story that, translated into economist-speak, equates to &#8220;intellectual capital may someday trump other kinds in terms of economic value creation.&#8221;</p>
<p>As it seems to have turned out, we are now in the Revenge of The Nerds economy. Despite 9%+ unemployment in the general economy, <a href="http://www.marketwatch.com/story/technology-is-killing-some-tech-jobs-2011-02-18">overall unemployment for software engineers is a tad below 5%</a>. But this data, which is compelling enough, does not tell the entire story.</p>
<p>The bigger story is around what kinds of things are seeing investment. There is talk of another bubble right now in technical startups. If you are a technology based startup that has reached “<a href="http://www.paulgraham.com/ramenprofitable.html">Ramen Profitability</a>”, you will almost certainly attract capital. Things are now even getting to the point where we are seeing companies that lack profits going to the IPO market (think Pandora and Groupon) &#8211; something that has been out of vogue since at least 2001. One could make the case that we will soon cross the line where it is easier to get a startup funded than it is to get a jumbo mortgage.</p>
<p>If you work in tech, there is a good chance you are feeling this, at least if you are currently employed and working for an employer that has some level of visibility. If you work for Google, Facebook, or some other high tech company, you likely do not have to work that hard to get a new job offer. Notwithstanding the cruel irony that <a href="http://www.huffingtonpost.com/2010/06/04/disturbing-job-ads-the-un_n_600665.html">people who are unemployed are often being systemically discriminated against</a>, the job market for really good, currently employed software developers is as robust has it has been in 10 years.</p>
<p>So if the nerds are all right, mostly, what about the jocks? What occupations did they end up in? While some of them may have made it to the NFL as professional football players, most others end up in spilling into the general job market. While the stereotype is that jocks end up in menial jobs, construction, or manufacturing; research being hard to find, my own experience of knowing several such folk points to careers tending to be sales, low-end finance (think mortgages), real estate, and personal training. Given, a sample size of a couple dozen doesn’t really prove anything. However, if one did extrapolate, one could come to a conjecture that while “jocks” for lack of a better word, do not do worse then average now, the nerd/jock investment and employment dynamic has changed.</p>
<p>Why the change? Now that simply taking big leveraged risks with a big pile of money isn’t in fashion (i.e., as it was before the global financial crisis), you need advantages from superior intellectual capital in order to sustain a higher than mean return on investment. Why not in fashion? From 2003-2008, it was accepted that financial engineering was the way to riches. If you only structured your collateralized debt obligation in the correct way, you could invest at 40x leverage and still retain a AAA rating on your debt. Financial engineering gave you higher profits under such a regime than traditional “engineering engineering” could provide. So money flowed into CDS structures and away from the nerdy parts of the economy that invents things.</p>
<p>So now we find ourselves in an economy where capital flocks to things like Pandora, Groupon, Facebook, Linkedin, and other things that, at their core, have interesting algorithms inside them. And we have a situation where if you are a developer capable of writing an interesting and valuable algorithm &#8211; or helping a company scale out a system that leverages one of these inventions, you are in high demand.</p>
<p>Good thing for the nerds. What this means for everyone else remains to be seen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=195&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/06/15/welcome-to-the-revenge-of-the-nerds-economy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Velocity 101: Get the Engineering Practices Right</title>
		<link>http://nomadic-developer.com/2011/01/26/velocity-101-get-the-engineering-practices-right/</link>
		<comments>http://nomadic-developer.com/2011/01/26/velocity-101-get-the-engineering-practices-right/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 14:59:52 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=185</guid>
		<description><![CDATA[IF one could equate faster typing with velocity, engineering practices perhaps would not matter in the world of software development productivity.  Thankfully, there are reasons that most organizations do not use Words Per Minute in our evaluation process when hiring new software developers.  Slamming out low quality code and claiming progress, be it story points, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=185&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>IF one could equate faster typing with velocity, engineering practices perhaps would not matter in the world of software development productivity.  Thankfully, there are reasons that most organizations do not use Words Per Minute in our evaluation process when hiring new software developers.  Slamming out low quality code and claiming progress, be it story points, or merely finished tasks on a GANTT chart, is a fast track to creating boat anchors that hold back companies rather than pushing them forward.</p>
<p>Without proper engineering practices, you will not see the benefits of agile software development.  It comes down to basic engineering principles.  A highly coupled system &#8211; be it software, mechanical, or otherwise, provides more vectors over which change in one part of the system can ripple into other parts of the system.  This is desirable to a degree &#8211; you need your transmission to couple to the engine in order for the engine to make a car move.  But the more coupling beyond the minimum you need in order to make the system work, the more the overall system destabilizes.  If the braking system suddenly activated because a Justin Bieber CD was inserted into the car stereo, you would probably see that as a pretty bad defect.  And not just because of the horrible &#8220;music&#8221; coming out of the speakers.</p>
<p>So what are the specific engineering practices?  Some are lower level coding practices, others are higher level architectural concerns.  Most rely on automation in some respect to guard against getting too complacent.  While I generally loathe to use the term &#8220;best practices&#8221; due to the fear that someone might take these practices and try to apply them in something of a cargo-cult manner, these are some general practices that seem to across a broad section of the software development world:</p>
<h2>Test Driven Development and SOLID</h2>
<p>While detractors remain, it has ceased to be controversial to suggest that the practices that emerged out of the Extreme Programming movement of the early 2000s are helpful.  Test driven development as a design technique selects for creating decoupled classes.  It is certainly possible to use TDD to drive yourself to a highly-coupled mess, given enough work and abuse of mocking frameworks.  However, anyone with any sensitivity to pain will quickly realize that having dozens of dependencies in a &#8220;God&#8221; class makes you slow, makes you work harder to add new functionality, and generally makes your tests brittle and worthless.</p>
<p>To move away from this pain, you write smaller, testable classes that have fewer dependencies.  By reducing dependencies, you reduce coupling.  When you reduce coupling, you create more stable systems that are more amenable to change &#8211; notwithstanding the other benefits you get from good test coverage.  Even if you only used TDD for design benefits- and never used the tests after initially writing them, you get better, less coupled designs, which leads to greater velocity when you need to make changes.  TDD doesn&#8217;t just help you in the future.  It helps you move faster now.</p>
<p>Indeed, TDD is just one step on the way to keeping your code clean.  Robert Martin treats the subject in much more depth in his book, <a href="http://www.amazon.com/gp/product/0132350882?ie=UTF8&amp;tag=souraaron-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0132350882">Clean Code</a><img class=" rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak rmntcjuencojxzdwwkak" style="border:none!important;margin:0!important;" src="http://www.assoc-amazon.com/e/ir?t=souraaron-20&amp;l=as2&amp;o=1&amp;a=0132350882" border="0" alt="" width="1" height="1" />.  Indeed, he calls all of us out to be professionals, making sure that we keep our standards and don&#8217;t give into the temptation to simply write a bunch of code that meets external acceptance criteria, but does so at the cost of internal quality.  While you can, in theory, slap some code together that meets surface criteria, it is false economy to assume that bad code today will have a positive effect on velocity beyond the current iteration.</p>
<p>Of course, having good test coverage&#8230; particularly good automated integration, functional, performance, and acceptance tests, has a wonderful side effect of forming a robust means of regression testing your system on a constant basis.  While it has been years since I have worked on systems that lacked decent coverage, from time to time I consult for companies that want to &#8220;move to agile&#8221;.  Almost invariably, when I do this, I find situations where a captive IT department is proposing that an entire team spend 6 months to introduce 6 simple features into a system.  I see organizations that have QA departments that have to spend another 6 months manually regression testing.  TDD is a good start, but these other types of automated testing are needed as well to keep the velocity improvements going &#8211; both during and after the initial build.</p>
<h2>Simple, but not too simple, application architecture (just enough to do the job)</h2>
<p>While SOLID and TDD (or BDD and some of the ongoing improvements) are important, it is also important to emphasize that simplicity specifically as a virtue.  That is not to say that SOLID and TDD can&#8217;t lead to simplicity &#8211; they certainly can, especially in the hands of an experienced practitioner of the tool.  But without a conscious effort to keep things simple (aka apply the KISS principle &#8211; keep it simple and stupid), regardless of development technique, excess complexity creeps in.</p>
<p>There are natural reasons for this.  One of which is the wanna-be architect effect.  Many organizations have a career path where, to advance, a developer needs to advance to the title of architect &#8211; often a role where, at least it is perceived, that you get to select design patterns and ESB buses without having to get your hands dirty writing code.  There are developers who believe that, in order to be seen as an architect, you need to use as many GoF patterns as possible, ideally all in the same project.  It is projects like these where you eventually see the &#8220;factory factories&#8221; that Joel Spolsky lampooned in his seminal <a href="http://www.joelonsoftware.com/articles/fog0000000018.html">Architecture Astronaut essay</a>.  Long story short, don&#8217;t let an aspiring architecture astronaut introduce more layers than you need!</p>
<p style="text-align:center;"><a href="http://thenomadicdeveloper.files.wordpress.com/2011/01/rube-goldberg.jpg"><img class="size-full wp-image-186 aligncenter" title="rube goldberg" src="http://thenomadicdeveloper.files.wordpress.com/2011/01/rube-goldberg.jpg?w=530" alt=""   /></a></p>
<p>It doesn&#8217;t just need to be a wanna-be architecture astronaut that creates a Rube Goldbergesque nightmare.  Sometimes, unchecked assumptions about non-functional requirements can lead a team to creating a more complex solution than actually needed.  It could be anything from &#8220;Sarbanes Oxley Auditors Gone Wild&#8221; (now there is a blog post of it&#8217;s own!) requiring using an aggressive interpretation of the law to require layers you don&#8217;t really need.  It could be being asked for 5 9s of reliability when you only really need 3. These kinds of excesses show up all the time in enterprise software development, especially when they come from non-technical sources.</p>
<p>The point is this &#8211; enterprise software frequently introduces non-functional requirements in something of a cargo-cult manner &#8220;just to be safe&#8221;, and as a result, multiplies the cost of software delivery by 10.  If you have a layer being introduced as the result of a non-functional requirement, consider challenging it to make sure it is really a requirement.  Sometimes it will be, but you would be surprised how often it isn&#8217;t.</p>
<h2>Automated Builds, Continuous Integration</h2>
<p>If creating a developer setup requires 300 pages of documentation, manual setup, and other wizardry to get right, you are likely to move much slower.  Even if you have unit tests, automated regression tests, and other practices, lacking an automated way to build the app frequently results in &#8220;Works on My Machine&#8221; syndrome.  Once you have a lot of setup variation, which is what you get when setup is manual, defect resolution goes from straightforward process to something like this:</p>
<ol type="a">
<li>Defect Logged by QA</li>
<li>Developer has to manually re-create defect, spends 2 hours trying, unable to do so</li>
<li>Developer closes defect as &#8220;unable to reproduce&#8221;</li>
<li>QA calls developer over, reproduces</li>
<li>Argument ensues about QA not being able to setup the environment correctly</li>
<li>Developer complaining &#8220;works on my machine&#8221;</li>
<li>2 hour meeting to resolve dispute</li>
<li>Developer has to end up diagnosing the configuration issue</li>
<li>Developer realizes that DEVWKSTATION42 is not equivalent to LOCALHOST for everyone in the company</li>
<li>Developer walks away in shame, one day later</li>
</ol>
<p>Indeed, having builds be automated, regular, and integrated continuously can help avoid wasting a day or five every time a defect is logged.  It should not be controversial to say that this practice increases velocity.</p>
<h2>Design of Software Matters</h2>
<p><a href="http://martinfowler.com/articles/designDead.html">Design isn&#8217;t dead</a>.  Good software design can help lead to good velocity.  Getting the balance wrong &#8211; too simple, too complex, cripples velocity.  Technical practices matter.  Future articles in this <a href="http://nomadic-developer.com/category/velocity/">velocity series</a> will focus on some of the more people related ways to increase velocity, and they are certainly important.  But with backward engineering practices, none of the things you do on the people front will really work.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=185&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/01/26/velocity-101-get-the-engineering-practices-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>

		<media:content url="http://www.assoc-amazon.com/e/ir?t=souraaron-20&#38;l=as2&#38;o=1&#38;a=0132350882" medium="image" />

		<media:content url="http://thenomadicdeveloper.files.wordpress.com/2011/01/rube-goldberg.jpg" medium="image">
			<media:title type="html">rube goldberg</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Does Custom Software Cost So Much?</title>
		<link>http://nomadic-developer.com/2011/01/03/why-does-custom-software-cost-so-much/</link>
		<comments>http://nomadic-developer.com/2011/01/03/why-does-custom-software-cost-so-much/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 20:38:14 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Velocity]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=176</guid>
		<description><![CDATA[After nearly 20 years writing custom software, mostly for corporations in IT departments, there is nearly a uniform meme I encounter among those who sponsor projects that involve custom software development: &#8220;Custom software costs too much!&#8221; There are stories, anecdotes, studies, and all sorts of experience about how software development schedules that go over time, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=176&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>After nearly 20 years writing custom software, mostly for corporations in IT departments, there is nearly a uniform meme I encounter among those who sponsor projects that involve custom software development:</p>
<blockquote><p>&#8220;Custom software costs too much!&#8221;</p></blockquote>
<p>There are stories, anecdotes, <a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CCIQFjAA&amp;url=http%3A%2F%2Fwww.projectsmart.co.uk%2Fdocs%2Fchaos-report.pdf&amp;rct=j&amp;q=chaos%20report&amp;ei=ii8iTceoEoGlnQfE8_3pDQ&amp;usg=AFQjCNGL1M7Uz7PqTlFdgXK-FjHpiaCEmg&amp;sig2=L4sv1nNMh1q266AoEPlaCw&amp;cad=rja">studies</a>, and all sorts of experience about how software development schedules that go over time, well over budget, and fail to meet expectations.  Far more seldom are stories that talk about how software was delivered in less time than was estimated.  It should be no surprise that, despite the fact that corporations are sitting on more cash than they ever have in corporate history, companies are still skittish about embarking on new custom development projects.</p>
<p>This, of course, is not new.  This has been a theme in software development even far before Fred Brooks wrote <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">The Mythical Man Month</a>.  What is surprising to me &#8211; is how this condition survives even despite things like agile and lean coming to the fore.  Yes, its true, even in purported agile and lean projects, there is a great variability in productivity that, when combined with a tendency to budget and plan based on best case scenarios in corporate IT, result in far too many late and over budget projects.  Agile and lean help &#8211; indeed, are the right direction (this is one of the reasons I work for ThoughtWorks!). However, they are not a silver bullet.  The reality is that, despite everything we try to do to mitigate risks with agile and lean, project sponsors are rightly concerned with the level of risk they see as inherent in software projects.  As a result, they are going to use levers available to them to manage these risks.</p>
<h2>Levers Used to Manage Risk</h2>
<p>So what levers do investors have in order to manage risk?  The ones that most use tend to be:</p>
<ul>
<li>Manage using process controls (scope management, quality gates, governance, PMBOK, ITIL)</li>
<li>Manage down the invested capital at risk</li>
</ul>
<p>What happens when you pull these levers?  Well, sadly, this is what you tend to get:</p>
<ul>
<li>Waterfall software development, often fixed bid, with strict &#8220;de jure&#8221; scope control with the real &#8220;de facto&#8221; scope additions added through a back-channel.</li>
<li>Attempt to get lowest cost per developer hour.</li>
</ul>
<p>While this does not occur in more enlightened organizations that likely understand the fact that not all &#8220;developer hours&#8221; are the same, the sad fact is that most organizations lack such enlightenment.  It is easy to imagine why this occurs.  If you are a CIO managing a 2000 person IT department, part of your bias is going to be that you, being a smart CIO and all, have such a large organization for a reason.  At this level of corporate politics, not only is your prestige buried in the size of your department, but the idea that you have 80% more people than you might need is, to put it simply, heretical.  Given that such heretics that &#8220;rock the boat&#8221; tend to have short careers in high level corporate IT, it is not surprising that the such &#8220;resource oriented&#8221; ways of thinking predominate the conversation at the highest levels of IT.</p>
<h3>Why These Levers Fail</h3>
<p>Not all failure is the same.  And not all failing is bad.  The problem is when we fail to learn from failure.  And the way these levers fail, then tend to encourage the kind of failure you don&#8217;t learn from.  The kind of failure that begets more failure rather than begets learning from mistakes.</p>
<h4>How the Hourly Rate Lever Fails</h4>
<p>Let us take on failure that results when you try to succeed through usage of the cost reduction lever.  A common way this gets sold is when there is a vendor management group &#8211; especially one where the leading VP is bonused strictly on lowering rates &#8211; that wields a lot of power in an organization.  The presence of companies selling developers chiefly on the basis of rate attests to the fact that there is a market for this.  You do not have to look hard for this &#8211; much of the market for offshore development caters to this group.  Not to be outdone, there are many first world (US in particular) based companies that try to play the low end of the market.</p>
<p>However, another source of &#8220;search for the lowest rate&#8221; surprisingly comes from initial (and often feeble) attempts to try to get estimating right as a result of a failed waterfall project.  If the last project failed, the chances are, the next round of estimating will be much more conservative.  The conservative estimate, often higher than initial budget expectations, causes the sponsor to try to drive down the unit cost per hour.  Remember, in such a situation, the hour is perceived as the fixed quantity.  This attempt to fit a large number of hours into a fixed budget also is a large source of project sponsors trying to pull the hourly rate lever.</p>
<p>Predictably, these kinds of moves fail.  When you go lower on the rate scale, you tend to get less qualified software developers.  While there is a lot of corporate hubris tied into the fiction that there is some magical source of low cost developers that are otherwise brilliant and able to achieve results above their pay grade, seldom do such moves tend to work out.  Low cost shops tend to have lots of turnover because of low wages &#8211; good developers are not stupid, and will not tolerate low wages for long.  Beyond this, of course, low cost shops tend to underestimate work as well, because they often compete with other low cost shops.  It is a race to the bottom, ironically, that causes even more project failure.</p>
<p>The result of all this is, of course, chasing low-cost development tends to cause a self-reinforcing failure cycle.  Project fails, next project has longer estimates, sponsor does not want to spend more money on failure, leading to the next push to drive rates even lower.  This continues until the organization loses any faith in any ability to write software at all.  The only thing that stops this is, literally, company bankruptcy, acquisition, or a major change in management at the top of IT (if not the CEO) so that the negative feedback cycle can be broken.</p>
<h4>How the &#8220;Strong Process&#8221; Lever Fails</h4>
<p>One step up from project sponsors who will hit the cost lever like a mouse hitting a lever in a skinner box are the project sponsors who put their full faith in processes, such as those proscribed by the PMBOK or recommended by ITIL to solve their cost problems.  The thought is that &#8211; if only we could get a better plan, and stick to the plan, we could get better at predicting the cost of software.</p>
<p>The chief thing that such frameworks try to do is to do strong change management, contracted service levels, and detailed planning in order to achieve the end of predictable software development.  This approach, of course, leads to several problems that are well understood by many people in the Agile and Lean communities but certainly bear repeating:</p>
<ul>
<li>Software development itself, particularly when done with business analysts, frequently leads to discoveries.  As Mary Poppendeick once pointed out, the most valuable feedback for changes to software comes at the latter end of a project, when the group analyzing and developing the software best understands the domain.  Traditional processes tend to consider these late changes the most costly, seeking to minimize the highest value work.</li>
<li>Velocity is deeply variable based on factors that management usually does not want to talk about.  A good software developer can be 10 times more effective than an average software developer.  Other environmental factors that have little to do with the presence of a prescriptive process can cause additional wild swings.  A future article in this series will go into more detail about how potential swings in velocity are an order of magnitude more significant than the swings in &#8220;cost per hour&#8221;.</li>
</ul>
<p>Proscriptive plans that try to predict cost and schedule without understanding the individuals, service climate, DevOps maturity, and multitude of other variables that can affect the speed of software development will surely fail.  The simple fact that corporate budgeting processes select for optimistic thinking most of the time leads to assuming that simple program that consists of 4 main screens will take 8 weeks rather than 8 quarters.</p>
<p>Why is this a cycle of failure?  Well &#8211; what happens is that you bring PMBOK, ITIL, or some other &#8220;capital-P&#8221; Process in, and it fails.  Because such processes tend to be more accepted by the corporate finance community, the reaction to a failed project tends to be &#8220;we didn&#8217;t do enough process control&#8221;, rather than &#8220;we did too much&#8221;.  The next round of projects tend to have more detailed estimating and stronger change control.  There are stories that I personally know of requirements efforts that are measured by years, rather than weeks.</p>
<h3>What Levers Remain?</h3>
<p>There are levers that go far too much underused.  In my experience, they are as follows:</p>
<h4>Manage Project Duration Down</h4>
<p>In general, prefer smaller projects to larger ones.  Predictability works better when the team is smaller and the timeframe is short.  I can almost decently predict what one team of 8 people will complete in an iteration if I know all the people, skills, and modes of working on that team.  I, personally, am a believer in doing lots of small things rather than one big thing &#8211; as it allows for a faster feedback cycle and overall a less risky investment.  However, there are many projects &#8211; some of the most interesting ones &#8211; that will never be small budget, short duration projects.  This leads to the lever I use when I can&#8217;t manage duration down:</p>
<h4>Manage Velocity Up</h4>
<p>I have seen a team of 6 people deliver in 7 months in one company the same amount of work I have seen 150 people deliver in 2 years in other companies.  And I am not alone, I have talked with others in this business, and nearly everyone I talk to has either seen, or worked on one of these very effective software development teams.</p>
<p>Velocity matters.  It is <a href="http://www.martinfowler.com/bliki/CannotMeasureProductivity.html">hard to measure productivity</a> the way you measure a person&#8217;s shoe size, but you can sure manage relative productivity over a long period of time.  The perception that software costs too much is, in my opinion, one of the factors holding back the global economy from expanding.  In any large company, any decent developer,  would be shocked at the waste involved in many business processes &#8211; waste that could be eliminated by better software implementation.  There are companies that will not change commission plans, product offerings, or even product pricing to be more profitable, chiefly because of software constraints.  If you think software does not have a serious effect on both the opportunities or limitations of a company, you literally must not be paying very much attention.</p>
<h2>What&#8217;s Next?</h2>
<p>In this <a href="http://nomadic-developer.com/category/velocity/">series of upcoming posts</a>, I am going to explain various factors that affect velocity, and how you can optimize them in a manner that does not sacrifice quality.  Factors that, when understood and properly managed, can mean the difference between a flexible company that can respond to market conditions, and a company whose technology that does not allow it to run so much as a second shift when demand ramps up.</p>
<p>Stay tuned&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=176&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2011/01/03/why-does-custom-software-cost-so-much/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
		<item>
		<title>What Working at ThoughtWorks Has Taught Me About Consulting So Far</title>
		<link>http://nomadic-developer.com/2010/12/08/working-at-thoughtworks/</link>
		<comments>http://nomadic-developer.com/2010/12/08/working-at-thoughtworks/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 15:42:09 +0000</pubDate>
		<dc:creator>Aaron Erickson</dc:creator>
				<category><![CDATA[consulting]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThoughtWorks]]></category>

		<guid isPermaLink="false">http://nomadic-developer.com/?p=167</guid>
		<description><![CDATA[In my book The Nomadic Developer, I spent an entire chapter covering techniques that allow you to thrive as a technology consultant.  Of course, I wrote that before I joined ThoughtWorks.  Since joining, I can certainly say that ThoughtWorks has given me quite an education about technology consulting.  This post explores some of the things [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=167&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In my book <a href="http://tinyurl.com/buynomadbook" target="_blank">The Nomadic Developer</a>, I spent an entire chapter covering techniques that allow you to thrive as a technology consultant.  Of course, I wrote that before I joined ThoughtWorks.  Since joining, I can certainly say that ThoughtWorks has given me quite an education about technology consulting.  This post explores some of the things I have learned over the past 18 months.</p>
<h2>Technology Consulting is 10% Technology, 90% Consulting</h2>
<p>Being a great technologist is around 10% of the skillset required for being a good technology consultant.  I used to think it was 50%, but my understanding has now vastly changed towards the direction of the so called &#8220;soft skills&#8221; being more important.  In most companies, there are thousands of opportunities to make things better using technology in some way, shape, or form.  The trick to opening those opportunities is overcoming the massive &#8220;wall of cynicism&#8221; towards these kinds of investments.  Discovering the opportunities, overcoming the wall of cynicism, getting the human stakeholders on board (<a href="http://nomadic-developer.com/2010/07/19/upper-management-support-the-key-to-success-no/" target="_blank">not just upper management</a>!), and then actually putting this all together to get a project funded and delivered seems to be 90% of the challenge.</p>
<h2>Technology Consulting is a Subset Of, not Different Than, Management Consulting</h2>
<p>You can do a project without having it have deep implications for the overall business.  But I doubt that is the kind of project I would ever want to work on.  Most technology investments are, in fact, capital investments in the business.  It is very common for technology to end up both constraining <em>and </em>enabling corporate strategy. Even minor implementation details can have significant effects on strategic choices that a company will be able to make down the road. Everything from ability to do effective mergers, price changes, new product launches, and other strategic initiatives deeply depend on business technology.  For good or ill, technology decisions drive business strategy &#8211; and until that condition changes, it is my conjecture that <em>effective </em>technology consulting is really a part of the overall management consulting picture.</p>
<p>ThoughtWorks, having recognized this, is formally rolling out our <a href="http://www.thoughtworks.com/consulting" target="_blank">Consulting Practice</a> which, among other things, seeks to formally do what we have been doing informally since our inception, which is to advise companies not just on how to implement technology, but what technology to implement.</p>
<h2>Clients are Never Perfect</h2>
<p>Expecting to come to TW where you will work on perfectly  &#8220;aligned&#8221; clients that always espouse our values is, to be blunt, a poor  expectation. Most people call the doctor when they are sick, not when  they are well. Sometimes &#8211; no &#8211; all the time &#8211; organizational  transformation is HARD, and you will have to, excuse my French, slog  through some shit in order to get to the holy grail of your client that  needs help becoming a perfectly functioning agile client that perfectly  practices continuous delivery.</p>
<h2>Never Underestimate The Importance of Soft Skills</h2>
<p>Good consulting involves:</p>
<ul>
<li>Controlling your temper and not being &#8220;shocked&#8221; when you see things like bad code and retrograde practices. When you go on site, expect anything and everything.</li>
<li>Understanding and addressing the skepticism of organizations for which you are the 4th, 5th, or 10th person who has been put there to try to fix things.</li>
<li>Learning how to build credibility so you can spend it later when you need to.</li>
<li>Understanding the limits of your own capabilities, so you can know when to call for help (aka you do not have all the answers).</li>
<li>Learning how to understand a domain quickly and credibly, so you can talk in the language of the client</li>
<li>&#8230; and a million other little things that have more to do with relations between humans than they have to do with technology &#8230;</li>
</ul>
<p>It has been quite an experience, personally, just finding out how much I didn&#8217;t know, learning how to apply these principles in a large programme of work.  That these things are important is rather intuitivley obvious, but at scale, it becomes a list of things you have to remind yourself about every day.  When the stakes go up, and the number of people increase, the importance of these basic fundamentals really starts to outweigh almost everything else!</p>
<h2>The Bottom Line</h2>
<p>If you want to actually deliver a great technology solution, getting the technology right is just the table stakes.  Getting the people thing right &#8211; the consulting &#8211; is 90% of the actual work.  It is thrilling, engrossing work, but it certainly isn&#8217;t just about software!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thenomadicdeveloper.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thenomadicdeveloper.wordpress.com/167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nomadic-developer.com&#038;blog=4544199&#038;post=167&#038;subd=thenomadicdeveloper&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nomadic-developer.com/2010/12/08/working-at-thoughtworks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0b8f0bc5664363821866c6496e8d0327?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Aaron Erickson</media:title>
		</media:content>
	</item>
	</channel>
</rss>
