<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">

  <title><![CDATA[Operation Bootstrap]]></title>
  
  <link href="http://www.opsbs.com/" />
  <updated>2013-05-03T00:59:21-05:00</updated>
  <id>http://www.opsbs.com/</id>
  <author>
    <name><![CDATA[Aaron Nichols]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/OperationBootstrap" /><feedburner:info uri="operationbootstrap" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
    <title type="html"><![CDATA[DevopsDays 2013 - we are avoiding culture, why?]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/70MlvhqBnNI/" />
    <updated>2013-05-02T21:10:00-05:00</updated>
    <id>http://www.opsbs.com/2013/05/devopsdays-2013-we-are-avoiding-culture</id>
    <content type="html">&lt;p&gt;I just got back from Devops Days Austin. It was a really good conference. I think I enjoyed the speakers and Open Spaces at this event more than I did at Devops Days Mountain View last year. Huge props to the organizers and speakers for putting together such a great set of topics.&lt;/p&gt;

&lt;p&gt;One thing irked me a bit though, I heard a number of comments about how there was too much talk about culture.&lt;/p&gt;

&lt;p&gt;I am confused - but I think I understand.&lt;/p&gt;

&lt;p&gt;I attended one Open Space session called &amp;#8220;Culture Hacks&amp;#8221; which ended up not being so much about hacks as a plea for help. A number of folks expressed concerns about being in a difficult situation where they associate their problems with organizational cultural problems and they were looking for ideas on how to make things better. The suggestions that folks raised, myself included, sounded a lot like typical lean/agile tools - retrospectives, stand-ups, putting developers on-call, communicating metrics, providing incentives, hackathons. I think these are all good suggestions, the problem is that they only go so far. The unfortunate reality is that old saying - you can lead a horse to water, but you can&amp;#8217;t make him drink. These are all tools but they don&amp;#8217;t solve a problem in an organization that doesn&amp;#8217;t want to change.&lt;/p&gt;

&lt;p&gt;I think the topic of culture is pretty big and scary for many folks. It&amp;#8217;s also very subjective, as &lt;a href="https://twitter.com/botchagalupe"&gt;John Willis&lt;/a&gt; raised in his &lt;a href="http://www.slideshare.net/botchagalupe/sotu-austin2013-20335541"&gt;talk&lt;/a&gt; - the culture in which a group of crooks thrive is very different than the culture in which a group of hippies would thrive (John didn&amp;#8217;t use Hippies in his example). For each group though, there is a specific culture that allows those individuals to reach their goals in an optimal way. Is one culture right or wrong? Functional or dysfunctional? I think the answer is that if the culture is aligned with the team and makes them perform in an optimal way then it&amp;#8217;s good - but it&amp;#8217;s good for that group, not for everyone.&lt;/p&gt;

&lt;p&gt;As such, if you haven&amp;#8217;t defined an objective for your culture, if you&amp;#8217;ve hired a mish-mash of people with different objectives and principles then you really aren&amp;#8217;t going to find a culture that makes everyone achieve their goals. You can make it better for some, but it&amp;#8217;ll likely not be better for others. Getting the folks off the bus who do not align with your desired culture is an important part of a change like this and is not something that an Ops person in one group can do. Here, I think, lies one of the main barriers to DevOps being about culture change - it&amp;#8217;s driven by Ops people.&lt;/p&gt;

&lt;p&gt;Ops working with Dev is great, we can all do that, but we are individuals who can only set an example and hope the organization follows suit. If they don&amp;#8217;t - you can vote with your feet or suck it up, I&amp;#8217;m not sure there are many other options. Setting an example often manifests as Ops folks trying get closer to Dev - the most natural way to do this is to write code, help with release engineering, enable developers to gain access to monitoring, logs, config management, etc. All the &lt;em&gt;tools&lt;/em&gt; that we say aren&amp;#8217;t actually what Devops is about&amp;#8230; These seem to me to be a manifestation of ops folks doing what they can do get closer to Dev, that&amp;#8217;s all.&lt;/p&gt;

&lt;p&gt;Of course it isn&amp;#8217;t culture, company culture is bigger than this, but it can change a small part of an organization &amp;amp; help set an example for the broader organization. Sometimes it can have a bigger impact - I love &lt;a href="http://www.kitchensoap.com/2012/01/05/convincing-management-that-cooperation-and-collaboration-was-worth-it/comment-page-1/#comment-11779"&gt;this one&lt;/a&gt; by John Allspaw as an example. Still, the change was isolated.&lt;/p&gt;

&lt;p&gt;I recently read &amp;amp; really liked &lt;a href="http://techcrunch.com/2013/04/27/building-a-culture-that-works-the-ceo-as-the-cultural-epicenter/?hubRefSrc=permalink#lf_comment=70807138"&gt;this TechCrunch article&lt;/a&gt; because I feel like it hits on an important point. If I work at a company where the CEO, CTO, COO, VP of Engineering or a variety of other high level positions push a culture that I don&amp;#8217;t like - my chances of changing that are small. Further still, there is already a culture which is somewhat defined by the team you&amp;#8217;ve hired. Unless you&amp;#8217;ve worked very hard to hire for a specific person &amp;amp; team fit then no amount of effort is going to change the organizational culture.&lt;/p&gt;

&lt;p&gt;So what is my point with all of this? While Dev &amp;amp; Ops collaboration is important to having a healthy development process - it is so easily undermined by problems with the larger organization. I don&amp;#8217;t think that means you do nothing - I just think it helps clarify why talking about culture is hard. I also think having more actionable steps, more examples to replicate would be helpful. Right now the examples we have are of companies who have a good culture throughout - but what about companies who can&amp;#8217;t do that? How do I fix my piece? How do I get my 10 person startup pointed in the right direction? How can I build a functional bubble inside a dysfunctional behemoth? What can I do to make my small corner of the world suck less?&lt;/p&gt;

&lt;p&gt;There aren&amp;#8217;t enough good examples for these questions - and this is why we need to talk about it. Talking about the little bits and pieces that work for you helps - so don&amp;#8217;t avoid talking about it because you don&amp;#8217;t have all the answers - share what you can. In that Open Space I attended, plenty of folks had little ideas about things that worked for them - they didn&amp;#8217;t have a complete solution, but they had some ideas.&lt;/p&gt;

&lt;p&gt;I &lt;a href="http://www.opsbs.com/2013/01/good-and-bad-patterns-in-development-and-operations/"&gt;shared my thoughts&lt;/a&gt; about how this may look when you start from the ground up and we&amp;#8217;re implementing some of these ideas at my current company. Are they all the right things for this company? Probably not - the team will decide. Some of the things that worked at a past company wont work here - does that mean we are doomed? I don&amp;#8217;t think it does.&lt;/p&gt;

&lt;p&gt;Culture is very personal - but so are a lot of things that we have some established patterns for. We are homing in on some ideas that work - we need more ideas - and we need to talk about them more. I hope this comes up more at other Devops Days events in the future. It&amp;#8217;s an important topic.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/70MlvhqBnNI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2013/05/devopsdays-2013-we-are-avoiding-culture/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Good &amp; Bad patterns in Development and Operations]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/1Gv3W5_aiKM/" />
    <updated>2013-01-14T16:36:00-06:00</updated>
    <id>http://www.opsbs.com/2013/01/good-and-bad-patterns-in-development-and-operations</id>
    <content type="html">&lt;p&gt;As part of my role at a new company I&amp;#8217;ve been asked to provide feedback
about structuring Dev &amp;amp; Ops as well as what sorts of things work and don&amp;#8217;t. I
certainly don&amp;#8217;t claim to have all the answers, but I&amp;#8217;ve seen some very
functional and some very dysfunctional organizations. I&amp;#8217;ve spent a fair amount
of time thinking about what works &amp;amp; why.&lt;/p&gt;

&lt;p&gt;Below is a cleaned up version of a message I sent to our CEO who asked for my
thoughts on what does and doesn&amp;#8217;t work. This was intended as scaffolding for
further discussion so I didn&amp;#8217;t go into deep details. If you want more details
on any particular area just throw some comments out there.&lt;/p&gt;

&lt;p&gt;I realize not all these issues are black &amp;amp; white to many folks - there are
gray areas. My goal with this message was to drive conversation.&lt;/p&gt;

&lt;p&gt;I figure this is probably review to many folks, but maybe it&amp;#8217;ll help someone.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First, there are some very simple goals that all these bullets drive toward &amp;amp; they&amp;#8217;re somewhat exclusive to SaaS companies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers should continuously receive value from Developers as code is incrementally pushed out&lt;/li&gt;
&lt;li&gt;Developers should get early feedback from customers on changes by enabling features for customers to test&lt;/li&gt;
&lt;li&gt;We can address problems for customers very quickly - often in a matter of hours&lt;/li&gt;
&lt;li&gt;We can inspect and understand customer behavior very deeply, gathering exceptional detail about how they use the service.&lt;/li&gt;
&lt;li&gt;We can swap out components &amp;amp; substantially change the underlying software without the customer knowing (if we do it right)&lt;/li&gt;
&lt;li&gt;We can measure how happy customers are with changes as we make them based on behavior &amp;amp; feedback&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The lists below are what I feel make that possible (Good) and what inhibit it (Bad)&lt;/p&gt;

&lt;h2&gt;Culture &amp;amp; Communication&lt;/h2&gt;

&lt;h4&gt;Good:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Stand ups.&lt;/li&gt;
&lt;li&gt;Retrospectives&lt;/li&gt;
&lt;li&gt;Small, self-formed teams (Let folks work on their area of passion)&lt;/li&gt;
&lt;li&gt;Use Information Radiators whenever possible (Kanban boards, stats on big monitors, etc)&lt;/li&gt;
&lt;li&gt;Decisions by teams, Leaders facilitate consensus&lt;/li&gt;
&lt;li&gt;Discovering what doesn&amp;#8217;t work is part of finding the right solution, not something to fear.&lt;/li&gt;
&lt;li&gt;Hackathons allow Developers to do things they are passionate about&lt;/li&gt;
&lt;li&gt;Hire for personality &amp;amp; team fit first, technical ability second&lt;/li&gt;
&lt;li&gt;Data driven decisions, strive to have facts to back up decisions.&lt;/li&gt;
&lt;li&gt;Make the right behavior the easiest thing to do - build a low resistance path to doing the right thing.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Bad:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Top down decision making&lt;/li&gt;
&lt;li&gt;Strict role assignments &amp;amp; Silos&lt;/li&gt;
&lt;li&gt;Fear of not getting it right the first time&lt;/li&gt;
&lt;li&gt;Hiring for technical ability thinking team fit will come later&lt;/li&gt;
&lt;li&gt;Creating process out of fear that makes it difficult to do the right thing.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Eliminate Manual Processes&lt;/h2&gt;

&lt;h4&gt;Good:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Continuous Deployment / Delivery&lt;/li&gt;
&lt;li&gt;Fully automated testing&lt;/li&gt;
&lt;li&gt;Test Driven Development&lt;/li&gt;
&lt;li&gt;Fully automated system monitoring, configuration &amp;amp; provisioning&lt;/li&gt;
&lt;li&gt;Separate Deploy &amp;amp; Release (Feature toggles)&lt;/li&gt;
&lt;li&gt;Deploy from master, do not branch (Forces particular behaviors)&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Bad:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Manual testing by a QA Team - sometimes it&amp;#8217;s necessary, but should be avoided&lt;/li&gt;
&lt;li&gt;Deploying off a branch, slows things down &amp;amp; allows for other bad behaviors&lt;/li&gt;
&lt;li&gt;Writing tests after writing code, code isn&amp;#8217;t written with testing in mind&lt;/li&gt;
&lt;li&gt;Developers relying on other teams to perform tasks that could be automated.&lt;/li&gt;
&lt;li&gt;Processes that are the result of fear rather than necessary business process.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;If it moves, measure it&lt;/h2&gt;

&lt;h4&gt;Good:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Collect high resolution metrics about everything you possibly can&lt;/li&gt;
&lt;li&gt;Developers can add new metrics by pushing new code, do not rely on additional configuration by other teams.&lt;/li&gt;
&lt;li&gt;Graphs &amp;amp; metrics can be seen by anyone - Developers should rely on these.&lt;/li&gt;
&lt;li&gt;There should be individuals or teams who are passionate about data visualization &amp;amp; analysis.&lt;/li&gt;
&lt;li&gt;Dev teams rely on these metrics to make decisions, help identify what metrics are important&lt;/li&gt;
&lt;li&gt;Developers watch metrics after pushing new code, watch for trend changes (Devs take responsibility for availability)&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Bad:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Operations has to configure new metrics after developers have added support for them (Manual)&lt;/li&gt;
&lt;li&gt;Operations monitors metrics &amp;amp; asks Dev teams when they think there&amp;#8217;s a problem&lt;/li&gt;
&lt;li&gt;Developers don&amp;#8217;t look at metrics unless something is brought to their attention&lt;/li&gt;
&lt;li&gt;Code doesn&amp;#8217;t expose metrics until someone else asks for it&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;And here is the long version of all of that&amp;#8230;&lt;/p&gt;

&lt;h2&gt;#1 Culture &amp;amp; Communication&lt;/h2&gt;

&lt;p&gt;Above all else I consider these most important. I think most problems in other
areas of the business can be overcome if you do well in these areas. Rally has
been, by far, the best example of a very successful model that I&amp;#8217;ve seen in
this area. They aren&amp;#8217;t unique - there are other companies with similar models
&amp;amp; similar successes.&lt;/p&gt;

&lt;h4&gt;Main points&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stand ups&lt;/strong&gt;. By far the most effective tool for keeping everyone in touch. As teams grow you have to break them apart, so you have a 2nd standup where teams can bring cross-team items to share.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projects are tackled by relatively small, typically self-formed teams&lt;/strong&gt;. Get individuals who are interested in working in an area together &amp;amp; they feed on each others passion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perform retrospectives&lt;/strong&gt;. This gives individuals &amp;amp; small groups the ability to voice concerns in a way that fosters resolution. There&amp;#8217;s an art to facilitating this but it works well when done right. It also allows recognition of things that are done well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use open information radiators&lt;/strong&gt; - it should be easy to see what&amp;#8217;s going on by looking at status somewhere vs. having to ask for status, go to meetings, etc. Kanban boards are great for this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leaders exist to facilitate and help drive consensus&lt;/strong&gt; but decisions are largely made by teams, not leaders. This makes being a leader harder, but it makes the teams more empowered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accept that things may not work&lt;/strong&gt; &amp;amp; the team and company will adjust when things do not work. This makes it easy to try new things &amp;amp; easy for people to vocalize when they think it isn&amp;#8217;t working. If it&amp;#8217;s hard to change process then people are more resistant to try new things. This goes back to retrospectives for keeping things in check. Also important in this are &amp;#8220;spikes&amp;#8221; or time boxed efforts explicitly designed to explore possibilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Give developers time to pursue their own projects for the company&lt;/strong&gt;. Many awesome features have come out of Hackathons where developers spent their own time to build something they were passionate about.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hire for personality fit first&lt;/strong&gt;. I have seen many awesome people find a special niche in a company because they grew into a role that you couldn&amp;#8217;t hire for - but what made that possible was that they worked well with the team as an individual. Hiring for technical skill also means you lose that skill when that person leaves, I would prefer to have cross-functional teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data driven decisions&lt;/strong&gt;. This helps keep emotion and &amp;#8220;I think xyz&amp;#8221; out of the discussion &amp;amp; focuses on the data we do and do not have. If we don&amp;#8217;t have data we either get more or acknowledge we may not be making the right decision but we&amp;#8217;re going to move forward.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make the right thing the easiest thing&lt;/strong&gt;. I&amp;#8217;ve seen too many companies put process out there that makes the &amp;#8220;right thing&amp;#8221; really difficult, so it gets bypassed. The right thing should be an express train to done - very little resistance and very easy to do. It&amp;#8217;s when you start wanting to do things differently that it should become harder, more painful.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, &lt;strong&gt;everyone&lt;/strong&gt; owns the quality of the service. This includes
availability, performance, user experience, cost to deliver, etc. At my last
company, there was exceptional collaboration between Operations, Engineering
and Product (and across engineering teams) on all aspects of the service and
there was a strong culture of shared ownership &amp;amp; very little finger pointing.&lt;/p&gt;

&lt;p&gt;If you want more details on this specific to Rally I wrote a blog post with some more info:
&lt;a href="http://www.opsbs.com/2012/06/devops-is-culture-so-is-a-lot-of-other-stuff"&gt;Blog Post&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;#2 Obsessively eliminate manual process - let computers do what they are good at.&lt;/h2&gt;

&lt;p&gt;This is so much easier to do up front. There should be as little manual
process as possible standing between a developer adding value for customers
(writing code) and that code getting into production. There may be business
process that controls when that feature is enabled for customers - but the act
of deploying &amp;amp; testing that code should not be blocked by manual process. I
refer to this as separating &amp;#8220;Deploy&amp;#8221; from &amp;#8220;Release&amp;#8221; - those are two very
different things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing should only be manual to invalidate assumptions, validating
assumptions should be automatic&lt;/strong&gt; When we assume that if x is true then y will
occur, there should be a test to validate that this is true. Testers should
not manually validate these sorts of things unless there is just no way to
automate them (rare). Testers are valuable to &lt;em&gt;invalidate&lt;/em&gt; assumptions.
Testers should be looking at the assumptions made by Developers and helping
identify those assumptions that may not always be correct.&lt;/p&gt;

&lt;p&gt;Too many organizations rely on manual testing because it&amp;#8217;s &amp;#8220;easier&amp;#8221;, but it
has some serious drawbacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can only change your system as fast as your team can manually test it - which is very slow.&lt;/li&gt;
&lt;li&gt;Your testing is done by humans who make mistakes and don&amp;#8217;t behave predictably so you get inaccurate results.&lt;/li&gt;
&lt;li&gt;The # of tests will only grow over time, requiring either more humans or more time, or both. It doesn&amp;#8217;t scale.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Over time the software quality gets lower, takes longer to test, and the test
results become less reliable. This is a death spiral for many companies who
eventually find it very hard to make changes due to fear &amp;amp; low confidence in
testing.&lt;/p&gt;

&lt;p&gt;Avoiding this requires developers spend more time up front writing automated
tests. This means developers might spend 60-70% of their time developing tests
vs. writing code - this is the cost of doing business if you want to produce
high quality software.&lt;/p&gt;

&lt;p&gt;That may seem excessive, but the tradeoffs are significant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Much higher code quality which stays high (those tests are always run, so re-introduced bugs (regressions) get caught)&lt;/li&gt;
&lt;li&gt;Faster developer on boarding, the tests describe how the code should behave and act as documentation.&lt;/li&gt;
&lt;li&gt;Refactoring code becomes easier because you know the tests describe what it &lt;em&gt;should&lt;/em&gt; do.&lt;/li&gt;
&lt;li&gt;Each commit to the codebase is fully tested, allowing nearly immediate deployment to production if done right.&lt;/li&gt;
&lt;li&gt;Problems that make it into product feed back into more tests &amp;amp; continually improve code quality.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Much of the time developing tests is spent thinking about how to solve the
problem, but you are also writing code with the intent of making it testable.
Code is often written differently when the developer knows tests need to pass
vs. someone manually testing it. It&amp;#8217;s much harder to come along later and
write tests for existing code.&lt;/p&gt;

&lt;p&gt;You will hear me talk about Continuous Deployment &amp;amp; Continuous Integration - I
feel these practices are extremely important to driving the above &amp;#8220;good&amp;#8221;
behaviors. If you strive for Continuous Deployment then everything else falls
into place without much disagreement because it has to be that way. This has a
lot of benefits beyond what&amp;#8217;s listed above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Value can be delivered to customers in days or hours instead of weeks or months&lt;/li&gt;
&lt;li&gt;Developers can get immediate feedback on their change in production&lt;/li&gt;
&lt;li&gt;New features can be tuned &amp;amp; tweaked while they are fresh in a developers mind&lt;/li&gt;
&lt;li&gt;You can focus on making it fast to resolve defects, no matter how predictable they are, rather than trying to predict all the ways things might go wrong.&lt;/li&gt;
&lt;li&gt;Most of the tools and behaviors that enable Continuous Deployment scale to very large teams &amp;amp; very frequent deployments. Amazon is a prime example of this, deploying something, somewhere, about every 11 seconds. Many companies that are in the 30-100 engineer size talk about deploying tens of times per day.&lt;/li&gt;
&lt;li&gt;This also impacts how you hire QA/Testers. This is a longer discussion, but you want to hire folks who can help during the test planning phase &amp;amp; can help Developers write better tests. Ideally your testers are also developers &amp;amp; work in a way that&amp;#8217;s similar to Operations, helping your Developers to be better at their jobs.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;#3 If it moves, measure it&lt;/h2&gt;

&lt;p&gt;I mentioned above, two big advantages a SaaS organization has are the amount
it can learn about how customers use the product &amp;amp; the ability to change
things rapidly. Both of these require obsessive measurement of everything that
is going on so that you know if things are better or worse. Some of these
metrics are about user behavior &amp;amp; experience to understand how the service is
being used. Other metrics are about system performance &amp;amp; behavior.&lt;/p&gt;

&lt;p&gt;The ability to expose some % of your customer base to a new feature &amp;amp; measure
their feedback to that is huge. Plenty of companies have perfected the art of
A/B testing but at the heart of it is the ability to measure behavior. Similar
to testing, the software has to be built in a way which allows this behavior
to be measured.&lt;/p&gt;

&lt;p&gt;System performance similarly requires a lot of instrumentation to identify
changes in trends, to identify problems areas in the application &amp;amp; to verify
when changes actually improve the situation.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve been at too many companies where they simply had no idea how the system
was performing today compared to last week to understand if things were better
or worse. At my last company I saw a much more mature approach to this
measurement which worked pretty well, but it required investment. They had two
people fully dedicated to performance analysis &amp;amp; customer behavior analysis.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/1Gv3W5_aiKM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2013/01/good-and-bad-patterns-in-development-and-operations/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Continuous Deployment: Are you afraid it might work?]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/zsr6G6qY0so/" />
    <updated>2013-01-14T07:47:00-06:00</updated>
    <id>http://www.opsbs.com/2013/01/continuous-deployment-are-you-afraid-it-might-work</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been wondering for a few years now, why it&amp;#8217;s so hard to get
companies to prioritize the work that I feel is important. I mean, I&amp;#8217;m
telling you how to do it and you aren&amp;#8217;t listening - don&amp;#8217;t you want to
build quality software?&lt;/p&gt;

&lt;p&gt;Would you listen to that argument? I wouldn&amp;#8217;t. Everybody has an opinion
about how to do things, what makes one better than another?&lt;/p&gt;

&lt;h2&gt;I think you should listen to me, but that&amp;#8217;s irrelevant&lt;/h2&gt;

&lt;p&gt;I&amp;#8217;m on my 4th SaaS company at this point. I&amp;#8217;m starting early this time and
hoping to steer things in the right direction. I feel like I&amp;#8217;ve observed some
good and some bad and some really ugly at this point and I have a pretty good
idea of what patterns and anti-patterns are important. The problem hasn&amp;#8217;t
changed though, just because I feel they are important doesn&amp;#8217;t make them a
priority for the company.&lt;/p&gt;

&lt;p&gt;When I go to work for a new company a very important question to answer is
whether the company is ready and willing to implement all the cultural and
technical requirements for Continuous Deployment. I&amp;#8217;ve at least figured out
that, from my position, it&amp;#8217;s exceptionally hard (so far impossible for me) to
convince a company they want to do this - they have to already want to. I know
how to implement, I know how to enact change, but I need support that has to
already exist.&lt;/p&gt;

&lt;p&gt;I focus on Continuous Deployment not because it&amp;#8217;s a technical solution that
you just plug in and go. I focus on it because it drives conversation around
all the other areas where organizations should improve. For each improvement
you make working toward Continuous Deployment, you make your development
process better and your software better. These aren&amp;#8217;t things that only provide
benefit once you are doing Continuous Deployment - but when you&amp;#8217;ve done them
all it becomes a fairly easy decision to deploy continuously.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m early into my latest venture but already the attention is there, the
interest in doing this right. I&amp;#8217;m being asked for my thoughts on what we need
to prioritize to move toward Continuous Deployment, what do we need to focus
on early so that it&amp;#8217;s easier later on. I&amp;#8217;m also being asked to educate folks
on what is important and why, what have I watched work and what have I watched
fail. What mistakes can we avoid and what mistakes are we just going to have
to make on our own?&lt;/p&gt;

&lt;p&gt;Oh, you were hoping not to make mistakes? Good luck with that. The best I can
hope for is to make my own mistakes.&lt;/p&gt;

&lt;h2&gt;Dude, I would never do that…&lt;/h2&gt;

&lt;p&gt;My first flight on an airplane, in my life, was a skydiving trip. When the
instructors discovered this as we ascended toward altitude they said &amp;#8220;Well
this is perfect, next time you fly you can tell the person next to you that
you&amp;#8217;ve flown before, but you&amp;#8217;ve never landed&amp;#8221;. My risk tolerance may differ
slightly from others. I like to rock climb as well, plenty of people won&amp;#8217;t do
that. The thing is, both of these sports involve a very risky activity offset
by copious amounts of safety. Still, when you watch the girl up on the cliff
hanging by a limb all you can think of is &amp;#8220;what if she falls?&amp;#8221;. The answer is,
she&amp;#8217;ll get a little bruised up maybe, but if she&amp;#8217;s doing things right she&amp;#8217;ll
keep right on climbing.&lt;/p&gt;

&lt;p&gt;When you&amp;#8217;ve been climbing a bit, when you understand the safety mechanisms,
you pay much more attention to the climb, to the technique, to each movement.
You know that the climber is probably safe, because you know what keeps them
safe. You can take more risk with each movement knowing that any single
mistake will only set you back so far.&lt;/p&gt;

&lt;p&gt;These activities, like Continuous Deployment, look more risky from the outside
than they are. If you don&amp;#8217;t take the time to understand all the safety
mechanisms then you can&amp;#8217;t accurately evaluate the risk. For a company who
pushes software every few weeks to consider pushing every commit without
substantial other changes would be insane. Just like I would never go rock
climbing without the right equipment (I&amp;#8217;m allergic to free soloing - sorry).
The act of Continuous Deployment is a realization of a ton of other effort -
and all that effort has to be prioritized before you can ever get on the rock
face.&lt;/p&gt;

&lt;h2&gt;Reality check - you are deploying more often than you think&lt;/h2&gt;

&lt;p&gt;Lets say you deploy every week - I&amp;#8217;m being generous here, but lets just
pretend. So you deploy on Thursday during the day because you have an
awesome deploy process and you know it&amp;#8217;s better to spot problems when
everyone is in the office. You spot a problem, what do you do? I&amp;#8217;m
guessing your deploy was from a branch, so you just fix that branch &amp;amp;
deploy. Then you merge the fix into master.&lt;/p&gt;

&lt;p&gt;Friday comes along, hey there&amp;#8217;s another critical issue. Fix, branch,
deploy. Lather, rinse repeat. Meanwhile, depending on how involved the
fix is and what other stuff you have going on, you&amp;#8217;ve got a bunch of
merging to get right and the closer to your next branch you get, the
more of a problem this becomes. How about a fix on Wednesday before the
next deploy? I&amp;#8217;m guessing you&amp;#8217;ve already cut the next branch, so now you
apply the fix to 3 branches (last week, this week, master).&lt;/p&gt;

&lt;p&gt;All this deploying and merging and branching, it&amp;#8217;s all work. The problem
is - it&amp;#8217;s not automated work, it&amp;#8217;s work asking for mistakes to be made.
It&amp;#8217;s risk. Where are your safety mechanisms? Are they your manual
testers? Your automated test suite? If those automated tests aren&amp;#8217;t good
enough to test each commit before it goes to production, why are they
good enough to test each weeks deploy? Because you do manual testing?&lt;/p&gt;

&lt;p&gt;This all sounds risky to me, but for some reason it sounds less risky
than Continuous Deployment to some. I think this can only be because of
a lack of understanding around the safety mechanisms, the
pre-requisites. The proof is in the pudding though, and if you still
produce shitty software when doing Continuous Deployment because you
write bad tests and don&amp;#8217;t do retrospectives and don&amp;#8217;t prioritize the
important work of making the system work right - then you&amp;#8217;re sunk either
way.&lt;/p&gt;

&lt;p&gt;There are some companies that are probably better off deploying every 8
weeks.&lt;/p&gt;

&lt;h2&gt;Wrapping up - why so much focus on Continuous Deployment?&lt;/h2&gt;

&lt;p&gt;The practices that surround Continuous Deployment/Delivery substantially
reduce risk - things like Feature Toggles, automated testing, automated
deployments, deploying off master, retrospectives, monitoring, accountability,
access, ownership, reduced MTTR, and the list goes on. These all add up to
make a software development and deployment environment so safe, anyone can
commit code - if it doesn&amp;#8217;t work it will not make it to production.&lt;/p&gt;

&lt;p&gt;But, things will still break. In my experience you have to break things in
very subtle ways for code to get into production &amp;amp; as time goes on and you
build better monitoring, even those issues should be detected fast &amp;amp; resolved
fast.&lt;/p&gt;

&lt;p&gt;It can take a while to reach the end goal, but you&amp;#8217;ve got to start somewhere.
However, even if you never actually practice Continuous Deployment, all of
these practices will produce better software and probably happier developers.&lt;/p&gt;

&lt;h2&gt;Further Reading&lt;/h2&gt;

&lt;p&gt;Here are a few other good resources to learn about Continuous Deployment/Delivery&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://continuousdelivery.com/"&gt;Continuous Delivery&lt;/a&gt; - Great book &amp;amp; site for info about all of this.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.livestream.com/etsy/video?clipId=pla_adbab6e2-c629-4bfe-b1fd-21c898693282"&gt;Moving Fast at Scale (Video)&lt;/a&gt; - This is a great introduction to these ideas, it&amp;#8217;s a few years old now but still very relevant.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://shop.oreilly.com/product/0636920000136.do"&gt;Web Operations - Keeping the data on time&lt;/a&gt; - Excellent book about much of these ideas and lots of others&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/zsr6G6qY0so" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2013/01/continuous-deployment-are-you-afraid-it-might-work/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[DevOps is Culture - so is a lot of other stuff...]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/p6Qyw9E0zXQ/" />
    <updated>2012-06-29T22:20:52-05:00</updated>
    <id>http://www.opsbs.com/2012/06/devops-is-culture-so-is-a-lot-of-other-stuff</id>
    <content type="html">&lt;p&gt;I hung out in an excellent discussion at &lt;a href="http://devopsdays.org/events/2012-mountainview/"&gt;DevopsDays&lt;/a&gt; driven by &lt;a href="https://twitter.com/spikelab"&gt;Spike Morelli&lt;/a&gt; around culture. The premise was that DevOps started as an idea around culture - around behavior patterns that lead to better software. Somewhere along the way our industry shifted this discussion into a tools discussion &amp;amp; now the amount of noise out there about &amp;#8220;DevOps tools&amp;#8221; is magnitudes higher than any discussion about the real reason DevOps exists - to shift culture.&lt;/p&gt;

&lt;p&gt;I looked up the definition of &amp;#8220;culture&amp;#8221; - here are a few definitions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the quality in a person or society that arises from a concern for what is regarded as excellent in arts, letters, manners,scholarly pursuits, etc.&lt;/li&gt;
&lt;li&gt;that which is excellent in the arts, manners, etc.&lt;/li&gt;
&lt;li&gt;the behaviors and beliefs characteristic of a particular social, ethnic, or age group: the youth culture; the drug culture.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Note that culture is the manifestation of intellectual achievement. It&amp;#8217;s the evidence and result of achievement. I think the 3rd definition is most appropriate for DevOps - what are the behaviors that are characteristic of a well integrated Development &amp;amp; Operations organization?&lt;/p&gt;

&lt;p&gt;The challenge, the discussion, was how we can re-balance the scales and get the word out that this is actually about culture and that tools happen as a result of culture, not the other way around. This post begins my contribution to that effort.&lt;/p&gt;

&lt;p&gt;The question was asked - do we all agree that culture is the most important thing when it comes to creating a successful business? The short answer is &amp;#8220;yes&amp;#8221;. If you wanted to hear all the if/and/but/what-if/etc discussions, you should have come to Devopsdays. For the sake of this blog post - culture is the most important factor. If you want case studies and analysis that proves that culture matters - read Jim Collins Good to Great.&lt;/p&gt;

&lt;p&gt;My present company has a really excellent culture of Developer / Ops cooperation and collaboration. I wasn&amp;#8217;t there when it wasn&amp;#8217;t that way (if ever) and so I can&amp;#8217;t tell a story about how to change your organization. What I can tell you is what a healthy and thriving Dev/Ops practicing organization looks like and what I think some of the key factors in that success are. I see this as two components - there are fundamental core values that enable and support the culture, and then there are tactical things that are done to make the culture work for us. I&amp;#8217;d like to talk about both. The culture is the result of these actions and ideas put into practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I work for a company with a well defined set of core values. Those values set forth parameters under which the culture exists. Here&amp;#8217;s what they are:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rallydev.com/about/join-our-team"&gt;&lt;img src="http://www.opsbs.com/images/Join-Our-Team-Rally-Software-2.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These values are public and they matter - they matter a lot.&lt;/p&gt;

&lt;p&gt;These might sound hokey to you - but every single one of them is held high at the company &amp;amp; strongly defended. Defending a list of values like this is hard sometimes. When someone doesn&amp;#8217;t show respect to others, how do you uphold that core value? When someone&amp;#8217;s idea of &amp;#8220;work life balance&amp;#8221; is different than another person, how do you support both of them? When creating your own reality means you don&amp;#8217;t want to work for Rally anymore - what do you do?&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m proud to say that in Rally&amp;#8217;s case - they are generally true to the core values. Putting &amp;#8220;Create your own reality&amp;#8221; on a list of core values doesn&amp;#8217;t create culture - what creates culture is having repeated examples where individuals have followed their passion &amp;amp; the company has supported them. This support doesn&amp;#8217;t just mean they have permission, it means the company uses whatever resources it can to help. Sometimes this means using your resources to help someone find another job. Sometimes this means helping them get an education they can use at another company. Usually though, it means getting them into a role where they can do their best work. Whatever the case - Rally&amp;#8217;s culture is to always be true to that core value and do whatever they can to support an employee in creating their own reality.&lt;/p&gt;

&lt;p&gt;This is repeated for all of the core values. By being explicit &amp;amp; public about these values they set the stage for what an employee can expect from Rally as a workplace. But there&amp;#8217;s more to it - you have to make sure these core values are upheld and you have to make sure they thrive - and this is where some of the tactical parts come in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the tactical things?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaboration - at Rally collaboration is a requirement. Development is done almost exclusively in pairs, planning is done as groups, retrospectives are done regularly and the actions from those retrospectives are announced publicly and followed up on. Architecture decisions are reviewed by a group comprised of Developers, Operations and Product.&lt;/li&gt;
&lt;li&gt;Self Formed Teams - teams are largely formed of individuals who have an interest in that teams work. When we need a task force, an email will go out to the organization looking for people interested in participating &amp;amp; those teams self-form. This also gives anyone in the company the ability to participate in areas of the business they may never otherwise get exposure to.&lt;/li&gt;
&lt;li&gt;Servant Leadership - Leaders at Rally often do very similar work to everyone else - they just have the additional responsibility of enabling their teams. Decisions about how to do things don&amp;#8217;t often come from managers, they come from the teams.&lt;/li&gt;
&lt;li&gt;Data Driven Decisions - Not strictly associated with a core value, I think this is one of the most important aspects of the Rally culture. There is an expectation that we establish evidence that a decision is correct. Sometimes this evidence is established before any dev work is done but sometimes this data comes from dark launching a new service or testing out some new piece of software. Either way, it&amp;#8217;s understood that the job isn&amp;#8217;t really done until you have data to support why a particular decision is right &amp;amp; have talked to the broader group about it.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There are plenty of other things here and there but you get the general idea. We talk a lot &amp;amp; tell each other what we&amp;#8217;re doing, we enlist passionate individuals in areas they have interest, we embrace &amp;amp; seek out change and we empower individuals to drive change by working with others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what? What does that have to do with Devops?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2.5 years ago the company had some performance &amp;amp; stability problems. Technical debt had caught up with them and the only real way to fix the problem was to completely change the way the company did development &amp;amp; prioritized their work. The good news is that they did it, but it was made possible by the fact that individuals were empowered to drive that change. Almost overnight, two teams were formed to focus on architectural issues. A council was formed to prioritize architectural work. The things we all complain about never being able to prioritize became a priority and remain a priority to a degree I&amp;#8217;ve never experienced before at other companies. Prioritizing this work is defended and advocated by the development teams - something only possible because of the collaborative environment in which we operate.&lt;/p&gt;

&lt;p&gt;I have been personally involved in two services that literally started out as a skeleton of an app when they went into production. The goal was to lay the groundwork to allow fast production deployments, get monitoring in place &amp;amp; enable visibility while the system was being developed. This was all done because the developers understand the value of these things, but they don&amp;#8217;t know exactly how to build it - they need Ops help. Having tight Ops and Dev collaboration on these projects has made them examples of what works in our organization. These projects become examples for other teams in the company and they push the envelope on new tech. These two projects have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implemented a completely new monitoring framework that allows developers to add any metric they want to the system&lt;/li&gt;
&lt;li&gt;Implemented Continuous deployment&lt;/li&gt;
&lt;li&gt;Established an example of how and why to Dark Launch a service&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&amp;#8217;m sure the list will continue to go on… it&amp;#8217;s fantastic stuff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Rub - culture isn&amp;#8217;t much of anything without people who embrace it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Along with a responsibility for pushing change from the bottom up in Rally comes responsibility for defending culture - or changing it. This means that when you hire people, they have to align with your core values - they have to be willing to defend that culture or the company as a whole needs to shift culture. All those core values and tactical things will not maintain a culture that the team members do not support. Rally&amp;#8217;s culture is what it is because everyone takes it seriously and that includes taking it seriously when there&amp;#8217;s a problem that needs fixing.&lt;/p&gt;

&lt;p&gt;This has happened. There are core values that used to be on that list above but they aren&amp;#8217;t anymore. At one point or another things changed and those core values were eroding at other core values. This takes time to surface, it takes time to collect data to show it&amp;#8217;s true, but when the teams start to observe this trend they have to take action. This isn&amp;#8217;t the job of management alone - this is the job of every member of the company. When the voice begins to develop asking for change - you need a culture that allows that change to take place and for everyone to agree on the new shape things take.&lt;/p&gt;

&lt;p&gt;That said, it also isn&amp;#8217;t possible if management doesn&amp;#8217;t support those same core values. Management has the same responsibility to take those core values seriously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevOps is our little corner of a much bigger idea&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s a problem that we&amp;#8217;re trying to fix - we&amp;#8217;re trying to improve the happiness of people, the quality of software, and the general health of our industry. Our industry is totally healthy when you look at the bottom line, but we&amp;#8217;re looking for something more. We want a happy and healthy development organization (including Ops, because Ops is part of the Development organization), but we also want our other teams to be part of that. As Ops folks and Developers, we can clean up our side of the street - we can do better. We seek to set an example for the rest of the organization.&lt;/p&gt;

&lt;p&gt;For culture to really improve in companies it has to go beyond Dev and Ops into Executives, Product, Support, Marketing, Sales and everyone else. You ALL own quality by building a healthy substrate (culture) on top of which all else evolves.&lt;/p&gt;

&lt;p&gt;But in the end it&amp;#8217;s about culture. It&amp;#8217;s really only about culture for now - because when you get culture right the other problems are easy to solve.&lt;/p&gt;

&lt;p&gt;Congratulations to those of you who read this far - shoot me a note and let me know you read this far because you probably share the same passion about this that I do. Also - putting up blog posts from 32,000 feet is awesome - thanks Southwest.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/p6Qyw9E0zXQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/06/devops-is-culture-so-is-a-lot-of-other-stuff/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Rate my skills: no]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/6qqNKMDMagU/" />
    <updated>2012-06-20T21:59:34-05:00</updated>
    <id>http://www.opsbs.com/2012/06/rate-my-skills-no</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been asked in the past to rate my skills when chatting with a recruiter about a position, it goes something like this:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&amp;#8220;Can you rate your skills in the following areas on a scale of 1 to 10:&lt;br/&gt;
Linux&lt;br/&gt;
Perl&lt;br/&gt;
SAN Storage&lt;br/&gt;
Networking&lt;br/&gt;
etc&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;My response is generally, &amp;#8220;no and goodbye&amp;#8221;. This isn&amp;#8217;t out of arrogance, but there&amp;#8217;s just no point in moving forward. When we&amp;#8217;re talking about a job I&amp;#8217;m interviewing your company every step of the way. One key question I&amp;#8217;m always asking myself is &amp;#8220;does this seem like a hiring process that would hire people I want to work with?&amp;#8221;. I don&amp;#8217;t get a huge chance to interview my co-workers when I&amp;#8217;m coming into a new place so my only real guide as to what type of folks they are is&amp;#8230; the hiring process.&lt;/p&gt;

&lt;p&gt;If your hiring process starts by selecting people based on how &lt;em&gt;they&lt;/em&gt; rate skills, think of who you are excluding. Also, think of who ends up at the top of that list - arrogant, self-important folks who think they are experts in everything. Perhaps the HR person is clever and is looking for folks who rate themselves poorly to suggest humility but there are better ways.&lt;/p&gt;

&lt;p&gt;I want to work on a team where you hire people because they fit well into the team, because they have passion about their job, and because they can learn. I don&amp;#8217;t want you to hire someone who already thinks they know everything because every conversation with that person is going to be an argument about why something new isn&amp;#8217;t as good as what they&amp;#8217;ve already done before. People do what has worked for them in the past unless they are tinkerers who like to try new things - in which case they probably don&amp;#8217;t become experts, they become generalists. The best folks I&amp;#8217;ve worked with didn&amp;#8217;t know how to do most of their day to day tasks when they started the job. They learned, they asked questions, they were humble and eager and engaging. Those are the people I want to work with.&lt;/p&gt;

&lt;p&gt;Yes, I&amp;#8217;m restricting my potential job opportunities by doing this - which is exactly the point.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/6qqNKMDMagU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/06/rate-my-skills-no/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[I'm letting my CISSP lapse]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/vq8r33JeYCw/" />
    <updated>2012-06-18T21:59:27-05:00</updated>
    <id>http://www.opsbs.com/2012/06/im-letting-my-cissp-lapse</id>
    <content type="html">&lt;p&gt;I took a 5 day course, studied for 2 months, and spent quite a bit of time stressing about passing the test for my CISSP. It was a good experience and I&amp;#8217;m glad I did it - but the time has come to let it go. The problem is, it hasn&amp;#8217;t done anything for me and it requires a fair amount of ongoing effort to maintain. Doing the work to keep up on the CPE&amp;#8217;s is fine if you are in the security industry - I&amp;#8217;m not. I was at one time, but not anymore and it&amp;#8217;s not where I&amp;#8217;m interested in being. I can fire up SANS webcasts and let them run on mute in the background on my computer to get CPE&amp;#8217;s - but that&amp;#8217;s just lame.&lt;/p&gt;

&lt;p&gt;So, I&amp;#8217;m letting it go. I&amp;#8217;ve thought a lot about this and it would be different if I had ever had an opportunity that appeared to be gained by having the certification. I haven&amp;#8217;t. If the knowledge I gained from the certification helped me do my job. It doesn&amp;#8217;t. If people even cared that I have the certification. They don&amp;#8217;t (except for one guy in Korea who I had BBQ with at 4am, he seemed excited about it). And lastly, if I ever thought I was going to go after a security job - but I&amp;#8217;m pretty sure I&amp;#8217;m not.&lt;/p&gt;

&lt;p&gt;I think certifications have their place and I applaud anyone who goes out and earns them. I just personally have better things to do with my time than maintain something that really hasn&amp;#8217;t added any value to my career. I encourage others to seek out certifications that do add value to their career and I encourage those who help maintain certifications to keep them evolving &amp;amp; continue to challenge folks to get them and keep them.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/vq8r33JeYCw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/06/im-letting-my-cissp-lapse/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Embedding Ops members in Dev teams - my recent experience]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/Np07MzL0Ojs/" />
    <updated>2012-05-27T06:00:53-05:00</updated>
    <id>http://www.opsbs.com/2012/05/embedding-ops-members-in-dev-teams</id>
    <content type="html">&lt;p&gt;For about 2 months I was sitting with a dev team while we worked through how to build a new service which will be continuously deployed. I wanted to share my experiences here because I&amp;#8217;ve read both positive and negative opinions about doing this and I&amp;#8217;m not sure there&amp;#8217;s a single right answer. It was certainly an interesting experiment and one I may repeat in the future, with some modifications.&lt;/p&gt;

&lt;p&gt;This started when I began attending this teams daily stand up. My goal was to get more involved with a single team in dev to get a better idea of how the process worked in general. This team was one of our two Infrastructure teams which focus on scalability, stability &amp;amp; performance enhancing changes. Initially this team was creating a new Web Services API service which I wrote a little bit about &lt;a href="http://www.rallydev.com/engblog/2011/09/22/deploy-before-features/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eventually that service was set aside and the team moved on to a new Authorization and Authentication service. For this new service the decision was made to use Continuous Deployment. We were already doing fully automated deploys at least once per week but there was a bit of a jump to giving the developers the tools they needed to deploy every commit including monitoring &amp;amp; deployment automation changes.&lt;/p&gt;

&lt;p&gt;I had also noticed, leading up to this, that the few times I had sat over with the team I was immediately more involved in discussions - they asked me questions (because I was there) and I had the option of attending planning sessions. There was literally a 20 foot difference between my own desk &amp;amp; the desk at sat at &amp;#8220;with them&amp;#8221; but it made a world of difference. As such, I talked to my management about sitting with that team all the time and they agreed to try it.&lt;/p&gt;

&lt;p&gt;Now, this team is a bit unique. The team is constructed of a handful of developers working on the code but it also is the home of the Build &amp;amp; Release guy as well as our Sysadmin who manages the testing infrastructure. Sitting with this team gave me an opportunity to not only be involved in the development of this new service but to also become more involved in the Build &amp;amp; Release process, getting familiar with the day to day problems that are dealt with as well as pairing with folks to work on our puppet configurations which are shared between dev &amp;amp; prod. This team structure, along with me, also made them uniquely suited to tackle the Continuous Deployment problem (at least for this service) completely within a single team.&lt;/p&gt;

&lt;p&gt;As part of the Continuous Deployment implementation we wanted to make it as easy as possible for developers to get access to the metrics they needed. We already had splunk for log access but our monitoring system required Ops involvement to manage new metrics. So as part of this new service we also had to perform a spike on a new metric collection/trending systems - we looked at Ganglia &amp;amp; Graphite. We weren&amp;#8217;t trying to tackle alerting - we just made it a requirement that any system we select be able to expose metrics to Nagios. I worked with the developers to test out a variety of ways for our application to push metrics into each of these systems while also evaluating each system for good Operational fit (ease of management, performance, scalability, etc).&lt;/p&gt;

&lt;p&gt;Throughout this process there were also a lot of questions about how to perform deployments. How many previous builds do we keep? When and how do we rollback? What is our criteria for calling a deployment successful? How do we make sure it fails in test before it fails in production? What do we have to build into the service to allow rolling deploys to not interrupt service? The list goes on - these are all things that you should think about with any service but when the Developers are building the deployment tools they become very aware of all of this - it was awesome.&lt;/p&gt;

&lt;p&gt;After about 45 days we had the monitoring system selected &amp;amp; running in production and test, we had deployments going to our testing systems and we were just starting to deploy into production. We now had to start our dark launch, sending traffic from our production system to the new service without impacting production traffic so we can see how this backend service performs, whether it is responding correctly to production traffic &amp;amp; generally get a better understanding of behavior with prod traffic. Today this service is still operating dark as we tweak and tune a variety of things to make sure it&amp;#8217;s ready for production - again, it&amp;#8217;s awesome.&lt;/p&gt;

&lt;p&gt;60 days in things started winding down. We had been dark launched for a few weeks and largely the developers had access to everything they needed - they could look at graphs, logs, if they needed new metrics they just added them to the code and they showed up in monitoring as soon as they deployed. We got deploy lines added onto the graphs so we could correlate deployments with trends on the graph - more awesome. However my work was winding down, there were fewer and fewer Operational questions coming up and I was starting to move back toward working on other Ops projects.&lt;/p&gt;

&lt;p&gt;As I looked back on the last 60 days working with this team I realized the same 20 feet that kept me from being involved with the development team had now kept me from being involved with the Ops team. I was really conflicted but it felt like the healthy thing to do would be to move back over into Ops now that the work was winding down. I immediately realized the impact it had as people made comments &amp;#8220;wow, you&amp;#8217;re back!&amp;#8221;&amp;#8230; seriously folks, I was 20 feet away! You shot me with nerf darts!&lt;/p&gt;

&lt;p&gt;So now I&amp;#8217;ve been back over in Ops for a few weeks and there has actually been a change - I&amp;#8217;m still much more involved with that Dev team than I was from the start. They still include me in planning &amp;amp; they come to me when there are Operational questions or issues that come up around the service. However, that 20 feet is there again and I can&amp;#8217;t hear all the conversations and I know there are questions that would get asked if someone didn&amp;#8217;t have to stand up and walk over. Our Dev teams tend to do a lot of pairing and as a result aren&amp;#8217;t often on IM and email responses are usually delayed - pairing certainly cuts down on the email checking.&lt;/p&gt;

&lt;p&gt;Was I happy I did it? Absolutely. Would I do it again? I think I would - but I would constrain it and set expectations. I think the physical proximity to the team helped a lot to move quickly and toss ideas around while the service was being developed and decisions were being made but it did have an impact on my relationship with the Ops team that I wish I could have avoided. I think continuing to move back and forth - spending time with the Ops team would be helpful. I actually did spend my on-call weeks (every 4th week) in Ops instead of sitting with the Dev team, but I would try to find some time during the 3 weeks in-between to be over there too, it was just too much absence.&lt;/p&gt;

&lt;p&gt;All that said, I think overall the company and the service is better for the way this turned out and for me personally it was a super insightful experience that I wish every Ops person could try sometimes.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/Np07MzL0Ojs" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/05/embedding-ops-members-in-dev-teams/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Monitoring is pretty cool - AssimMon]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/JaqlinnXUM0/" />
    <updated>2012-05-26T12:18:03-05:00</updated>
    <id>http://www.opsbs.com/2012/05/monitoring-is-pretty-cool-assimmon</id>
    <content type="html">&lt;p&gt;Yeah, I know &lt;a href="https://github.com/monitoringsucks"&gt;Monitoring Sucks&lt;/a&gt;, but it can be pretty neat as well. It&amp;#8217;s a hard problem, so there are all kinds of interesting approaches to it. A new one I came across recently was the &lt;a href="http://assimmon.org"&gt;Assimilation Monitoring Project&lt;/a&gt;. I met Alan Robertson (&lt;a href="http://en.wikipedia.org/wiki/Linux-HA"&gt;Linux-HA founder&lt;/a&gt;) at a recent Cloud Computing meetup and in the post-meetup discussions he talked a bit about his project. One of the things he mentioned was that our monitoring systems spend the majority of their time (proportional to the quality of your system I guess) detecting and reporting that everything is ok. His project aims to distribute that task across your systems in a way that scales to quite large infrastructures &amp;amp; is inherently redundant.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not sure how ready it is for prime time, but take a look - it sounds pretty interesting.&lt;/p&gt;

&lt;p&gt;I think I&amp;#8217;ll always have an interest in monitoring problems - not because I have to as part of my job, but because the problem has such a wide variety of potential solutions with different benefits. It&amp;#8217;s also one of those areas that&amp;#8217;s very rarely just plug and go, you have to architect it like any other service which keeps it interesting.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/JaqlinnXUM0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/05/monitoring-is-pretty-cool-assimmon/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Why do we insist on consensus on the role of Ops?]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/h7nn_CMjSBg/" />
    <updated>2012-03-19T19:44:26-05:00</updated>
    <id>http://www.opsbs.com/2012/03/why-do-we-insist-on-consensus-on-the-role-of-ops</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve seen so many threads over the last few weeks about who should do what, why, and what you should do about it if you don&amp;#8217;t conform. I don&amp;#8217;t get it. Ops is a team in a company - there are lots of types of companies. Companies typically have a few goals:&lt;/p&gt;

&lt;p&gt;1) Make money&lt;/p&gt;

