Showing posts with label management. Show all posts
Showing posts with label management. Show all posts

December 8, 2014

Day 8 - From Operator to Guide: Lessons Learned Moving from Engineering into Management

Written by: Mathias Meyer (@roidrage)
Edited by: Ben Cotton (@funnelfiasco)

As a company grows from a tiny startup to a small business, curious things happen. The small startup struggles to figure out how to scale a product and the infrastructure supporting it, with as few people as possible in as many roles as possible.

The small business struggles with other pains like growing a team, creating a set of shared values, growing the customer base, and focusing on longer-term strategies. It’s not so much about survival anymore as it is about building something sustainable.

Our little company stepped from one phase into the other this year, and the challenges have been interesting, especially for someone like me, who went from being an infrastructure engineer to being a manager.

Our little company, an open source project at heart, has a history of trying to be as open as we can about our production issues and nurturing a blameless culture.

When you’re a small team, that can be an easy seed to plant and to get everyone on board. After all, everyone’s already responsible for everything, so switching hats is easy.

But as a manager, you’re now confronted with making sure your team and your customers are happy and that the business is growing (hopefully because your people and customers are happy).

That’s where push comes to shove with a blameless and just culture, balancing production pressure, people happiness and productivity into something that fosters critical thinking, a culture of always looking out for and learning from unexpected events, and making sure that your product’s stability is improved based on experience in production.

Letting go and delegating responsibility

As an infrastructure engineer, I’ve been involved in responding to a lot of our outages in our early days and years, writing the postmortems and giving public talks about our culture.

I still rotate through on-call and respond to production incidents, but our primary focus, as a team, has become to make sure that knowledge of handling outages is spread to as many people as possible. That meant one thing I’ve been having trouble doing over the past couple of months: letting go.

When you want other people to take on the responsibility to handle production incidents, you need to step back a little. You turn from being an operator to being a guide. You get out of the way.

The only way to build trust in your team is to let people learn from mistakes, whoever’s mistakes they are. As Richard Cook said in “How Complex Systems Fail”:

Failure free operations require experience with failure.

When you want your team to be able to respond to outages, make their own experiences and share them with the team, it’s important to let go. You can still be of a helping hand of course, you can ask (helping) questions during outages to get as much information as possible or to nudge people in different directions.

After all, everyone is prone to their own biases, and not everyone on your team will have experience will all aspects of your systems.

What did I do over the last couple of months? I’ve been a bystander for maintenances and outages, giving encouragement and getting stuff out of the way where I can.

People need to feel a sense of ownership and responsibility. If you as a manager continue to be the leading hand during outages, you’ll always be the first line of response and you’ll take away those experiences from your team.

Just a little bit of process

Handling a production incident is one part of the story. The other is what comes afterwards. You can choose to ignore what happened, but that’s leaving a great opportunity to learn on the table.

Depending on where your team members come from, this can be a challenge. Not every company fosters a culture of looking at what happens in production and to make sure the appropriate learnings are taken away and used for future improvements. Some prefer to find a root cause (usually a human) and fire them. Problem solved.

Others only have little experience in conducting both incident response and a postmortem. Two things are important to get everyone up to speed:

Mentoring

Teach your team what you know, share the knowledge of what’s considered a good incident response and the minimum requirements are for a postmortem.

Get those things into writing (an Ops Playbook is a good idea to have) and make sure that people read it, commit to it, and are actively involved in improving it.

Mentoring is one of your bigger tasks as a manager, and if you want to get people to take responsibility and to follow in yours or make their own footsteps, it’s the best place to start. You can mentor them personally or share knowledge internally by giving talks, feedback on previous incidents and postmortems, writing on your internal blog and creating discussions around what people think.

Setting Expectations

Once you’ve shared knowledge, you can agree on expectations. Those can also be manifested in the Ops Playbook.

In our case, internal postmortems need to be filed within 24 hours after the incident.

The idea isn’t to put high pressure on people, but to make up for the fact that humans quickly forget important details, in particular after a stressful situation.

If there was extended impact for our customers, a public postmortem should go up on our status page within 72 hours after the outage.

