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

<channel>
	<title>The Electric Cloud Blog</title>
	<atom:link href="http://www.electric-cloud.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.electric-cloud.com/blog</link>
	<description>This is your source for private development cloud best practices and technical tips and tricks for Electric Cloud solutions</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:32:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>90 days to 10 minutes – How do you like  that for efficient software delivery cycles?</title>
		<link>http://www.electric-cloud.com/blog/2012/02/02/1320/</link>
		<comments>http://www.electric-cloud.com/blog/2012/02/02/1320/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 22:32:05 +0000</pubDate>
		<dc:creator>Electric Cloud</dc:creator>
				<category><![CDATA[Electric Cloud Solutions]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1320</guid>
		<description><![CDATA[We recently talked to one of our customers implementing ElectricCommander, our software development and delivery automation solution, and the improvements this customer has seen with ElectricCommander are truly astounding. The customer (for privacy reasons, we shall not name them here), creates cutting edge software used by millions of web users/consumers around the globe.  Their software [...]]]></description>
			<content:encoded><![CDATA[<p>We recently talked to one of our customers implementing ElectricCommander, our software development and delivery automation solution, and the improvements this customer has seen with ElectricCommander are truly astounding.</p>
<p>The customer (for privacy reasons, we shall not name them here), creates cutting edge software used by millions of web users/consumers around the globe.  Their software is written by a large development team–once coded, the software is built, tested and then promoted/deployed to their production data centers. And this process, even for this very sharp engineering team, is quite a tedious one.</p>
<p>Building with Maven, running system, performance, and acceptance tests, and packaging for deployment is complex enough; working with these tools, different teams, disparate products and varying skillsets only added to the complexity. The process would take them a week or even months (3 months is what the customer actually calculated on average) to get from development to production.</p>
<p>But their business demands and goals are very clear. There is only way to win in the marketplace—iterate and deliver fast.  If you need to succeed in today&#8217;s fast moving market, you need to be more aligned and adaptable to your customer needs.</p>
<p>And that’s where Continuous Deployment comes in. The manifesto for Agile development states: &#8220;Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.&#8221; This is at the core of Agile, because it is only in the act of delivery that we close the loop with the users and initiate feedback. And our customer has taken this notion to heart.</p>
<p>Today, the customer has automated their entire process using ElectricCommander. Every one of their development, testing and packaging tool is completely integrated and automated by the ElectricCommander solution. The customer has built workflows that sequence and manages the entire process. As software is written, compiled, tested and deployed to the various environments along the process chain. Tedious manual operations have been eliminated, and errors are detected earlier in the cycle. All this gives the customer good visibility into their software delivery status – what application is in which state of their delivery pipeline.</p>
<p>Best of all, the entire process – from development to Ops can be executed in less than <strong>10 minutes</strong>! Now the customer is able to experiment with their software in a way most software organizations can only dream of. And that makes them truly competitive in the marketplace.</p>
<p>Just another happy day in the life of an Electric Cloud customer.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2012/02/02/1320/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Secret to Fast, Reliable Builds – Part 2</title>
		<link>http://www.electric-cloud.com/blog/2011/12/05/the-secret-to-fast-reliable-builds-part2/</link>
		<comments>http://www.electric-cloud.com/blog/2011/12/05/the-secret-to-fast-reliable-builds-part2/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 23:50:42 +0000</pubDate>
		<dc:creator>Electric Cloud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1302</guid>
		<description><![CDATA[In a previous blogpost by Eric Melski, he covered the basic conflict detection algorithm in ElectricMake. It’s surprisingly simple, which is one of its strengths. But if ElectricMake strictly adhered to the simple definition of a conflict, many builds would be needlessly serialized, sapping performance. Over the years we’ve made a variety of tweaks to the [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous blogpost by Eric Melski, he covered <a href="http://blog.melski.net/2011/07/05/how-electricmake-guarantees-reliable-parallel-builds/">the basic conflict detection algorithm in ElectricMake</a>. It’s surprisingly simple, which is one of its strengths. But if ElectricMake strictly adhered to the simple definition of a conflict, many builds would be needlessly serialized, sapping performance. Over the years we’ve made a variety of tweaks to the core algorithm, adding support for special cases to improve performance. Here are some of those special cases.</p>
<p><strong>Non-existence Conflicts</strong></p>
<p>One obvious enhancement is to ignore conflicts when the two versions are technically different, but effectively the same. The simplest example is when there are two versions of a file which both indicate non-existence, such as the initial version and the version created by job C in this chain for file <span style="font-family: 'Courier New'">foo</span>:</p>
<p><a href="http://emelski.files.wordpress.com/2011/10/chain.png"><img src="http://emelski.files.wordpress.com/2011/10/chain.png?w=600" alt="" width="402" height="146" /></a></p>
<p>Suppose that job D, which falls between C and E in serial order, runs before any other jobs finish. At runtime, D sees the initial version, but strictly speaking, if it had run in serial order it would have seen the version created by job C. But the two versions are functionally identical — both indicate that the file does not exist. From the perspective of the commands run in job D, there is no detectable difference in behavior regardless of which of these two versions was used. Therefore emake can safely ignore this conflict.</p>
<p>To read the rest of this post and find out the other special cases to improve performance, check out Eric Melski’s blog <a href="http://blog.melski.net/2011/10/11/exceptions-to-conflict-detection-in-electricmake/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/12/05/the-secret-to-fast-reliable-builds-part2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ElectricCommander Feature Spotlight: The Batch API</title>
		<link>http://www.electric-cloud.com/blog/2011/11/28/electriccommander-feature-spotlight-the-batch-api/</link>
		<comments>http://www.electric-cloud.com/blog/2011/11/28/electriccommander-feature-spotlight-the-batch-api/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 20:48:42 +0000</pubDate>
		<dc:creator>Sandeep Tamhankar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ElectricCommander]]></category>
		<category><![CDATA[ElectricCommander large-scale]]></category>
		<category><![CDATA[ElectricCommander performance]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1260</guid>
		<description><![CDATA[This is the first in a series of spotlights on some ElectricCommander features that you may not be using as much as you could or which you may not even be aware of. In this installment, I illustrate why the batch api is an important tool in your arsenal as a procedure developer and how [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first in a series of spotlights on some ElectricCommander features that you may not be using as much as you could or which you may not even be aware of. In this installment, I illustrate why the batch api is an important tool in your arsenal as a procedure developer and how to use it.</p>
<h3>What is the Batch API?</h3>
<p>In a typical ec-perl script, you issue requests to the server one at a time and process each result before issuing the next request. For example:</p>
<pre class="brush: perl; title: ; notranslate">
my $xpath = $ec-&gt;getProperty(&quot;foo&quot;);
my $fooVal = $xpath-&gt;findvalue(&quot;//value&quot;)-&gt;value();
... some logic with $fooVal ...
$xpath = $ec-&gt;getProperty(&quot;bar&quot;);
my $barVal = $xpath-&gt;findvalue(&quot;//value&quot;)-&gt;value();
... some logic with $barVal ...
</pre>
<p>Each of these requests is a round-trip to the server. Thus, the script blocks twice waiting for responses. The Batch API allows you to aggregate multiple requests, send them all together in a batch, and wait for the aggregated response. The example above could be implemented like this:</p>
<pre class="brush: perl; title: ; notranslate">
my $batch = $ec-&gt;newBatch(&quot;parallel&quot;);
my $fooReqId = $batch-&gt;getProperty(&quot;foo&quot;);
my $barReqId = $batch-&gt;getProperty(&quot;bar&quot;);
$batch-&gt;submit();

# Get the value of the foo property from its response. We can't be
# lazy and do the same &quot;//value&quot; xpath query as before because
# that'll do the search from the root of the entire xml response,
# which includes *both* responses. Instead, we do a relative
# query starting at the appropriate &quot;response&quot; node.
my $fooVal = $batch-&gt;findvalue($fooReqId, &quot;property/value&quot;)
                   -&gt;value();
... some logic with $fooVal ...
my $barVal = $batch-&gt;findvalue($barReqId, &quot;property/value&quot;)
                   -&gt;value();
... some logic with $barVal ...
</pre>
<p>The Batch API addresses three shortcomings of the traditional API:</p>
<ol>
<li>It allows you to &#8220;batch up&#8221; multiple requests, reducing the number of round-trips to the server.</li>
<li>It allows you to run multiple requests in parallel, as shown above in the getProperty example.</li>
<li>It allows you to run multiple requests in a single transaction; all succeed, or no change is persisted in the server.</li>
</ol>
<p>Each of these shortcomings are handled by a batch &#8220;mode&#8221; specified when creating a batch object:</p>
<dl>
<dt>serial</dt>
<dd>run the requests in the batch one after the other, serially, in different transactions. If a request in the batch fails, the other requests will still run. Each individual response indicates success or failure for that request.</dd>
<dt>parallel</dt>
<dd>run the requests in the batch in parallel, in different transactions. If a request in the batch fails, the other requests will still run. Each individual response indicates success or failure for that request.</dd>
<dt>single</dt>
<dd>run the requests in the batch one after the other, serially, in the same transaction. If a request in the batch fails, the transaction is rolled back, thus reverting all requests in the batch. Walk through each response to find the one that failed and why; all subsequent responses have a generic &#8220;batch failed&#8221; error to indicate that those requests didn&#8217;t get run at all because of the earlier error.</dd>
</dl>
<h3>Performance Comparison</h3>
<p>The following tests show how much performance gain the batch api provides for various scenarios.</p>
<h5>Procedure Creation Test</h5>
<p>In this test, we create procedures of various sizes with the batch api (single transaction mode) and without the batch api. All ec-perl scripts establish an ssl connection with the server when submitting the first message, regardless of whether that first message is an ordinary request or a batch of requests. The test results reported below factor out this cost by issuing an innocuous <em>getServerInfo</em> call, then measuring the time it takes to issue the <em>createStep</em> requests.</p>
<p><img src="http://www.electric-cloud.com/blog/wp-content/uploads/2011/11/step_creation_local_agent1.png" alt="" width="377" height="227" class="aligncenter size-medium wp-image-1275" /></p>
<p>This graph shows that using the batch api reduces procedure creation time by about 50% for medium to large procedures and the time difference is negligible (less than 1 second) for procedures with 10 steps. In this scenario, the local agent on the Commander server issued the create step requests in a job. It&#8217;s interesting to note what happens if the machine issuing the requests is on a WAN; to emulate that, I ran the test from a home network VPNed into Electric Cloud with a Commander server in our office:</p>
<p><img src="http://www.electric-cloud.com/blog/wp-content/uploads/2011/11/step_creation_wan1.png" alt="" width="377" height="227" class="aligncenter size-medium wp-image-1283" /></p>
<p>As one would expect, the round trip costs are somewhat larger now, so using the batch api reduces procedure creation time by about 66%. Again, not a lot of impact for small procedures (in this case, it took about 1 second to create such a procedure either way). Also, because the batch api uses one round trip to create the procedure, the WAN versus local-agent numbers are virtually the same, showing that most of the time is spent in server processing and the I/O costs are negligible in comparison:</p>
<p><img src="http://www.electric-cloud.com/blog/wp-content/uploads/2011/11/step_creation_batch1.png" alt="" width="377" height="227" class="aligncenter size-medium wp-image-1282" /></p>
<h5>Parallel GetProperty Test</h5>
<p>In this test, we time how long it takes to get varying numbers of properties with a parallel batch and without the batch api. As for the procedure creation test, we factor out the cost of establishing the ssl connection to the server.</p>
<table style="border: 0px" cellspacing="4">
<tr>
<td style="border: 0px">
<img src="http://www.electric-cloud.com/blog/wp-content/uploads/2011/11/get_property_local_agent1.png" alt="" width="235" class="aligncenter size-medium wp-image-1280" /></td>
<td style="border: 0px"><img src="http://www.electric-cloud.com/blog/wp-content/uploads/2011/11/get_property_wan1.png" alt="" width="235" class="aligncenter size-medium wp-image-1281" /></td>
</tr>
</table>
<p>The difference here isn&#8217;t as dramatic as in the procedure creation case, but it&#8217;s still quite significant for medium and large numbers of getProperty calls with roughly a 30% time savings when getting properties on the local agent and about 55% savings when getting properties over a WAN.</p>
<h3>Conclusions</h3>
<p>The batch api provides significant performance benefit in both LAN and WAN environments for medium and large sets of requests. For small sets, the benefit is not very high, but it&#8217;s certainly no worse than issuing requests one at a time. Also, for scripts that contact the server repeatedly with a few requests every time, the little savings from each small batch request can add up. Of course, if it&#8217;s possible to structure such scripts to have a few large batches of requests instead, you&#8217;ll achieve the best speed-up.</p>
<p>
For more details and examples, see the <em>Using ectool and the Commander API</em> section of online help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/11/28/electriccommander-feature-spotlight-the-batch-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Secret to Fast, Reliable Builds &#8211; Part 1</title>
		<link>http://www.electric-cloud.com/blog/2011/11/17/the-secret-to-fast-reliable-builds-part-1/</link>
		<comments>http://www.electric-cloud.com/blog/2011/11/17/the-secret-to-fast-reliable-builds-part-1/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 00:59:28 +0000</pubDate>
		<dc:creator>Electric Cloud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1251</guid>
		<description><![CDATA[Parallel execution is a popular technique for reducing software build length, and for good reason. These days, multi-core computers have become standard — even my laptop has four cores — so there’s horsepower to spare. And it’s “falling over easy” to implement: just slap a “-j” onto your make command-line, sit back and enjoy the [...]]]></description>
			<content:encoded><![CDATA[<p>Parallel execution is a popular technique for reducing software build length, and for good reason. These days, multi-core computers have become standard — even my laptop has four cores — so there’s horsepower to spare. And it’s “falling over easy” to implement: just slap a “-j” onto your make command-line, sit back and enjoy the benefits of a build that’s 2, 3 or 4 times faster than it used to be. Sounds great!</p>
<p>But then, inevitably, invariably, you run into parallel build problems: incomplete dependencies in your makefiles, tools that don’t adequately uniquify their temp file names, and any of a host of other things that introduce race conditions into your parallel build. Sometimes everything works great, and you get a nice, fast, correct build. Other times, your build blows up in spectacular fashion. And then there are the builds that appear to succeed, but in fact generate bogus outputs, because some command ran too early and used files generated in a previous instead of the current build.</p>
<p>To read the rest of this article, check out Eric Melski&#8217;s blog <a class="vt-p" href="http://blog.melski.net/2011/07/05/how-electricmake-guarantees-reliable-parallel-builds/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/11/17/the-secret-to-fast-reliable-builds-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Won’t Scale Without Automation: Limited Insight</title>
		<link>http://www.electric-cloud.com/blog/2011/11/01/agile-won%e2%80%99t-scale-without-automation-limited-insight/</link>
		<comments>http://www.electric-cloud.com/blog/2011/11/01/agile-won%e2%80%99t-scale-without-automation-limited-insight/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 23:42:47 +0000</pubDate>
		<dc:creator>Electric Cloud</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Scale]]></category>
		<category><![CDATA[workflow automation]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1241</guid>
		<description><![CDATA[This is part five of a five part series where we will present five distinct challenges that if left unaddressed will drastically reduce an organization’s ability to gain the benefits promised by a move to Agile development methods. It’s a sad fact that in most enterprises, the process of building, testing, and deploying software is [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is part five of a five part series where we will present five distinct challenges that if left unaddressed will drastically reduce an organization’s ability to gain the benefits promised by a move to Agile development methods.</em></p>
<p>It’s a sad fact that in most enterprises, the process of building, testing, and deploying software is a‘black box’: very few people are able to explain exactly what occurs when software is delivered. Thisis a natural outgrowth of the ‘one-off’ manual processes that are so prevalent. There’s limited captureof inputs, and even less analysis of the results of this process. Any automated logic that does exist islocked away in homegrown scripts.</p>
<p>Automation encourages and facilitates migration towards a meta-driven software delivery process. Allresults are captured and summarized at the appropriate granularity, whether at the executive, team,or job level. Keeping track of this critical information makes it much easier to identify and remedybottlenecks, errors, and other complications that can sabotage any Agile initiative.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/11/01/agile-won%e2%80%99t-scale-without-automation-limited-insight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Not-So-Secret Secrets to Management Success: Respect</title>
		<link>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect/</link>
		<comments>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 21:23:48 +0000</pubDate>
		<dc:creator>Sven Delmas</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Electric Cloud]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1208</guid>
		<description><![CDATA[Hugely important, mutual respect makes it possible to work together efficiently. Respect yourself, your coworkers, and your customers. Expect the same from everyone on your team, and help those who run into any difficulties with that. Any feedback is of course welcome (I sure hope my team won&#8217;t correct me too much). Read the other [...]]]></description>
			<content:encoded><![CDATA[<p>Hugely important, mutual respect makes it possible to work together efficiently. Respect yourself, your coworkers, and your customers. Expect the same from everyone on your team, and help those who run into any difficulties with that.</p>
<p>Any feedback is of course welcome (I sure hope my team won&#8217;t correct me too much).</p>
<p>Read the other parts of the series here:</p>
<ol>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success">Introduction</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment">Empowerment</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals">Goals</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback">Feedback</a></li>
<li>Respect</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Not-So-Secret Secrets to Management Success: Feedback</title>
		<link>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback/</link>
		<comments>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 21:19:34 +0000</pubDate>
		<dc:creator>Sven Delmas</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Electric Cloud]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1205</guid>
		<description><![CDATA[Of course, I know and use all the favorite feedback phrases (&#8220;My door is always open&#8221;, &#8220;Let&#8217;s have regular one on ones&#8221;, etc.)  These are all good, but everybody is busy, so sometimes these happen, and sometimes they don&#8217;t. I am sure we have all had those pretty useless &#8220;Q: So how are things going?, [...]]]></description>
			<content:encoded><![CDATA[<p>Of course, I know and use all the favorite feedback phrases (&#8220;My door is always open&#8221;, &#8220;Let&#8217;s have regular one on ones&#8221;, etc.)  These are all good, but everybody is busy, so sometimes these happen, and sometimes they don&#8217;t. I am sure we have all had those pretty useless &#8220;Q: So how are things going?, A: Great!, Q: Anything to talk about?, A: Nope, can I get back to coding now?&#8221; sessions (Well, I hope I am not the only one&#8230; that would make me look bad). Even so, we should still have an open door, or chair for those if us that don&#8217;t have a door.  I always ending up thinking, though, that there must be something more.</p>
<p>One thing I try to do at every opportunity is to give immediate feedback for a job well done. &#8220;Great idea&#8221;, &#8220;Awesome debugging foo&#8221;, etc. When you see an interesting tweet post or email, take the minute to let that person know you appreciated that post. Try it, not just within your organization, but with anyone you interact with. Give the praise publicly, so people can share when good things happen. Without this, I found that people end up eventually feeling &#8220;Well&#8230; nobody cares about me doing this, so I might as well stop&#8221;&#8230; and then they do. So sad, so avoidable.</p>
<p>I am also trying to give negative feedback as early as possible. Now, I know it’s never fun or comfortable and, thankfully, I haven&#8217;t really had to do that a lot in my career. I think we all agree that feedback should be constructive, working towards fixing the problem. There may be situations where that is not possible, at which point the best that can be done is to find a mutually beneficial resolution (uncomfortable situation I am sure).</p>
<p>So how does it work? Excellent, everybody holds hands and sings kumbaya for most of the day (Well&#8230; don&#8217;t tell my boss). But, seriously, my team continues to amaze me with great results, unique ideas and a willingness to go the extra mile or two.</p>
<p>Read the other parts of the series here:</p>
<ol>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success">Introduction</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment">Empowerment</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals">Goals</a></li>
<li>Feedback</li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect">Respect</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Not-So-Secret Secrets to Management Success: Empowerment</title>
		<link>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment/</link>
		<comments>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 21:18:30 +0000</pubDate>
		<dc:creator>Sven Delmas</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Electric Cloud]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1201</guid>
		<description><![CDATA[Team members are empowered to make their own decisions where appropriate and know when to consult. I personally don&#8217;t care for micro management (too much work for me), so when choosing members for my team I look for people with a strong sense of personal accountability who drive towards finding the best possible solution. That [...]]]></description>
			<content:encoded><![CDATA[<p>Team members are empowered to make their own decisions where appropriate and know when to consult. I personally don&#8217;t care for micro management (too much work for me), so when choosing members for my team I look for people with a strong sense of personal accountability who drive towards finding the best possible solution. That applies to all levels of seniority, as some of my younger team members can attest to (they got to play with some serious stuff almost immediately). And guess what? They swam quite happily in those deep waters.</p>
<p>That level of individual decision-making freedom implies that a wrong decision isn’t grounds for immediate disciplinary action. We all are human, and make mistakes (Just ask my kids…They’ll tell you that I don&#8217;t do anything right). So let&#8217;s fix the mistake as quickly as possible and learn from them. What is not acceptable here is making the same mistake over and over again.</p>
<p>It is also important to be available for consultation, and that is a hard one. Time flies, and there are so many questions to answer. The only thing I’ve found that works: be proactive and constantly vigilant. I made a commitment to empty my email inbox by the end of each day.</p>
<p>Read the other parts of the series here:</p>
<ol>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success">Introduction</a></li>
<li>Empowerment</li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals">Goals</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback">Feedback</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect">Respect</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Not-So-Secret Secrets to Management Success: Goals</title>
		<link>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals/</link>
		<comments>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 21:17:19 +0000</pubDate>
		<dc:creator>Sven Delmas</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Electric Cloud]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1203</guid>
		<description><![CDATA[In many organizations, there’s too much talk about setting goals and not enough doing it. Everybody needs to clearly understand the overall goal, and what they can do to help move forward with that goal. And let&#8217;s be clear&#8230; the overarching goal is to allow for my early retirement at a gorgeous beach on some [...]]]></description>
			<content:encoded><![CDATA[<p>In many organizations, there’s too much talk about setting goals and not enough doing it. Everybody needs to clearly understand the overall goal, and what they can do to help move forward with that goal. And let&#8217;s be clear&#8230; the overarching goal is to allow for my early retirement at a gorgeous beach on some Caribbean island. So that implies a long term vision for the company, the product, the team, and the individual team members. That&#8217;s a lot, and I have to admit that while being perfect at this is at the top of my goal list&#8230; I haven’t hit perfection yet. However, there are some things I believe really work.</p>
<p>Get engaged with the various goals at every level. I am lucky enough to work at a company where I can talk to the CEO any time to pitch an idea or get feedback. And so can anyone else in the company. No guarantee that it will be accepted/implemented, but it&#8217;s a good start (that&#8217;s what I like about small companies).</p>
<p>Goals change on all levels all the time, and it is hard to balance one layer of goals against the other. For the product, fixing this list of nasty issues is the best, yet the engineer that would be best suited for that has been in maintenance mode forever and really needs a break. What to do, what to do&#8230; Well, I found that personal interaction works pretty well, again with the result of a agreed upon goal. Something along the line of &#8220;I know you don&#8217;t want to fix another Windows device driver bug, so we will make sure that you get time to train your colleague on this, so next time you are not in the hot seat.&#8221;</p>
<p>So how to communicate goals efficiently? Well, I am still struggling with that one at times (I know I can do better). There is of course the traditional team meeting, there are five minute standup meetings, there is e-mail, the wiki, personal conversation (I hope I haven’t missed an obvious one). Different methods work better with different people, so I am trying to do all of them as appropriate. Kind of a squishy answer, which really offends my sense for black and white answers, but that&#8217;s all I have.</p>
<p>So what goals do we have at Electric Cloud and my team?</p>
<ul>
<li>We want to make our customers successful.</li>
<li>We want to have fun doing it, or at least see the huge value in happy customers when it is not a lot of fun.</li>
<li>We want to give team members a chance to explore new areas (sometimes voluntarily, sometimes not&#8230; just kidding). We do have a policy that engineers can have a day each month to explore topics/interests at their own leisure that are not directly job related. This gets their minds thinking in new and creative directions, and helps them avoid getting bogged down in old and frustrating issues.</li>
<li>And let&#8217;s not for get my early retirement&#8230; I may have mentioned that.</li>
</ul>
<p>Read the other parts of the series here:</p>
<ol>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success">Introduction</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment">Empowerment</a></li>
<li>Goals</li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback">Feedback</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect">Respect</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Not-So-Secret Secrets to Management Success</title>
		<link>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success/</link>
		<comments>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 21:08:00 +0000</pubDate>
		<dc:creator>Sven Delmas</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Electric Cloud]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.electric-cloud.com/blog/?p=1199</guid>
		<description><![CDATA[So, while I was counting and assigning bugs in Jira, I started to wonder&#8230; What makes our development team (well&#8230; probably any team) successful? Aside from me being an awesome manager dude (with tie-dye t-shirts and all), the obvious answer is: people. Now that we’ve taken care of that platitude, the real question is: How [...]]]></description>
			<content:encoded><![CDATA[<p>So, while I was counting and assigning bugs in Jira, I started to wonder&#8230; What makes our development team (well&#8230; probably any team) successful? Aside from me being an awesome manager dude (with tie-dye t-shirts and all), the obvious answer is: people. Now that we’ve taken care of that platitude, the real question is: <strong>How do you make sure that you find smart people, retain smart people and keep those smart people efficient and engaged?</strong></p>
<p>To me, all of it starts with the company culture. At Electric Cloud, we have a few guiding principles that help us make the right decisions:</p>
<ul>
<li><strong>It&#8217;s ok to make mistakes.</strong> We want to take risks, and, if something turns out badly, let&#8217;s fix it. No blaming, no finger pointing.</li>
<li><strong>We want to know about problems.</strong> To be able to fix mistakes, we need to recognize them. So everybody is      encouraged to speak up when they see a problem.</li>
<li><strong>Execution + Consultation = Success.</strong> Make decisions you can make comfortably, and consult with other team      members when you need help. Consult first with whoever is most likely to have a problem with your decision.</li>
<li><strong>Get plenty of input, but move forward quickly.</strong> Big decisions warrant a greater level of input, but it’s important that you don&#8217;t get stuck in the input gathering/consensus building stage indefinitely. Remember&#8230; It’s ok to make mistakes (as long as you don&#8217;t run the company into the ground).</li>
<li><strong>Operate under the &#8220;Reasonable Person Principle.&#8221;</strong> If you don&#8217;t understand why someone else is acting/responding in a particular way, remember that that person is likely to have a good reason for whatever they are doing. Instead of assuming your seemingly-crazy colleague is just plain wrong, pause and try to understand their reasoning (This works up to a point&#8230; there may be one or two unreasonable people out there).</li>
</ul>
<h3>Measuring Success: What Makes Us Think This Works?</h3>
<p>Of course, there are lots of theories… and many fewer successes. As the old adage goes “The proof of the pudding is in the eating”.  I’m glad to report that, so far, the recipe above has proved good eating for Electric Cloud.</p>
<ul>
<li><strong>Our customers are really happy.</strong> A recent customer survey found that 87 percent of our customers are very satisfied or satisfied. We are working hard on getting those mostly satisfied up to at least satisfied.</li>
<li><strong>Our team turnover is very low.</strong> My team right now has an average tenure of 4.5 years. Over the 10 years of Electric Clouds existence, my team has lost four engineers from leaving. And yes, I did lose other engineers to other groups in the company, and I didn&#8217;t count retirement.</li>
<li><strong>Our product keeps getting better.</strong> We are able to produce four on-time feature releases per year. We have produced 12 feature releases at nearly three-month intervals for the past  three years (&#8230; let me check my math&#8230; yes, that&#8217;s right). We also produced 15 patch releases in the same time frame.</li>
<li><strong>We are stomping out our bugs.</strong> Our bug open-to-close stats show that in the past year we have closed four bugs for every three bugs created. While our source base, as well as our customer base, keeps expanding, our overall open bug count has remained  steady/declined.</li>
<li><strong>People know we are here to help.</strong> Within the organization (from marketing and sales to product management and support), the engineering team is well respected, and frequently called upon to provide help, guidance, support and even hugs (when requested).</li>
<li><strong>We are growing even in hard times.</strong> Our customer base keeps growing, and our existing customers consistently      renew support contracts and expand deployments.</li>
</ul>
<p>So yes&#8230;It seems to work. But how does this manifest in our daily life here at Electric Cloud? To me, the day-to-day business is driven by several factors. Read on to find out more:</p>
<ol>
<li>Introduction</li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-empowerment">Empowerment</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-goals">Goals</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-feedback">Feedback</a></li>
<li><a href="http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success-respect">Respect</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.electric-cloud.com/blog/2011/10/31/my-not-so-secret-secrets-to-management-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