&lt;p&gt;2) Change the world, as long as we can do #1.&lt;/p&gt;

&lt;p&gt;Lots of companies accomplish these goals doing things wrong. If you want proof, read Good to Great, there are oodles of examples of companies who didn&amp;#8217;t qualify as &amp;#8220;great&amp;#8221; but who you would recognize as successful.&lt;/p&gt;

&lt;p&gt;When wagon trains migrated families west across the US, the idea of driving 40mph, of crossing a state in a day, would have been crazy talk. Then came the locomotive.&lt;/p&gt;

&lt;p&gt;When locomotives moved people across the country, the idea of a car making an interstate trip would have been crazy. It would be madness if everyone operated their own car. Then came cars, and road, and traffic signals, and road signs. This took time, lots of mistakes, lots of retrospectives, and year over year progress.&lt;/p&gt;

&lt;p&gt;Progress isn&amp;#8217;t made by conforming to the conventions of today, it&amp;#8217;s made by pushing for something better. That&amp;#8217;s what some folks are doing in Ops today - they are trying to push the limits and do what works for them. Others are observing these patterns and following suit. Still others are sitting back and saying &amp;#8220;That ain&amp;#8217;t right, my process works just fine&amp;#8221;. Perfect.&lt;/p&gt;

&lt;p&gt;It wasn&amp;#8217;t necessary for automobile manufacturers to convince railroad operators that the car was the future. The car became the future because people adopted it, because it worked, and because over time the infrastructure that supported it became more mature.&lt;/p&gt;