You may not need a strict process around this, but having a few guidelines helps encourage everyone to stop and think for a moment about what you can take away from an incident and how you can improve operations, development or your product in the future.

Production pressure and continuous improvement

As a manager, it’s too easy to fall into the trap of production pressure, especially when you’re reporting to other managers. You may be more accountable to stake- or share holders.

How can you combine this with the idea of continuous improvement, in particular if you have a lot of outages that require fixes and improvements?

The answer to that is surprisingly simple. When you don’t apply learnings from incidents, they will continue to interrupt your customers in whatever task your product is assisting them with, leading to increased unhappiness, churn and effectively reduced revenue.

One of our struggles recently has been to keep up with remediation items from previous outages. This is my fault, not my team’s. It’s a manager’s responsibility to give room for scheduling in the remediations their team deems necessary. It’s their responsibility to encourage everyone to be involved in the process.

When remediation items aren’t cleared up, it’s the manager’s responsibility to find out what’s blocking the team and to get that out of the way.

I encourage you to look at how Etsy is conducting postmortems, how they store them and making sure that remediation items are followed up on.

Nudging people to think critically

Traditional thinking (or the Old View of Human Error (see “The Field Guide to Understanding Human Error”, Sidney Dekker) suggest that there is a root cause for any incident. The Five Whys suggest that it only takes a few questions to find it.

Root cause is appealing to engineers because it gives them one thing to fix. Root cause is appealing to management because it gives them one thing to blame (and to fire).

Root cause analysis avoids critical thinking. When your team stops at a single point and focuses only on that, you remove any opportunity to figure out the bigger picture, the motivations people had at the time of the incident or during events leading up to them.

Thinking beyond the root cause requires critical thinking and asking questions, as uncomfortable as they may be. Just so we’re clear, they can and should be uncomfortable to you as a manager as well.

One of our challenges has been encouraging people to think beyond a simple resolution to an outage, beyond just this one cause.

Sometimes that means asking them a few more questions, sometimes you as their manager need to ask yourself questions on how you can improve the organizational environment or the processes that people were acting based on.

From generalization to specialization

In the early days of most startups, you’ll find everyone doing everything. We were firm believers in generalization in the early days, as both our team size and the little revenue didn’t allow for specialization early on.

Today we find ourselves working towards more specialized roles. We encourage people to grow into more specific roles or responsibilities (without stressing on the titles too much) to increase the level of ownership people feel about our product, but also to remove ambiguity in who’s responsible for what.

We started longing for specialization, not just in engineering, as our business grew to a stable customer base and revenue.

That includes defining responsibilities in incident response. Who’s the main point of communication? Who facilitates the team’s response? How many people should be involved in a scheduled maintenance? How and when are issues escalated to involve more people?

All those questions can add a little bit more process, but they help in reducing ambiguity. Because when everyone’s responsible for everything, is anyone really responsible?

Towards a culture of learning

Running a business with customers and a team distributed across the globe makes it hard to stop and reflect on what you’re doing, on the things that have happened in production and to figure out what you can learn from it.

It’s easy to just keep going and leave things on the sidelines, thinking “We can always fix this later.”

But whatever you leave on the sidelines is going to come back and bite you later, causing more embarrassment when it affects your customers.

Continuous learning requires everyone to take a step back, and it requires you as a manager to give everyone room to do so, room to improve, room to learn and to gain more experience.

Be the manager you always wanted to have

Growing into a manager role is a unique chance to be the manager you always wanted to have. You’ll have to incorporate a bigger picture into this idea, but it’s up to you to shape how you treat your team and your production system. That doesn’t mean leaving aside everything your previous managers did, because some of that may have a good reason.

You can build a culture based on the old view of human error (believe me, it’s all too easy to fall into this trap), or you can treat your team with the empathy that you always wanted from your previous managers (yes, those who always put the schedule first and people last).

The important thing to remember is that as a manager, you need to trust the people at the sharp end of the action to do the right thing. It’s very likely the very same thing you would’ve wanted your manager to do or that you expected as an operator.

As Richard Cook said:

Actions at the sharp end resolve all ambiguity.

Your role as a manager is now to reduce ambiguity over time. If you don’t, your engineers will do it for you, giving you plenty of opportunity to learn and improve their environment, possibly causing unhappiness all around.

It’s been an interesting change in role for me, and I’m bound to make mistakes and learn from them. But learning is what this is all about, for you, your team, and your company.

If you have any stories to share or want to talk about culture and management, I’d love to talk. Shoot me an email.

December 23, 2008

Day 23 - Change Management

This post was contributed by Matt Simmons. Thanks, Matt! :)

