The Three Ways of DevOps

The three ways are one of the underlying principles of what some people call DevOps (and what other people call “doing stuff right”). Read on for a description of each approach, which when combined, will help you drive performance improvements, higher quality services, and reduce operational costs.

1. Systems thinking.

Systems thinking involves taking into account the entire flow of a system. This means that when you’re establishing requirements or designing improvements to a structure, process, or function, you don’t focus on a single silo, department, or element. This principle is reflected in the “Toyota way” and in the excellent book “The Goal” by Eliyahu M. Goldratt and Jeff Cox. By utilising systems thinking, you should never pass a defect downstream, or increase the speed of a non-bottleneck function. In order to properly utilise this principle, you need to seek to achieve a profound understanding of the complete system.

It is also necessary to avoid 100% utilisation of any role in a process; in fact it’s important to bring utilisation below 80% in order to keep wait times acceptable. See the graph below.

utilisation vs wait time

2. Amplification of feedback loops.

Any (good) process has feedback loops – loops that allow corrections to be made, improvements to be identified and implemented, and those improvements to be measured, checked and re-iterated. For example, in a busy restaurant kitchen, delivering meatballs and pasta, if the guy making the tomato sauce has added too much salt, it’ll be picked up by someone tasting the dish before it gets taken away by the waiter, but by then the dish is ruined. Maybe it should be picked up by the chef making the meatballs, before it’s added to the pasta? Maybe it should be picked up at hand-off between the two chefs? How about checking it before it even leaves the tomato sauce-guy’s station? By shortening the feedback loop, mistakes are found faster, rectified easier, and the impact on the whole system – and the product – is lower.

3. Continuous Improvement.

A culture of continual experimentation, improvement, taking risks and learning from failure will trump a culture of tradition and safety every time. It is only by mastering skills and taking ownership of mistakes that we can take those risks without incurring costly failures.

Repetition and practice is the key to mastery, and by considering every process as an evolutionary stage rather than a defined method, it is possible to continuously improve and adapt to even very dramatic change.

It is important to allocate time to improvement, which could be a function of the 20% “idle” time of resources if you’ve properly managed the utilisation of a role. Without allocating time to actually focus on improvement, inefficiencies and flaws will continue and amplify well beyond the “impact” of reducing utilisation of said resource.

By utilising the three ways as above, by introducing faults into systems to increase resilience, and by fostering a culture that rewards risk taking while owning mistakes, you’ll drive higher quality outcomes, higher performance, lower costs and lower stress!

For my presentation on the Three Ways, click here. Feel free to use, adapt, and feed back to me 🙂

10 elements of managing a successful IT team

  • Give time to your team
    • 1-1’s, development reviews, PDR’s, working together on projects, or just time for a coffee and a chat. Whatever you call it, it’s important to regularly spend time with each of the team members. Rarely, if ever, will you find that one of these sessions wasn’t worthwhile. Just don’t rush it.
  • Make sure everyone has a role.
    • Every single member of your team is important, and everyone needs to feel that their efforts are worthwhile, whether it’s setting up new servers, systems, and infrastructure, or manning the telephones and taking calls. Nobody likes to feel like the spare wheel, and it’s unproductive, but it can easily happen.
  • Take them with you.
    • Going to a conference, seminar, networking event or similar? Take one of the team with you, and prioritise the junior members. It’s a great learning experience for them, and a good bonding exercise for the both of you. You don’t need to do this every time, but depending on the size of the team, it should at least be possible to do this once a year per team member.
  • Put the team first.
    • Your team get things done. Without them, you’re nothing. Put them first, and make sure they know you’re fighting their corner. Even if it means you taking the hit for something, or to the detriment of your reputation in the business, ultimately if your team see you working hard for them, they’ll work hard for you. In the long run, this is what matters more.
  • Be a good role model
    • Demonstrate a good work / life balance. This isn’t easy, and particularly in IT, where the servers don’t sleep just because you do, but if you can show that you work when you need to, and relax when you can by making the most of your free time, it’ll set an example that will help prevent burn-out and make for a more productive, enjoyable work environment.
    • Don’t be late. Set standards that the rest of the team can abide by. Get to work on time, be prompt for meetings. Don’t be a “Do as I say, not as I do” boss.
    • Be tidy. If you want your team to keep a tidy workspace, it’s going to be a lot easier if you set a good example.
    • Put in the extra hours when you need to, but make sure you take those holidays that you earn. Don’t make your team feel guilty if they ask for time off.
    • Customer service – put the customer first. In internal IT departments, the customer is the end-user, and the old stereotype of IT helpdesk staff disliking end users still holds true in many cases. Make sure your team know that while half of their job is technical, in some ways the most important half is good old customer service. Set an example by providing excellent service to your customers.
    • Respect your colleagues – set a good example by not complaining about your colleagues in the business. Even if you’ve been terribly disappointed or let down by one of your peers, don’t pass that down to your team. It’s demotivating for them to hear, and can damage relationships between departments and teams. Be open, but not negative.
    • Enjoy your job and be positive! If you don’t enjoy what you do, it’ll be clear to your team, but if you enjoy what you do, that positivity will spread.
  • Ask for feedback
    • Don’t be afraid to ask for feedback from your team. This can be intimidating, especially in person, but it’s absolutely invaluable. Asking “is there anything I could be doing that I’m currently not doing?” or “What could I be doing better?” will provide you with superb information to help you develop and improve as a manager, and help to identify any issues that could be hindering the team’s productivity. If the answer to both of these questions is “nothing”, then well done – however make sure you ask it regularly and phrase it differently each time to tease out any issues.
  • Keep up to date.
    • Ask for regular updates on performance, tasks, challenges, difficulties and successes. Whether you do this via email, phone, in person, or some other way will depend on your particular circumstances. Personally, I like the “15/five” style of weekly report via email, meaning it should take them 15 minutes to write, and you 5 minutes to read, but use whatever works for you.
  • Focus on development.
    • IT careers are all about what you know, and what experience you have. If you let your staff development fall behind, not only will they become less productive, but they’ll be thinking about moving on to somewhere else to continue to learn and develop their skills and knowledge.
    • Engender a culture of learning and knowledge sharing. In our team, we share “discoveries” every Friday via group emails, demonstrating what we’ve learned or discovered that week, from how to create a new maintenance task in SQL Server, what the new features of the iPhone 6 will be, or even facts about dinosaurs, particle accelerators, or IT industry figures…
  • Follow through on what you say.
    • This should go without saying, but you see it all the time. If you say you’ll do something, do it. Or, if it turns out that you can’t, don’t have time, or the situation changes, inform your team and explain why.
  • Be the best that you can be.
    • No pressure, right? Always strive to be as good as you can possibly be. Don’t burn yourself out, but be constantly looking for ways to improve yourself, the team, the environment, your business and your role. Be awesome.

 