&lt;p&gt;As our tools get better, as our patterns become more and more repeatable, as we start to understand what roads &amp;amp; traffic signals &amp;amp; road signs we need for Ops to get out of the way of Developers making changes in production, things will move. In the mean time - talk about what works for you, why it works for you, and don&amp;#8217;t bother convincing other people why it should work for them.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/h7nn_CMjSBg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/03/why-do-we-insist-on-consensus-on-the-role-of-ops/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Sometimes it takes 2 days to do 2 hours of work]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/UUzMrjiGJKc/" />
    <updated>2012-02-21T23:37:21-06:00</updated>
    <id>http://www.opsbs.com/2012/02/sometimes-it-takes-2-days-to-do-2-hours-of-work</id>
    <content type="html">&lt;p&gt;I hear all the time:&lt;/p&gt;

&lt;p&gt;&amp;#8220;I could get that done in a few hours, easy&amp;#8221;&lt;/p&gt;

&lt;p&gt;&amp;#8220;I could whip that up in 2 seconds&amp;#8221;&lt;/p&gt;

&lt;p&gt;So what? Instead of bragging about how awesome people should think you are because of how fast you say you can get things done, how about you ask some questions?&lt;/p&gt;

&lt;p&gt;&amp;#8220;When do you need it done by?&amp;#8221;&lt;/p&gt;