It's been said that change is the only thing that ever stays the same, and whoever said that probably worked in IT. Transitions are a part of life, but we administrators are burdened by what I would judge to be more than our fair share.

Too frequently, we find ourselves picking up the pieces from the last major system change we made, while at the same time designing the next iteration of the infrastructure that we'll be putting in place. How many times have you chosen an implementation that wasn't ideal now, because a bigger change was just around the corner, and you wanted to "future proof" your design? Bonus points for having to make that decision due to a previous change that was still being implemented. It doesn't seem to matter how precisely you've planned a major upgrade, snags and snafus are expected to rear their ugly heads.

Is this something that we just have to deal with? Are we at the mercy of Murphy, or are there ways we can induce these issues to work to our benefit? Sure, it would be easy if we had a crystal ball, but too often we don't even have a rough guess as to where our plans will encounter problems.

Change itself isn't the enemy. Change promotes progress, and from the 10,000ft view, our long-term goals should work towards this progress. Dealing with change is a natural and positive endeavor.

Instead of being thrown about by the winds of chance, lets put some sails on our boat, and see if we can make headway by trying to manage the change on our terms. If we know that problems are going to be encountered, and we face those facts before we edit the first configuration, then we've taken the first step towards real change management.

The enemies of successful change (and the resulting progress) are imprecise requirements and lack of project leadership. Unless you plan around these pitfalls, your project may very well go into ventricular fibrillation, flip-flopping back and forth, unable to decide between two unforeseen evils midway through the work flow. While it's possible to recover from this with an injection of leadership, it's much easier to inoculate against the problem in the beginning.

If you're going to be planning a big project, you will probably want to follow a methodology. There are just about as many methods of managing a change as there are people who want you to pay them to do it, but with IT projects, I've found what I consider to be the most efficient for me. Your mileage may vary, of course.

  1. Team and goal formation

    Assuming your change is moderate to large scale, you've (hopefully) got a team of people involved, and one of them has been appointed leader. This is the point where you want to decide on your goals. Determine what success will be defined as at the end of the project, and how best to get there.

    Many times we don't yet know what or how success will be defined, or even what the target should be. Because of this, it's natural to perform step 2 before your goals have been decided upon. In fact, I'd recommend it.

  2. Analysis (Research) & Information Organization

    Too often (or not often enough, depending on your view point) we're asked to do too much with too little. Frequently, we don't even know how to do it. This Analysis step is here to allow you to make informed decisions, and to acquire the skills and resources necessary to succeed in your task. Sometimes the resources are people, in the form of new employees or contractors, or both.

  3. Design

    By this time, you know what the task entails, but you don't have a road map of to how you're going to get there. This step makes you the cartographer, planning the route from where you are to the implementation of your project and beyond. Some details of the design may change during development, but it's important to have the major framework laid out in this step as you proceed.

  4. Development

    In a perfect world, you would take the design produced in step three and translate it straight into something usable. We all know that this rarely, if ever happens. Instead, you encounter the first set of really difficult problems in this stage. Issues spring up with the technology that you're using, or with kinks in the design that you thought were smoothed over, but weren't. Development appears to follow Hofstadter's Law: 'It always takes longer than you expect, even when you take into account Hofstadter's Law'. Thorough testing at the end of the development stage will prevent misery in the next step.

  5. Implementation

    Here we find the second repository of unforeseen bugs and strange glitches that counteract your carefully planned designs. The good thing about issues at this point is that, provided you've tested thoroughly enough in development, you won't find many show stoppers. On the other hand, sometimes these bugs can appear as niggling details and intermittent issues, hard to reproduce.

  6. Support

    If you're designing, developing, and implementing a product, support is just another part of the game. This is where you pay for how carefully you performed the preceding steps. Garbage In, Garbage Out, they say, but because you've designed and built a solid system, your support tasks will be light, possibly just educating the users and performing routine maintenance.

  7. Evaluation

    Remember that part in step 1, where you decided what success would be defined as? Dust it off and evaluate your project according to those requirements. Discuss with your team what you could have improved on, and don't forget to give credit where it is due. Hard work deserves appreciation.