Have I missed anything? I’m sure I have, so let me know by commenting.

The ten principles of IT Management (and probably a lot of other jobs).

1. Work your way out of a job.

If there’s any procedure, task, or process that you have to carry out or manage more than once, you should consider automating it. What’s the point in you doing it, if a machine can? Of course, some things have to be done by a human, but can you streamline the task? For example, can you stop searching through event logs every week, and instead set up a monitoring system that will alert you by email and/or sms to certain types of errors?

2. Make life easier for users

Your users are customers. They pay your wages and are essentially the only reason you’re in the job. By making their life easier, you’re enabling them to make money for the business, instead of working the system. You’ll also be making them happier, and that’s a good thing.

3. Constantly evaluate costs, and try to reduce them.

Costs creep up. They always do, and forever will do. Keep an eye on them, and constantly try to think of ways that you can reduce them: do you need that old server, or can it be virtualised? Do you need all your mobile connections, or can you cancel some? Do you have any old printers that aren’t utilised enough? Get rid of them. Is your hardware vendor giving you the best deals? Are you out of contract with your telecoms firm, support firm, leased lines, printers, or anything else? If so, look for a better deal and/or renegotiate.

4. Constantly evaluate the business, and try to increase productivity.

Don’t take your eye off the ball with what the business is up to. It’s easy to focus on the day to day stresses of the IT function, and your pet projects, while the business starts running in a different direction, and before you know it, you’re off doing something that is hard work, and provides no benefit to the business, or you’ve missed an opportunity. Get involved in the different functions, like marketing, and strategy (even if your directors don’t actively involve you – just get in there anyway.)

5. Consolidate

One contract is better than two. Vendors fight harder for bigger contracts, and there are big efficiency savings to be made by consolidating. Multiple contracts for a similar service just wastes money, administrative effort, and doesn’t make the supplier work as hard for you.

Consolidation applies also to IT systems and infrastructure, of course, but only where sensible. One server can carry out multiple roles, but not at the expense of reliability, or necessary performance.

6. Be a pessimist – plan for disaster.

Shit does happen, and it will happen in ways that you didn’t predict. When setting up and supporting systems, ask yourself:

“How could this fail?”

“What’s the impact if it does fail?”

“How can i recover from failure?”

and

“How can I reduce the likelihood of it failing?”

Note that you can never completely prevent something from failing, but you can make it so unlikely that you don’t have to worry. Ideally, everything should have a redundant partner, ready to failover, but if that’s not possible, make sure to be ready to recover from failure, and mitigate the impact.

7. Be an optimist – plan for expansion and success.

As important as planning for failure, is planning for success. If you have 2000 users now, don’t spec a mailserver with just enough capacity to serve all of them just enough. Spec a server with enough capacity for 3000, or 4000, or 10000. Don’t spend more than you need to, but you can guarantee that if you only spec just enough now, it won’t be enough in a year or two.

8. Don’t be afraid to make mistakes.

Try new things, and accept that not all your endeavours will work out well. Some may turn out to be awful, but some may turn out great. Try out new technologies, new systems, or even old systems that you haven’t tried before. If you don’t know how to do something, ask. And if there’s nobody to ask, do it anyway, and work it out.

9. Stay on top of technological progress.

Go to seminars, webinars, workshops, training events, trade shows, and new product demonstrations. It’s easy to get behind in IT, and you don’t know the things you don’t know. You can’t do many of the things before this item if you don’t know about the newest technology, systems, products, or services. Also, by keeping really up to date, you can help your business keep ahead of their competitors.

10. Network

And I don’t mean with ethernet cables. Networking is especially important if you work in a small IT team, partly because you learn best from others. You’ll learn what other people are doing, how they’re doing it, why, and who with. You’ll find out how to do a better job for your business, and make a better career for yourself.