&lt;p&gt;&amp;#8220;Do we have time to improve this other widget to make fixing your thing easier?&amp;#8221;&lt;/p&gt;

&lt;p&gt;We are so focused on trying to crank out as much as we possibly can, we sometimes think it&amp;#8217;s better to talk about how quickly we can get things done. Instead, under commit &amp;amp; over deliver. If you have 2 days to get something done and you only need 1/2 day - spend some time improving something that will make &lt;em&gt;your&lt;/em&gt; life easier. Understand what the expectations are before you commit &amp;amp; see if you can get in some extra benefit. If you hit a snag &amp;amp; end up taking 2 days to finish then nobody is disappointed, but if you don&amp;#8217;t then you get some extra work done &amp;amp; still meet expectations.&lt;/p&gt;

&lt;p&gt;I know folks prefer accurate estimates &amp;amp; like to fill your day with the stuff they want done - but don&amp;#8217;t complain that you can&amp;#8217;t get your stuff done if you aren&amp;#8217;t under committing once in a while.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/UUzMrjiGJKc" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/sometimes-it-takes-2-days-to-do-2-hours-of-work/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Getting out of the way - Monitoring]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/4Eo3xOpgaA4/" />
    <updated>2012-02-20T06:00:25-06:00</updated>
    <id>http://www.opsbs.com/2012/02/getting-out-of-the-way-monitoring</id>
    <content type="html">&lt;p&gt;In recent years I&amp;#8217;ve come to view Operations as a traditional bottleneck that developers have become comfortable with. I think this fact is changing rapidly to give Developers more visibility into how their application behaves in production &amp;amp; to allow faster delivery of value into production environments through things like continuous deployment.&lt;/p&gt;