This method is really a modified ADDIE design, so named because it consists of Analysis, Design, Development, Implementation, and Evaluation. We've added a couple of steps to help it flow better in the IT world we live in. There are certainly other methods to look at. The Instructional Systems Design (ISD) is another one which is well known.

However you decide to manage change, it's important to stay with your plan and follow through. Remember to work and communicate with your teammates, and don't stress because the project is too big. Just take it one step at a time, follow your plan, and you'll get the job done. s

December 16, 2008

Day 17 - Time Management

This post was contributed by Ben Rockwood. Thanks, Ben!

During the holiday season there seems to be a mad rush between Thanksgiving and Christmas. An odd force compels us to hurry things up and get organized or finish projects before the long Christmas break. The great and glorious pay off is a new January, fresh with possibility and reward. Out with the old, in with the new.

The new year offers something special and unique... perspective. Maybe you don't finish your projects prior to Christmas but things somehow feel different in the new year. New plans, new schedules, and a fresh perspective. So how can we get that perspective on a more regular basis?

Principles of Time Management

  1. Write everything down:

    Really, everything. Work or home, write it all down. If the thought cross your mind, it should be recorded. The thought may be "get mail", or "see new Bond film", or "implement new backup solution". If it's not written down you will think about it again, and again, and again. So get it out of your head.

    I encourage you to set aside about 30 minutes to an hour for this purpose. Set aside some time, go to some place relaxing, get a cup of coffee and just let your mind flow. Things you always wanted to do as a kid. A book, comic, or movie you never really understood or only caught part of. A hobby you've always wanted to try. A skill you think would be fun and useful. A new language you've wanted to learn (programming or spoken).

    In this alone you'll feel a great sense of relief and comfort.

  2. Keep it all in a central place:

    I'll offer some systems below, but which system you use isn't as important as simply consistantly using it. For SysAdmin's this may actually be a small collection of places, such as your company ticket system and a personal planner. If you simply use scraps of paper or a legal pad you'll innevitably loose it, so opt for a specific peice of software or organizer or note book. When your brain knows that all your projects and tasks are in a place it can easily reference it will leave your concious mind alone.

  3. Keep multiple lists

    You should not just have a single simple TODO list... life just isn't that linear. Rather, you should have a big "braindump" list of things to do, and then break that out into daily, weekly, monthly lists, or whatever granularlity you need.

    The sad fact is that in our minds, we tend to have a hodge-podge of TODO tasks, large and small alike. We constantly are steam-rolling this in our concious mind, and eventually it becomes overwhelming. When you lay everything out, and then look at that list and say to yourself "What can I accomplish this month?", then create that list, you start making life managable.

    This is key. When you have everything written down, you can create smaller, more approachable sublists to execute on it and have a greater sense of confidence that you might actually do it.

  4. Create daily TODO lists:

    Each day you should have a TODO list. This is the end-result of your other lists, which can actually be directly executed on. Get mail, walk dog, buy milk, install backup agents on systems 1-14, upgrade customerX's MySQL instance, close at least 4 tickets. These tasks need to be very granular... do-able.

    When you have daily lists you have two big benefits. Firstly, you have a historical record of what you were doing day-by-day. What were you trying to get done on March 23rd? Now you can look back and find out. Secondly, you can "push" tasks from one day to the next. Don't have time to finish something today? Push it onto tomorows list now and move on with other tasks you can complete.

    This is something paper planners do very well, but is difficult to accomplish in software task managers.

  5. 'Clean the Garage' is a Project:

    The key to using software management tools, such as 'Things' or 'OmniFocus', is to think in projects. A "project" is defined as any goal or objective that is not accomplished in a single task. As an example, replacing a lightbulb could be either one. If you have lightbulbs and you just need to swap it, its a task. However if your out of light bulbs and need to go to the store first, it is now a project consisting of the tasks "Buy Lightbulbs" and "Replace bulb in hallway".

    I make special emphasis of this because if you don't think like this the software tools will be very difficult to manage. You'll just have growing piles of TODO's that seem unrelated and you'll spend more time digging through lists of tasks than accomplishing them.

  6. Think out the steps:

    It's very important to not just think about the end result you want, such as "Backup Oracle Database", but rather to think about its individual tasks and then lay them out. Even tasks that may be fairly simplistic can seem overhwelmingly complex when you mind floods your concious with all the possible permutations and unclear decisions you will need to make. If you just break it down you can stay more relaxed, focused, and objective. You may even need to create sub-projects to evaluate your options, such as "Benchmark RMAN", "Evaluate BakBone Oracle Agent", etc.

