Author: Conor Delanbanque

  • How to Transition to Become a DevOps Engineer

    How to Transition to Become a DevOps Engineer

    You’ve either heard the buzzword or you’ve seen the extensive list of rewarding aspects that come with being a DevOps engineer. Whatever the reason you’re here, this guide should help with taking the right steps toward becoming a DevOps engineer, whether this is your first job after graduating or an opportunity to reskill leveraging your prior industry experience.

    Immerse Yourself

    Learn the fundamentals, practices and methodologies. Understand the why behind DevOps before jumping into the tools. I believe the key goal of any DevOps engineer is to increase speed and maintain or improve quality across the entire software development life cycle, in order to provide maximum business value. Read articles, watch some YouTube videos and go to one of your local Meetup groups or conferences–it’s useful to become a part of the welcoming DevOps community where you’ll learn from the mistakes and successes of those that have been here before you.

    Your Background

    There are likely two key times where you’ll be transitioning into the role of DevOps engineer; either reskilling during your career or as your first job after graduating. You may have prior experience in technology, such as working as a software developer, systems engineer, systems administrator, network operations engineer or database administrator, all of which will bring broad insights and useful experience for your future role as a DevOps engineer. If you’re starting your career, maybe you’ve finished your degree in computer science or any other STEM field which will give you some of the basic stepping stones you’ll need in this transition.

    I think it’s important to breakdown the broad spectrum of what DevOps engineer roles entail. Most enterprise companies today will use DevOps engineers in three different positions.

    • DevOps Engineers, with a Dev Bias: Work in a software development role, building software applications. The key point is they leverage CI/CD, shared repositories, cloud and containers as part of their everyday work, but they are not necessarily responsible for building or implementing tooling. They will understand infrastructure and in a mature environment, will be able to push their own code into production.
    • DevOps Engineers, with an Ops Bias: Could be compared to systems engineers or systems administrators. They understand software development but do not spend the core parts of their day building software applications. Instead, they are more likely to be supporting software development teams to automate manual processes and increase efficiencies across the human and technology systems. This could mean breaking down legacy code and using less cumbersome automation scripts to run the same commands or it could mean installing, configuring or maintaining infrastructure and tooling. They ensure the right tools are installed and available for any teams that need them. They enable teams with learning how to leverage CI/CD and other DevOps practices.
    • SREs (Site Reliability Engineers): Think of site reliability engineering as having software engineers solving operations and infrastructure problems. SREs focus on creating scalable, highly available and reliable software systems.

    In the ideal world, DevOps engineers will understand all the above, which is the norm at some mature technology companies. However, if you knock on the door of top tier banks or many Fortune 500 companies you’ll realize oftentimes these roles do usually have biases towards dev or ops.

    Operating Systems

    Whichever background you’re coming from, you should start with the fundamental technologies you’ll need to use and understand as a DevOps engineer. Linux is most likely the operating system you’ll be using daily, although some of you might be using Windows. This is where everything runs, and fundamental knowledge is important. You can install Linux at home where you’ll be able to break as much as you want and continue learning along the way.

    Scripting

    Next up you’ll need to pick a scripting language. There are many to choose from, such as Python, Go, Java, Bash, PowerShell, Ruby and C/C++. I suggest starting with Python, it’s one of the most popular for a reason, it’s easy to learn and interpret. Python follows the fundamentals of object-oriented programming and can be used for web development, software development, creating desktop GUI apps and even business applications.

    Cloud

    After Linux and Python, my next pick would be cloud, where you could choose from Amazon Web Services, Azure or Google Cloud Platform. I’d start with AWS, as they have an extensive collection of free learning tools available to  take you down any track from learning about AWS as a developer to operations and even the business facing components. In fact, you might even be overwhelmed by how much is on offer when you first get setup with AWS. Maybe start with EC2, S3 and VPC and see where you want to go from there.

    Programming languages

    For those of you with a passion for software development. You should keep on improving your programming skills. Some good languages commonly used in this role include Python, Go, Java, Bash, PowerShell, Ruby and C/C++. You should also become familiar with tools such as Jenkins and Git/GitHub which you’ll be using frequently as part of the CI/CD process. Infrastructure is no longer left to the operations guys so you’ll need to have some exposure to a cloud platform such as AWS, Azure or GCP.

    Containers

    Finally, start learning about containerizing code using tools such as Docker and orchestration platforms such as Kubernetes. All the above have extensive online learning resources for free and most cities will have local Meetup groups where you can turn up and learn from experienced people in a friendly environment.

    For those of you with less experience in development, you can still get involved using your passion for automation, increasing efficiency, collaborating with others and a never-ending desire to improve on your own work. I would still suggest learning the tooling outlined above, but with less emphasis on the coding/scripting languages. It will be useful to learn about Infrastructure as a Service, Platform as a Service, cloud platforms and Linux. You will likely be setting up the tools and learning how to build systems that are resilient and fault-tolerant while writing your own code.

    Reskilling

    If you’re transitioning into a DevOps role during your career, you should start within your company to explore opportunities. Can you reskill by working with an existing team? There might be an option for you to shadow other team members, ask for advice and reskill without even leaving your current job. This might not always be possible and some of you will need to move into another company.

    If you can learn some of the practices, tools and technologies listed above, you’ll be in a good position to demonstrate relevant knowledge during interviews. The key is to be honest and to not set yourself up for failure. Most hiring managers understand you don’t know all the answers but if you can show what you’ve been learning and explain you’re open to learning more, you should be in with a good chance.

    Starting Your Career

    You can apply to direct open opportunities at companies who are hiring junior DevOps engineers. You will often find these companies say they’re looking for more experience and you should apply back in future when you’ve gained some commercial experience. It’s the typical, frustrating scenario of “we want more experience” but nobody is willing to give you the first chance.

    It’s not all gloomy though, there are a few companies focused on training and upskilling graduates directly out of the university. MThree, where I currently work, delivers exactly that. We hire fresh graduates and train them for eight weeks in our Alumni Academy. Training covers everything from theory through to hands-on projects with Python, Jenkins, Git, Ansible, Docker, Kubernetes and AWS. By the end of the training you’ll have some solid exposure to the entire software development life cycle and a good understanding of how this applies in a Fortune 500 environment. The best part is once qualified, our teams then leverage their extensive list of clients to provide job opportunities for junior DevOps engineers. MThree pays these associates on a full-time salary with benefits for the first 18-24 months before they join the client as direct employees at the end of the agreement. This is a great way to bridge the gap from university into your technology career.

    In summary, there are many ways to transition to become a DevOps engineer. This is a very rewarding career route which will likely keep you engaged and challenged as well as increasing your earning potential.

    — Conor Delanbanque

  • Agile and DevOps: Where the Rubber (Literally) Meets the Road

    Agile and DevOps: Where the Rubber (Literally) Meets the Road

    Do Agile and DevOps methodologies apply outside of technology? More specifically, can we apply them to sport? I decided to answer these questions by analyzing the application of Agile and DevOps principles within my road-cycling team.

    For those of you who don’t know, cycling is a very data-driven sport. While we are training and racing, we have a live feed showing data on our computers, which are attached to the handlebars. We see data such as power (watts), heart rate (bpm), cadence (rpm) and much more. Monitoring and analyzing this data allows us to work within our limits to ensure we aren’t overloading ourselves while performing to our highest capabilities. We measure our limits through tests over time periods such as 30 seconds, five minutes and 20 minutes. The results of these tests form specific thresholds that we work within to maximize the benefits of training and racing. We can set up automated alerts in our bike computer to warn us if we are overexerting ourselves or we can keep an eye on the screen to measure this ourselves.

    In a mature DevOps environment, we work toward monitoring at the service level to understand usage, performance, environment and application health and more. This doesn’t just help us to find the problem, it allows us to set up self-repair protocols within our infrastructure if the monitoring tools report any alerts.

    We run the cycling team like a startup, where everyone wears many hats. We operate in small, loosely coupled units; everyone rides together without silos, but then we also have specialties which come out during the sessions. For example, the climbers are better at riding fast uphill, so they work together at times, as do the powerful sprinters with the sprints and so on. The important point is that we don’t segment ourselves solely to these responsibilities – the sprinters still have to get themselves over the climbs and the climbers still have to practice sprinting. We never know when one of us will have to try to fill in for a teammate. We understand each other’s roles and the importance of that person within the team.

    We learn as we go. We can’t rely solely on one person in the team, even if they are the strongest. Let’s say the A rider has a crash 2km before the finish – what do we do? The lead out train all move one place up the line, so the guy who was supposed to be the last man left to support the sprinter in the final move, will now be the sprinter. We have setup a self-healing system with very low mean time to repair. Flip back to DevOps – some bad code has made it through your pipeline. You can’t solely rely on the person who wrote the code to solve this problem. In the ideal world, we use version control to assist other people within the team to figure out exactly how to repair the issue. We can design the system to self-heal by automatically reversing the failed change to an earlier state.

    Everyone in the team understands that they have a cross functional role. This doesn’t mean that we don’t have specialisms or areas that we like more than others, it just means we are a team of doers. This compares to a team working effectively with DevOps principles. It doesn’t matter if you started your career as an applications developer or systems administrator—you must get the work done and solve problems for the greater good of the organization.

    Bicycles and DevOps Cycles

    Essentially, your entire role as someone who practices DevOps is to make everyone else’s life easier through implementing processes and tools that help to increase productivity and reduce errors. In a cycling team, everyone is working for the success of the entire organization, not just for themselves. The DevOps role can compare to that of a domestique in cycling.

    For context: In cycling we ride directly behind the wheel of the person in front, with maybe an inch between our front wheel and the rear wheel of the other rider. We do this because it uses approximately 30 percent less power for the person behind. The domestique is responsible for making the other person’s job easier. They don’t work for individual glory but sacrifice themselves for the greater good of the team.

    The DevOps architect or engineer in your organization (disclaimer: Yes, I believe that it’s everyone’s responsibility to practice DevOps methodologies, but often there is a person who has the strongest knowledge of DevOps and how to implement this across the organization) does not spend their day thinking about how to show off about some awesome code they wrote or the system they built. They are thinking about how to make your day-to-day processes easier and solve problems for the good of the team.

    Pulling the pace at the front of the peloton. This is called the ‘lead out.’ The pace is kept so high that other teams can’t attack or ride ahead. The aim is to drop the final rider off ahead of the other sprinters and as close to the finish line as possible.

    We train, fail fast, continuously learn and succeed together. In the words of Kiichiro Toyoda (founder of Toyota Motor Corporation), “They do not have the expertise gained from the failures it took to produce the original. … The thieves may be able to follow the design plans and produce a loom, but we are modifying and improving every day.” So, you can steal their plans but without knowing their failures and ongoing development, you won’t create the same product. In comparison, another cycling team could find the blueprints of how we train and try to do the same, but they won’t understand how we operate as a unit. They won’t understand our failures and what we have learned to advance to where we are now.

    We practice continuous improvement and continuous learning. We constantly try to better our previous performances. If we win a bike race, we don’t go home, put our feet up and say, “We are the best team, nobody else will beat us”—we analyze our performance and it’s more than likely there are many things we could have done better, even if we did win the race. Why do we do this? Because on a different day, if minor mistakes are made again, the other teams might get the better of us. In the tech world, we may have achieved our fastest, most secure deployments to date with very few failures, but are we going to rest on our laurels and cease to improve? This is the antithesis of what we should be doing in DevOps environments—we should be constantly looking to better our previous work. At the organizational level, the business itself needs to stay competitive and ensure that customer demands are being met; technology allows the business to stay on track with these targets.

    Our processes worked very well, and they continued to improve. This was helped by the implementation of chatOps to develop our culture and collaboration. When I joined the squad, we communicated via email. This was slow, clunky and generally not the best way for a team of 16 people to communicate. Our inboxes were constantly full, and we sometimes missed messages. Enter Slack. At first, some of the guys were closed off to the idea of change—“Why don’t we just use email? It’s so much easier,” they said. It really wasn’t easier to use email instead of Slack; it’s just that they didn’t want to change and learn to use a new tool, even if it only took a few hours to get comfortable with it.

    This is a common problem I see when trying to implement DevOps tools in enterprise organizations. Even if working with Docker or Kubernetes is going to bring huge benefits for people, sometimes they just don’t want to change from what they know. We practiced empathy and explained the benefits, while showing the improvements in a short space of time. Similarly, we do this as DevOps consultants when guiding cultural and procedural transformations at enterprise organizations. Anyway, we ended up using Slack and before I knew it, the entire team culture had changed for the better. We used the various channels to keep things organized such as “racing,” “team rides,” “ICE” (In Case of Emergency), “coaching,” “random” and others. The culture improved because we were able to bond, have fun and joke with each other without fear of disrupting important conversations in other channels. Our coach is based in Santa Monica and we are based in New York, yet we feel as though he is with us on every training ride.

    I’ve seen Slack, Trello and other collaboration tools being used to improve collaboration in remotely dispersed teams. So why does improving culture matter? Shouldn’t people just focus on doing their job? Yes, of course they should. I’m not saying that this should be a distraction. But bringing your teams together means that they are more likely to collaborate in times of need. This will help your global teams with communication and collaboration. It will also help with employee satisfaction because people will feel a greater sense of belonging.

    Conclusion

    To summarize, Agile and DevOps methodologies can be applied outside of technology. These principles and practices can be implemented across entire organizations. They can help manage change and transformation while increasing productivity through automation and the adoption of modern technologies for cloud computing. Don’t get caught up in the DevOps tools.

    Crossing the finish line @ The New York State Criterium Championships – March 2018

     

    — Conor Delanbanque

  • Is DevOps Really Necessary?

    Is DevOps Really Necessary?

    I spend my days discussing DevOps and digital transformations with companies of all sizes, from startups to some of the world’s largest enterprises. I’ve found that many teams are still at a very early stage in modernizing their technology, culture and practices. However, I’m surprised at the number of the organizations that don’t believe in change because they “have been doing just fine up until now.”

    This is a recipe for failure in the long term. Their competitors will likely be working in loosely coupled teams with shared responsibilities and increased collaboration. They will have adopted continuous integration, continuous deployments/delivery and automation, to name a few processes. In time, these competitors will begin to consume the laggards’ market share. To put it into perspective, you might still be talking about your next deployment coming up in six weeks time, while they are talking about deploying into production 12 times today alone.

    With their increased agility, stability and reliability, these more successful teams will be faster. They will not be afraid of failure and will have built fault-tolerant systems that can rapidly and automatically repair. These self-healing, well-tested systems and processes will free time for developers and other team members to focus on developing newer and better applications in response to customer feedback—all while the your team might continue “doing fine.”

    We aren’t just talking about buzzwords here; the data shows that those who are playing catchup are also potentially causing themselves more harm than good. Puppet’s “2017 State of DevOps Report” shows that the gap between higher- and lower-performing teams has narrowed as throughput has increased, meaning lower-performing teams are working faster, shipping more code to production and responding to changes quicker than they were the previous year. This is great in principle, but in 2017, change failure rate had also increased, showing that low performers were actually more likely to fail when making changes than they were in 2016. The data shows that low performers had a 3x change failure rate in 2016, which increased to 5x in the 2017 Puppet study. From a business standpoint, this means that those higher-performing teams are able to deliver more value to their customers by responding faster and more reliably to feedback and market demands.

    Companies should certainly be paying attention to what their competitors are doing, no matter what area or sector in which they operate. However, they also must not lose sight of the importance of quality, security or feedback during this journey. If you know you are at a much earlier stage in your transformation, focus on getting it right. There will always be setbacks and challenges, but as the old saying goes: This is a marathon, not a sprint.

    DevOps methodologies, when applied effectively, will make your organization more successful.

    — Conor Delanbanque