&lt;p&gt;One of the areas Operation is often a bottleneck is monitoring. The traditional model is to have Ops ask Dev what metrics they need monitored &amp;amp; to set those up. This often means that monitoring can&amp;#8217;t start until the metrics are available in the code, and then it isn&amp;#8217;t for days or weeks after that when some Ops person has time to setup the monitoring system to pull those. This is broken and unnecessary.&lt;/p&gt;

&lt;p&gt;If you are operating in a service delivery model where you have control over all the systems you monitor, you should be working to get out of the way. You should be working to make the monitoring happen automatically without Ops involvement. This doesn&amp;#8217;t mean that Dev does all the work, what it means is that Ops selects monitoring systems that allow for discovery of new metrics &amp;amp; automatic collection of those metrics without additional incremental work each time.&lt;/p&gt;

&lt;p&gt;Some of this is technology selection, some of this is architecture, and some of this is just doing the work. This does take work - but I would be hard pressed to find an example where the work required to set this up is not offset by the work saved in the long run not having to respond to every new metric that gets added. Below are some concrete examples of what I&amp;#8217;m talking about - if you aren&amp;#8217;t familiar with this read these.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metric Collection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/codahale/metrics"&gt;yammer metrics library&lt;/a&gt; has made it really easy to expose your application metrics automatically. They have additionally provided hooks into tools like &lt;a href="http://ganglia.sourceforge.net/"&gt;Ganglia&lt;/a&gt; and &lt;a href="http://graphite.wikidot.com/"&gt;Graphite&lt;/a&gt; for pushing metrics to the monitoring system. As you look at how to scale a monitoring system, these are great tools to allow for that. Another popular data collection tool is &lt;a href="https://github.com/etsy/statsd"&gt;statsd&lt;/a&gt;. The main idea is that you want to use collection tools that don&amp;#8217;t have to have metrics pre-defined for them. If you give them a value for a metric they track it, that is all. The more often you give it to them, the more numbers they store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graph presentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ganglia is great for allowing you to programmatically define graphs and manage those via your CM system of choice, like puppet or chef. Another approach is something like Graphite which provides a rich and generic UI for taking whatever metrics you collect &amp;amp; combining them into a graph. Building custom dashboards and such in Graphite is where it&amp;#8217;s strength is at.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alerting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.nagios.org/"&gt;Nagios&lt;/a&gt;. We all dislike it, but it works pretty well. The main advantage Nagios has over more &amp;#8220;intelligent&amp;#8221; systems is that it can be configured through your CM system of choice. Additionally, Nagios has a massive community behind it. When building out Nagios or whatever you use, do your best to drive your configuration through CM and try to get things to the point where you don&amp;#8217;t have to do any incremental monitoring work for each new system you add. New systems that are the same type as a system that&amp;#8217;s already defined should just get monitored for &amp;#8220;free&amp;#8221;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think of monitoring like a service, like any other application in your architecture. You want it to discover what&amp;#8217;s out there and configure itself as much as possible. Doing this isn&amp;#8217;t completely simple yet - but it&amp;#8217;s possible and if you set your mind to it you might even find a way to do it better that you can contribute back to the community. In doing this, try to get out of the way of your Developers and strive to have metrics they expose in their application automatically show up in your monitoring system of choice. Try to make it very low cost for them to add new metrics to see new information &amp;amp; you will probably be surprised at the amount of monitoring you get when all a Developer has to do is write the code to track the metric &amp;amp; it shows up in prod.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/4Eo3xOpgaA4" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/getting-out-of-the-way-monitoring/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Overcoming Obstacles]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/80O5nXbH_iI/" />
    <updated>2012-02-17T06:00:25-06:00</updated>
    <id>http://www.opsbs.com/2012/02/overcoming-obstacles</id>
    <content type="html">&lt;p&gt;Three days a week, unless there&amp;#8217;s something seriously preventing it, I scarf down my lunch and head down to the bouldering gym for an hour of climbing. This isn&amp;#8217;t a post about rock climbing, but in the short time I&amp;#8217;ve been climbing (about 8 months) I&amp;#8217;ve found the whole practice to change the way I think about some problems. Rock climbing is a physical sport, but it&amp;#8217;s also a very mental sport. Climbing difficult routes is a combination of strength, technique and determination. The process of learning is interesting as well, because you don&amp;#8217;t hear a lot of people giving advice in the climbing gym. Folks lead by example.&lt;/p&gt;