Management Systems

  1. Franklin Covey Paper Planners

    Franklin Covey is a leading name in time management tools. If you haven't heard of them, think of the old "DayRunners" or other paper planners you've seen, but more flexable and customized.

    When you get started with Franklin Covey you will need to select and purchase a binder, starter kit, and verious types of filler pages. If you visit a store an employee will walk you through it, and if you visit their website there is a guide. Planners come in all sizes and styles to meet your needs directly. I personally prefer the smallest size, so that I can put it in a pocket.

    The advantages to a paper planner is that you have a perminant record of each days work and schedule to archive, its easy and fast to use, and you can take it everywhere you go. On the downside, its more expensive than software. Expect a nice setup to run you about $80.

    If you are on a budget, you can emulate the same thing in any cheap binder. Many people use Moleskin notebooks for this purpose.

  2. OmniFocus

    OmniFocus for the Mac is the most popular time management software around these days. Its very powerful but can take some time to learn. Thankfully there are some excellent tutorial videos and the online help is useful.

    The software lets you easily gather new tasks in an inbox and then later sort them into categories and projects. One of the most useful concepts in OmniFocus is that of "Context". Any particular place in which tasks can be done is a "context". For instance, you can only do laundry when your at home, and you can only check the tape robots in the office. When you assign context to tasks you can later look only at tasks that you can actually accomplish now. You might need to "Wash the dog" today, but you don't need to look at that task when your in the office working.

    The key to OmniFocus is to use it as it was intended. If you don't take time to actually learn how the software is intended to be used you'll find it nifty for about a week and then start getting irritated or frustrated.

    One added bonus of OmniFocus is that if you have an iPhone you can buy OmniFocus for iPhone and sync it with your desktop, bringing the "everywhere you want to be" advantage of paper to OmniFocus.

  3. Things

    Thinks is also for the Mac and currently free. It adopted many of the concepts of OmniFocus but is not nearly as strict and rigid. Rather than structure it relies on tagging tasks, which can allow you to organize more freely.

    I highly recommend that anyone considering the software route start with OmniFocus's free trial. Learn OmniFocus and then move to tools like Things. If you don't and just try Things you'll immediately find it too free flow and unhelpful.

    There is also an iPhone version of Things, however at last check it did not support sync'ing with the desktop.

Further reading:

Day 16 - Relax!

Always make time for relaxation or distraction. Systems administration comes with interrupts, strategy changes, management decisions, and beeping pagers. All of these can lead to stress. Stress is bad and can lead to burnout.

There are plenty of ways to manage stress, and you can easily find volumes of books on the subject. Mostly, I think managing stress is making a context switch away to something you enjoy doing: exercise, reading, learning, TV, whatever. You had things you enjoyed doing before the pager started beeping at 4AM on Saturdays, right?

Managing stress doesn't just mean relaxing, it might mean setting expectations for your fellow coworkers. This means explaining (and having your manager back you), for instance, that the build server doesn't need a serious SLA that includes late nights and weekends.

When pondering what to publish tonight, I decided that I needed a break. Writing and researching for these articles has taken away from my normal non-work activites after work and added some stress. With that said, I'm going to take so my own advice and keep this short, and go play with my doggy and hang out with the wife.

See you all tomorrow!

Further reading:

  • Puppet FAQ - If you destress by learning things (like I sometimes do), check out Puppet.