&lt;p&gt;So, I wanted to draw some parallels to my observations about climbing and working through obstacles in tech. We deal with new challenges every day and some can be pretty intimidating. We also learn and teach a lot, and I think there are some lessons about that as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t allow obstacles to defeat you before you start&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When you approach a new route it can be intimidating, you aren&amp;#8217;t really sure what to expect, what part of a route is going to be most difficult. This is true of approaching many problems, but just because a problem looks intimidating does not mean it cannot be overcome. There is a lot we don&amp;#8217;t understand until we are working our way through a problem and telling yourself you can&amp;#8217;t do this isn&amp;#8217;t going to help. Make one move at a time &amp;amp; do your best - rarely is the situation so critical that you cannot afford to adjust as you learn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When you miss, inspect and adapt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The bouldering gym is full of big pads. Those aren&amp;#8217;t there because nobody ever falls. Everybody falls. This is part of the process of challenging yourself, part of the process of trying new things. You go to the gym to fall because it&amp;#8217;s safe to challenge yourself there &amp;amp; learn how to improve.&lt;/p&gt;

&lt;p&gt;Too often I hear folks who are afraid to fall, afraid they might choose the wrong path when working through a problem in their life, their career, or some technical issue. It just isn&amp;#8217;t possible to know the right path 100% of the time so don&amp;#8217;t bother, do your best. When the inevitable fall happens, take another look at your moves, try to understand what went wrong, and try again a different way.&lt;/p&gt;

&lt;p&gt;Inspecting and adapting to what you learn is one of the greatest skills you can learn. Freeing yourself to make mistakes removes a lot of barriers that you thought were there when they actually weren&amp;#8217;t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch others&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the Gym this means literally watching other climbers. Some climb with such grace that it makes things look so easy. This is true of a lot of things - so look at what others are doing. We all experience problems in different ways and we all solve them in different ways, learning from each other is key to progress. But keep in mind too that what works for one may not work for another. A tall person will climb a route much differently than a short person, they have longer reach, they also have a different center of gravity. Use ideas you see, but don&amp;#8217;t get too upset if those same ideas don&amp;#8217;t work for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be patient&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you first start to climb, as when you first get into most things, there is a period of fast improvement. You feel great, you are learning fast, you must be awesome. As you learn more and as you start to approach more difficult challenges, your ascent will seem to slow. You are getting better, you are learning stuff, but it&amp;#8217;s not as easy as it used to be. Once you&amp;#8217;ve been doing this for 15 years, the problems that are hard to overcome aren&amp;#8217;t about learning how to use some new programming language or learning to deal with some new technology, they are the finer points that actually make you better day to day. Those things take time to overcome, they are hard problems that require discipline and persistence like you have never needed before.&lt;/p&gt;

&lt;p&gt;Climbers who have been climbing for many years will tell you that it becomes very hard to progress to the next level. Each progressive level requires significant improvement &amp;amp; a lot of work. You have to be patient &amp;amp; keep at it, you have to love climbing to climb, and you will improve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Helpful&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The only reason I am where I am at is because there were people who were willing to help me along the way. When I first stepped foot in the climbing gym there were people who showed me the basics. When I was clearly struggling with a route, there were people who climbed it &amp;amp; offered advice. When I have had problems finding that missing semicolon in a sea of code, there have been others willing to lend a 2nd set of eyes to find it.&lt;/p&gt;

&lt;p&gt;We need each other to overcome obstacles and we each bring a different set of skills to the table. Your being helpful contributes to that, just as you have leveraged others helpfulness to get where you are at. Give back and help out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Nice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s easy to be arrogant. It&amp;#8217;s easy to tell someone that your challenges are more difficult than theirs. It also serves no one but yourself. Be kind as you work your way through your challenges because relationships matter more than any ability you could ever learn.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/80O5nXbH_iI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/overcoming-obstacles/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Keep decisions low cost so they are easier to make]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/EoKNa4THTio/" />
    <updated>2012-02-16T06:00:27-06:00</updated>
    <id>http://www.opsbs.com/2012/02/keep-decisions-low-cost-so-they-are-easier-to-make</id>
    <content type="html">&lt;p&gt;Which question is easier to answer?&lt;/p&gt;

&lt;p&gt;1: Select the storage platform which will serve all our needs for the next 3 years up to 10PB.&lt;/p&gt;

&lt;p&gt;2: Select a standard disk drive to use in the next 5 servers we purchase.&lt;/p&gt;

&lt;p&gt;Most people could answer #2 pretty easily with a little bit of information. It might take a day or two to figure this out. And if you get it wrong, what&amp;#8217;s the worst thing that happens? You&amp;#8217;re replacing 10 disks or so. #1 though, that&amp;#8217;s harder - that requires knowing what you are going to be doing for the next 3 years, how much money you can spend, how much flexibility you are going to need, etc.&lt;/p&gt;

&lt;p&gt;The cost of being wrong for question #1 could be millions of dollars.&lt;/p&gt;

&lt;p&gt;The cost of being wrong for question #2 probably means a few thousand dollars.&lt;/p&gt;

&lt;p&gt;You don&amp;#8217;t always have the luxury of changing the question, but when faced with a decision that seems to be hard to make, look for ways to make it easier. One of the ways to make a question easier to answer is to lower the cost of being wrong. For question #1, how can you answer that question for the next year without excluding the possibility of expanding to 3 years? How can you get more data about your needs by starting small, gathering data, building understanding? How can you constrain the scope, not solve all your problems but solve the most pressing ones?&lt;/p&gt;

&lt;p&gt;Try not to solve all your problems at once because there&amp;#8217;s a good chance you aren&amp;#8217;t going to succeed. Pick a problem, and do the simplest thing that works to fix that problem.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/EoKNa4THTio" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/keep-decisions-low-cost-so-they-are-easier-to-make/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Work-life balance is personal]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/kmUQK0VeUQY/" />
    <updated>2012-02-15T06:00:07-06:00</updated>
    <id>http://www.opsbs.com/2012/02/work-life-balance-is-personal</id>
    <content type="html">&lt;p&gt;I was once (or three times) told that I was working when I should not. Usually this happens in response to a 10pm email, or an email on the weekend, or three of them. The thing is, that&amp;#8217;s an important part of my balance and if I don&amp;#8217;t do it I get thrown off.&lt;/p&gt;

&lt;p&gt;I like the idea that companies try to embrace work-life balance, the ideal that says you should have a life outside of work. What I do not like, however, is that anyone thinks they know what time of day I should be working. Just because someone 50  years ago said that 40 hours a week is &amp;#8216;normal&amp;#8217; doesn&amp;#8217;t mean it&amp;#8217;s appropriate for everyone. I get ideas at 10pm &amp;amp; I want to share them while I&amp;#8217;m inspired.&lt;/p&gt;

&lt;p&gt;Inspiration &amp;amp; opportunity come my way when they do, and when they come I have to decide if I want to make my move and get something done or wait until I&amp;#8217;m &amp;#8220;on the clock&amp;#8221;. Doing the latter almost always means not doing it at all. Inspiration, after all, expires rather quickly.&lt;/p&gt;

&lt;p&gt;What if work-life balance meant being honest with yourself and your employer? What if it meant that when there was an opportunity, you jumped on it, and for doing that you were given the flexibility to take that time back when there were personal opportunities outside of work? A number of companies do this already, it&amp;#8217;s just informal and largely based on trust. The problem with this is that when it becomes a problem because of an individual, it has to get corrected for the whole team. Usually that correction comes in the form of &amp;#8220;core hours&amp;#8221; or some other lame blanket of consistency placed on the many because of problems with the few.&lt;/p&gt;

&lt;p&gt;Part of the reason individuals see a problem in my work habits is because they feel pressure to conform to their interpretation of my actions. If I send a note at 10pm, that doesn&amp;#8217;t mean that I am working 8 hours during the day + 2 hours at night. Some days it might mean I worked 10 hours, other days I might put in 6. The problem is that people feel pressure to do the same. They see someone else working &amp;#8220;overtime&amp;#8221; and feel like they need to. But they don&amp;#8217;t know what I&amp;#8217;ve been doing - they just see me working off-hours and assume it&amp;#8217;s &amp;#8220;overtime&amp;#8221;. This turns into the ultra-competitive work-all-day-and-night environment that some companies have. That&amp;#8217;s not what I&amp;#8217;m talking about. That&amp;#8217;s not what I do.&lt;/p&gt;

&lt;p&gt;I have the good fortune of having work that overlaps with my passion, which is often my hobby. My hobbies contribute to my work, and vice versa. This blurs the distinction between work &amp;amp; life. My wife struggles with this - &amp;#8220;I can&amp;#8217;t tell if you are working or not when you are on the computer&amp;#8221;. To which I ask &amp;#8220;Why does it matter?&amp;#8221;. Whether I&amp;#8217;m working for my own goals, or working to get paid, the parameters are really the same. She doesn&amp;#8217;t like that answer because she doesn&amp;#8217;t want to interrupt me when I&amp;#8217;m working, but if I&amp;#8217;m not working it&amp;#8217;s ok. The truth is, it&amp;#8217;s always ok - and I&amp;#8217;ll tell her (nicely, I hope) if it isn&amp;#8217;t.&lt;/p&gt;

&lt;p&gt;Maybe if we were more honest about how we worked &amp;amp; more open about what we expect from each other it would be easier to work this way. If we managed more based on achievement than hours or individual tasks. Maybe then we could all work better.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/kmUQK0VeUQY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/work-life-balance-is-personal/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Are you making blameless, data driven decisions?]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/SKZOxZWlR2I/" />
    <updated>2012-02-14T06:00:58-06:00</updated>
    <id>http://www.opsbs.com/2012/02/are-you-making-data-driven-decisions</id>
    <content type="html">&lt;p&gt;On this day of emotion &amp;amp; emotional decisions, this post is about not making decisions using emotions.&lt;/p&gt;

&lt;p&gt;When I hear people use words like &amp;#8220;could be&amp;#8221; or &amp;#8220;should be&amp;#8221; I start to wonder if there&amp;#8217;s enough data on the table to make a good decision. It&amp;#8217;s true that sometimes you just don&amp;#8217;t have the answer, so you have to ask more questions. How can we learn more to make this decision easier to make? How can we make this decision easier to change if we get it wrong?&lt;/p&gt;

&lt;p&gt;Decisions made in the absence of data have another problem, the only collateral is personal responsibility. You are trusting someone&amp;#8217;s gut, or someone&amp;#8217;s experience, or someone&amp;#8217;s opinion. When things don&amp;#8217;t go right, you blame that someone.&lt;/p&gt;

&lt;p&gt;If you are making a decision that is hard to change, it should be made when the and answer to questions are &amp;#8220;it is&amp;#8230;&amp;#8221; or &amp;#8220;it is not&amp;#8230;&amp;#8221;. You use those words because you have confidence you have tested &amp;amp; have data to back it up. You should be saying &amp;#8220;We know&amp;#8221; and not saying &amp;#8220;We think&amp;#8221;. Saying you know without data is just being dishonest. I don&amp;#8217;t care if you&amp;#8217;ve done this before, the people in the room have only your credibility to trust. Solutions don&amp;#8217;t work in different environments for a variety of reasons, but if your credibility was the basis for a decision it will be the only thing that gets blamed.&lt;/p&gt;

&lt;p&gt;Try to make decisions easy to change.&lt;/p&gt;

&lt;p&gt;Try to make decisions based on fact, not opinion.&lt;/p&gt;

&lt;p&gt;Try to make decisions that do not rely on your credibility.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/SKZOxZWlR2I" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/are-you-making-data-driven-decisions/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[If you aren't using feature toggles, start... now]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/t4BCdcPMjGE/" />
    <updated>2012-02-13T06:00:39-06:00</updated>
    <id>http://www.opsbs.com/2012/02/if-you-arent-using-feature-toggles-start-now</id>
    <content type="html">&lt;p&gt;Search for &amp;#8216;feature toggle&amp;#8217; in Google, check out the results. The simple fact is that branching using a revision control system still has its place, but its place is not controlling when you release a feature to your customers. Feature toggles create a distinction between deploying your feature &amp;amp; making that feature available for use. They also remove the requirement that to disable a feature, or to go back to &amp;#8216;old behavior&amp;#8217; you have to rollback your deployment to an older version of code. There are lots of other benefits too, as well as some challenges.&lt;/p&gt;

&lt;p&gt;Bottom line though, if you aren&amp;#8217;t using these you need to really seriously consider whether they would be a benefit. If you control your software release &amp;amp; you operate a multi-tenant system, and you want to increase the amount of control you have around the features you release, you need to be using these.&lt;/p&gt;

&lt;p&gt;Here are some related blog posts:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://code.flickr.com/blog/2009/12/02/flipping-out/"&gt;http://code.flickr.com/blog/2009/12/02/flipping-out/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/"&gt;http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rallydev.com/engblog/2011/12/09/the-awesomeness-of-feature-toggles/"&gt;http://www.rallydev.com/engblog/2011/12/09/the-awesomeness-of-feature-toggles/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rallydev.com/engblog/2011/12/12/the-best-part-of-feature-toggles-removing-them/"&gt;http://www.rallydev.com/engblog/2011/12/12/the-best-part-of-feature-toggles-removing-them/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rallydev.com/engblog/2011/12/14/testing-feature-toggled-code/"&gt;http://www.rallydev.com/engblog/2011/12/14/testing-feature-toggled-code/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.rallydev.com/engblog/2011/12/20/feature-toggles-branching-in-code/"&gt;http://www.rallydev.com/engblog/2011/12/20/feature-toggles-branching-in-code/&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/t4BCdcPMjGE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/if-you-arent-using-feature-toggles-start-now/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Establishing ownership in Ops Teams]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/dOwf7T6LZZI/" />
    <updated>2012-02-05T10:28:54-06:00</updated>
    <id>http://www.opsbs.com/2012/02/establishing-ownership-in-ops-teams</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve been having some discussions about this lately so figured I would write something about the topic. Being a member of an Ops team can be pretty challenging at times. The job can be high pressure and often it feels like you spend all your time fighting fires, shaving yaks, etc. One of the difficult parts of being in Ops is that it&amp;#8217;s often hard to put your mark on things, to use your skills to leave a lasting impression.&lt;/p&gt;

&lt;p&gt;The reason it&amp;#8217;s hard to leave a mark isn&amp;#8217;t because there&amp;#8217;s a lack of work, but because the work changes so frequently that influencing the long term outcome of a project can be hard. This can often be even more difficult in Operations teams following Agile methodologies because the work is broken into smaller stories and those stories may get worked by multiple folks. Even within these teams though, there are individuals with skills in certain areas and often there is more than one person with passion for a particular topic. Someone who&amp;#8217;s passionate about a topic is more likely to do a great job, in my experience, and so we should see how we can leverage it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Roles and Responsibilities Matrix&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One successful tool I was shown was a Roles and Responsibilities matrix. The goal of this is to establish some basic ownership of components within an infrastructure so that individuals can focus their work. This often happens naturally in teams, but doing this formally accomplishes a few important goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allows individuals with no experience, but with an interest, to raise their hand and work with new things.&lt;/li&gt;
&lt;li&gt;Allows the team to agree on who is responsible for what infrastructure pieces. This is not sole ownership, but more about establishing expertise &amp;amp; creating less contention over decisions.&lt;/li&gt;
&lt;li&gt;Helps you, as the manager, formalize who to work with on specific issues.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The matrix is pretty simple, for each component (you can partition this however you want) you define two roles, a &amp;#8220;P1&amp;#8221; and a &amp;#8220;P2&amp;#8221;. These are the primary and secondary points of contact for that component. But there&amp;#8217;s more to this than just having a primary and secondary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P1: This person is the current &amp;#8220;non-expert&amp;#8221;, the trainee. All escalations for this component should go to them first. If they don&amp;#8217;t know the answer it&amp;#8217;s their responsibility to work with the P2 &amp;amp; resolve the issue. In this process, they learn.&lt;/li&gt;
&lt;li&gt;P2: This person is the current expert, the trainer. They understand that they are P2 and are to work with the P1 on issues where they need help.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I have also observed this setup where there&amp;#8217;s only a P1 and they are the expert because there just aren&amp;#8217;t enough folks to have a P1/P2 for that component (or it&amp;#8217;s not a priority). Another reason for the P1 to be the expert is if the system is going through a lot of changes and you want someone to keep tight reigns on what changes are made.&lt;/p&gt;

&lt;p&gt;Here is what an example matrix might look like&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.opsbs.com/images/Screen-Shot-2012-01-19-at-9.20.09-PM.png"&gt;&lt;img src="http://www.opsbs.com/images/Screen-Shot-2012-01-19-at-9.20.09-PM.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking over this, each person is a P1 for one component &amp;amp; a P2 for some other. In a perfect world it works out like this, but the world aint perfect. Do your best with what you have - but try to setup something like this.&lt;/p&gt;

&lt;p&gt;This is usually established during a meeting every quarter or every 6 months.  You walk through the list of functional areas and ask for volunteers. This more often than not ends with very little contest, but in the event where there are concerns about who is P1 or P2 you should try to understand why it&amp;#8217;s important to each person to have a role in this, what they want to accomplish, and consider what other areas they also want to accomplish things in. Often, after discussing their vision on this component along with other stuff they are working on it&amp;#8217;ll become more self evident who is the best P1 &amp;amp; you can get agreement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defining cross-functional areas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The matrix above works well, but the first question from folks is usually something like &amp;#8220;what about monitoring, if I own that does it mean I have to do all that work for everyone else?&amp;#8221;. The answer is &amp;#8220;no&amp;#8221; in most cases. There are some functional areas which are pretty clear &amp;amp; mostly self contained but there are others which cut across all the other areas. Examples where something intersects with everything else are Monitoring, Networking, Configuration Management and sometimes things like Storage, depending on your architecture.&lt;/p&gt;

&lt;p&gt;For areas where your area of expertise is a dependency for others there needs to be shared ownership of those tasks. I generally look at it this way, using Monitoring as an example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The P1 is responsible for overall architecture &amp;amp; infrastructure, training, documentation &amp;amp; escalations for that system. They are responsible for enabling the other team members to use the system effectively &amp;amp; for bringing any major changes to the team for review &amp;amp; consensus.&lt;/li&gt;
&lt;li&gt;The P1 owners of other components are responsible for integrating their systems with monitoring, for writing any monitors, and for establishing meaningful metrics &amp;amp; thresholds for that system.&lt;/li&gt;
&lt;li&gt;Both P1 owners work together to make sure any monitoring / metrics are done in a consistent way that is inline with what the team has agreed is the architecture.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In this way you are avoiding making the monitoring owners job suck by having to spend all day writing monitors for a million different components, but they have ownership of the overall success of the monitoring infrastructure. Individuals who own other components are making decisions about how best to monitor their own systems within the constraints of the best practices for the monitoring system &amp;amp; they can work with the monitoring owner if they want to break new ground on doing things a different way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working outside of Operations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most important roles Operations plays (in my opinion) is in working with Development as closely as possible. This is becoming more and more obvious and more teams are starting to give it names, like DevOps. Some Ops folks are better at this than others and some will go out and find Developers to work with and others need to be prodded a bit.&lt;/p&gt;

&lt;p&gt;Defining clear roles for individuals in Ops is a good way to force this collaboration. By assigning one Ops person to an upcoming Dev project &amp;amp; setting clear expectations around that role, you help foster their involvement and empower them to start working with other teams. That Dev team becomes a functional area, and they get a P1 &amp;amp; P2 like any other component.&lt;/p&gt;

&lt;p&gt;What I would typically advocate for smaller Dev organizations is integrating one Ops person per Dev team if you can. This means that Ops person attends stand-ups, they go to planning meetings, and they are familiar with all the stuff that Dev team is working on. Should there become a need for Ops related work (or communication, which is always needed), the assigned Ops team member is responsible for that role. They aren&amp;#8217;t necessarily responsible for all of the work but they are responsible for making sure the work is communicated &amp;amp; making sure it gets done.&lt;/p&gt;

&lt;p&gt;Another approach is to assign Ops team members to individual projects. As projects arise, team members start to attend those meetings &amp;amp; start to get involved with any stand-ups and work around that project. I don&amp;#8217;t like this approach as much because it relies on the Dev teams reaching out and saying &amp;#8220;Ok, we&amp;#8217;re ready for an Ops person now&amp;#8221; most of the time - and that often happens late. Having Ops members already in position inside teams gives you much earlier warning and helps shape the end result much earlier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tracking &amp;amp; Communicating work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that everyone is working on their own projects, there will be a tendency to communicate that work less often &amp;amp; less completely. It takes some work to avoid this but it&amp;#8217;s actually not all that hard. The important aspect of this is that each team member is talking about what they worked on each day at stand up &amp;amp; are being clear about their priorities during planning sessions. How you achieve this is up to you - but I&amp;#8217;ll throw out some ideas.&lt;/p&gt;

&lt;p&gt;Kanban works well as a visualization tool for work in progress. From an Ops perspective, I think that&amp;#8217;s where the role of Kanban starts and ends. Operations is an inherently interrupt driven team and while many organizations get out of that mode through lots of practice - if you are at that point you probably don&amp;#8217;t need my help in tracking &amp;amp; communicating work. Where I have seen Kanban work really well is in prioritizing work during planning (abc must come before xyz, move the card) and in visually showing what you did, what you are doing, and what you will be doing next.&lt;/p&gt;

&lt;p&gt;Daily stand-ups are really, really helpful. Things change day to day in Ops teams and taking 10 minutes each morning to get everyone in sync with what&amp;#8217;s going on is a huge help. Identifying blocks and talking about how to clear those is a big part of this. When everyone is there talking about things, saying &amp;#8220;I&amp;#8217;m blocked waiting for xyz&amp;#8221; is an opportunity to get that problem solved today.&lt;/p&gt;

&lt;p&gt;Also documenting proposals using a shared document system like Google Docs is a massive improvement. I can write up a proposal for something and instead of asking for feedback, people can add it right to the document - they can make comments, etc. We get together for a 30-60 minute meeting to review the document &amp;amp; the feedback and we take a shot at a final proposal. If there are still open questions we go back and answer those. The key is that much of the work is done asynchronously rather than asking that everyone bring their best, most un-distracted thoughts, into a meeting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rotating roles&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lastly, with all of this, there is change. Nobody wants to be stuck in the same role for years - people in Operations want to learn new things, they want an opportunity to take something that needs improvement and leave their mark on it. In every infrastructure there are some cool projects and there are some lame projects. There are also those parts of the system that are just a pain in the ass to maintain &amp;amp; nobody wants to do it. It&amp;#8217;s important to rotate these around.&lt;/p&gt;

&lt;p&gt;What has worked in my experience is a periodic review of the priorities. You start with a review of work in progress so that folks know what they are signing up for if they want to tackle an area they aren&amp;#8217;t working in today. Then you wipe the slate clean &amp;amp; go functional area by functional area asking who wants to be involved.&lt;/p&gt;

&lt;p&gt;The trick with this process is to try to allow folks who have projects in flight to maintain that responsibility while giving someone else a  shot at learning about the system. This is where the P1/P2 roles can really be leveraged. If you are re-building your network and you really need the same guy to maintain his momentum in that project - he becomes the P2, continuing that work. You assign a new P1 (if someone new wants to be involved) and you have them tackle the day to day interrupts. The two members work together on it and the new gets to learn while the old gets to finish their project.&lt;/p&gt;

&lt;p&gt;If a functional area has no work in progress and you really want to move something new forward there, find the person who&amp;#8217;s passionate about making that change and make them a P1. Find a P2 that can help enable them and let them go for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrapping up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ownership is an important part of any job and in Operations it has been the light that keeps me coming back. Giving that ability to every member of your team is important, and hopefully this gives you some ideas about how to do that.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/dOwf7T6LZZI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/establishing-ownership-in-ops-teams/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Thanks Seth]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/ezV0t39rLIk/" />
    <updated>2012-02-03T23:32:06-06:00</updated>
    <id>http://www.opsbs.com/2012/02/thanks-seth</id>
    <content type="html">&lt;p&gt;There are few people I can point to on the Internet and say &amp;#8220;you made an impact&amp;#8221;. A few have, and countless others have contributed in various ways to the ideas I have today. No other however, has had the impact of Seth Godin. I&amp;#8217;m sure you know who he is already, if not then I hope you gain something from this.&lt;/p&gt;

&lt;p&gt;I try to read every post - I don&amp;#8217;t always manage, and sometimes I read them out of order. Today I read &lt;a href="http://sethgodin.typepad.com/seths_blog/2012/02/hills.html"&gt;this one&lt;/a&gt;. Like so many others, each having its own impact on me, this one made me pause and think &amp;#8220;is this what I&amp;#8217;m doing?&amp;#8221;. Seth puts something out there every day. He always shows up &amp;amp; I always look forward to it.&lt;/p&gt;

&lt;p&gt;So I just wanted to say thanks. Thanks for a &lt;a href="http://www.thedominoproject.com/books"&gt;variety of great books&lt;/a&gt;. Thanks for &lt;a href="http://www.thedominoproject.com/2011/11/why-publish-poetry.html"&gt;introductions to great people&lt;/a&gt;. And thanks for being a &lt;a href="http://sethgodin.typepad.com/"&gt;daily source of new thoughts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That is all.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/ezV0t39rLIk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2012/02/thanks-seth/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Despite your best efforts, some people are just...]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/T6el2maRRwQ/" />
    <updated>2011-12-18T23:30:44-06:00</updated>
    <id>http://www.opsbs.com/2011/12/despite-your-best-efforts-some-people-are-just</id>
    <content type="html">&lt;p&gt;&amp;#8230; asses.&lt;/p&gt;

&lt;p&gt;You should try to be aware of your own faults, try to improve yourself and try to be patient with others. You should try to find ways to be more clear &amp;amp; describe your position so that others can understand it. You should work hard to overcome geographical barriers, differences in culture &amp;amp; background, we&amp;#8217;re all different in special ways. You should try to put yourself in other&amp;#8217;s positions every chance you get.&lt;/p&gt;

&lt;p&gt;But despite your best efforts, some folks are just asses. That will never change. There are folks you just aren&amp;#8217;t able to get along with.&lt;/p&gt;

&lt;p&gt;Recognize this &amp;amp; don&amp;#8217;t bother trying to change them - just try to avoid showing the worst in yourself in the process. Don&amp;#8217;t be an ass too.&lt;/p&gt;

&lt;p&gt;Find a way, some way, to still be awesome in the eyes of those who matter.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/T6el2maRRwQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2011/12/despite-your-best-efforts-some-people-are-just/</feedburner:origLink></entry>
  
  <entry>
    <title type="html"><![CDATA[Asking for permission]]></title>
    <link href="http://feedproxy.google.com/~r/OperationBootstrap/~3/z3GOmi8TU_0/" />
    <updated>2011-12-14T07:32:22-06:00</updated>
    <id>http://www.opsbs.com/2011/12/asking-for-permission</id>
    <content type="html">&lt;p&gt;The decision of whether or not to ask permission comes up a lot in Ops. I&amp;#8217;m sure you&amp;#8217;ve heard that sometimes it&amp;#8217;s better to ask for forgiveness than to ask for permission. As with most things in life, try to put yourself in the other folk&amp;#8217;s shoes and ask yourself how pissed you would be if nobody asked your permission. If you are a Honey Badger, skip this step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asking permission to make a change, as an example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to major changes I always communicate the change but I don&amp;#8217;t always directly ask for permission - it depends a lot on how much I feel like getting feedback. Sometimes I know what I need to change is the right thing to do and I just want to know if there are gotchas, other times I want to solicit feedback and know if others think there&amp;#8217;s a better way.&lt;/p&gt;

&lt;p&gt;Two ways of asking that question:&lt;/p&gt;

&lt;p&gt;&amp;#8220;Hey all, I am planning to shutdown systems a,b &amp;amp; c today. They&amp;#8217;ve been removed from service for a week. Let me know if there are any problems this will cause. I&amp;#8217;ll be shutting these down at 2pm MDT&amp;#8221;&lt;/p&gt;

&lt;p&gt;vs. this&lt;/p&gt;

&lt;p&gt;&amp;#8220;Hey all, I would like to shutdown systems a,b &amp;amp; c - is this ok? I want to make sure everyone agrees with this before I move forward. I&amp;#8217;ll bring it up during stand-up as well&amp;#8221;&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s the difference?&lt;/p&gt;

&lt;p&gt;The first is saying &amp;#8220;I&amp;#8217;m doing this, let me know if I&amp;#8217;m going to stumble in the process&amp;#8221;. It&amp;#8217;s not so much asking permission as asking for advice. The second is saying &amp;#8220;I&amp;#8217;m not going to do this until we all agree&amp;#8221;. I generally prefer the first approach when I can get away with it - but often I will use that after I&amp;#8217;ve asked about the change using the 2nd approach. It&amp;#8217;s important to make others feel like they have an opportunity to say &amp;#8220;hang on, I have a question&amp;#8221; and provide input - but in some teams it&amp;#8217;s also important to not allow habitual questioners to derail something that needs to get done.&lt;/p&gt;

&lt;p&gt;On the other hand, don&amp;#8217;t just start using the first approach because you always get questions. If you are getting legitimate questions it may be because what you are doing isn&amp;#8217;t being communicated well enough or there isn&amp;#8217;t consensus on the team about what you are doing. Respect other folks opinions &amp;amp; make sure they have an opportunity to be heard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The exception, facilitation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you are diving a meeting the power is a bit different and so is your need to ask permission. When you are driving a meeting, and in particular if you are asking for a team to participate, you need to ask permission. I run a lot of post-mortem type meetings in my current work and in that capacity I&amp;#8217;m constantly asking these sorts of questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does everyone agree that this is an action we should take?&lt;/li&gt;
&lt;li&gt;Do we agree with the timeline in this post-mortem, are we missing anything?&lt;/li&gt;
&lt;li&gt;Is everyone comfortable that we&amp;#8217;ve captured all the actions from this event?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;And the list goes on&amp;#8230; When you are driving any meeting you have a lot of power over the outcome of the meeting, and so you need to weight decisions more toward the team and less toward yourself. As soon as you say &amp;#8220;I think we should do&amp;#8230;&amp;#8221; it becomes much harder for someone else in the room to stand up and say &amp;#8220;I disagree&amp;#8221;. Despite that, some people still do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The other exception, ownership&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t usually ask &amp;#8220;Is everyone ok if I own this?&amp;#8221;. If I want to take responsibility for something and own it&amp;#8217;s completion I say something like &amp;#8220;If nobody else is already working on this I&amp;#8217;ll take it, let me know if you are interested in helping&amp;#8221;. Ownership doesn&amp;#8217;t have to mean you are going to do all the work, but that you are taking responsibility for it getting done. I haven&amp;#8217;t found many cases where folks are unwilling to allow someone to own getting something done, but I have found plenty of cases where people want to have input into how it gets done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrap up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, go forth, ask permission where appropriate, and ship it.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/OperationBootstrap/~4/z3GOmi8TU_0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.opsbs.com/2011/12/asking-for-permission/</feedburner:origLink></entry>
  
</feed>
