Building a Boat
Imagine building a boat. Make that a large boat, with enormous objectives: guaranteeing your business steady growth and increases in shareholder value. Remember that the boat has to be incredibly secure, fail-safe, built to the best industry standards for today and the next twenty years.
Let’s add that this boat must sail ahead of schedule, and for less than estimated costs. And we need to make ten more boats by the end of the year.
I would not possibly begin building this boat unless I also have a way to get this boat into the water. What good is a boat that sits on dry land? The bigger the boat, the more challenging it will be to get it in the water. And we’ve got some hefty requirements for our boat.
I am not a boat builder, but I suspect building boats and software applications have some things in common. The bigger the enterprise, the more critical the goals, the greater the need for security and high availability. Both are highly complex endeavors that require expert skill and craft for success.
But…it works on my local machine!
Building software has been historically separate from supporting and maintaining it. Imagine where the code is deployed in production as a high seas filled with pirates, sharks, hidden reefs and sudden squalls of users. Ask any IT manager about this disconnect between software developers and IT administrators while suffering a major outage.
Put another way: we often focus more on building software than deploying where it will actually be used. When projects begin, customers think in terms of requirements for the product, who will code it and test it, what technology and how long it will take. Then bang! Off and running. How does it get into production? Not our problem.
This makes as much sense as building a battleship in the middle of a baseball field and expecting it to float. Or calling IT when (unsurprisingly) it does not.
The DevOps approach means you build your runway first, then start pushing code down it into production as fast and securely as you can, with as much automation as possible of repetitive tasks.
This doesn’t necessarily mean release to users once you start coding. This means proving out every step of a process to make sure that in the end, your software just like your boat does not have leaks due to handoffs, knowledge transfer or human error.
And yet only 25% of organizations have begun the journey towards truly adopting DevOps patterns and practices.
So What Can I Do About It?
The technical answer is: adopt DevOps patterns to ensure you are continuously delivering value from code commit to production. However, this also may mean influencing changes in organizational culture and behavior.
What is DevOps? It is the combination of software development and IT operations in one role to support the Continuous Delivery (CD) of software. It is the planning, estimation, and delivery of software in one work-stream, from inception to actual use in production. It means utilizing automation to achieve high efficiency, audit controls, security, quality, and stability.
In a perfect world, a DevOps engineer is a jack-of-all-technologies, from coding skills to server and environment administration to even database administration. In reality, a DevOps engineer is not the developer writing the actual application code but rather the person responsible for the build and delivery of code. And this means being flexible, versatile and open to learning new tools as well as building tools. A DevOps engineer does not simply “administer”. He or she actively solves problems and cares for the continuous delivery process.
Here are examples of DevOps engineer skills:
- Scripting and automation: Python, Bash, Powershell, Ruby, Perl, among many others.
- Virtualization and containerization: VMWare, Vagrant or Docker, with management tools such as Ansible, Puppet, Chef, and Kubernetes
- Cloud administration: AWS, Azure, Google Cloud Platform.
- Continuous Integration: Github, Gitlab, Bitbucket, VSTS with orchestration tools like Jenkins, Travis, and Bamboo.
- A solid understanding of RESTFul APIs, API management, and microservice architectures.
- A solid understanding of automated testing, with knowledge of tools like Selenium and test frameworks.
- Some coding experience: Java, C++
The number of Continuous Integration (CI) and Continuous Delivery (CD) tools keeps growing, but the important DevOps soft skills remain: customer focus, ability to learn and adapt quickly, empathy for team members and being able to see the big picture.
It’s a Factory Affair
To quote Eugene Kim, author of The Phoenix Project:
“Every goal that a company is trying to achieve, whether it was strategy, operations, integrity of financial reporting or the compliance with laws and regulations, all of those are being jeopardized by the technology organization. Every company needs to be a technology company, regardless of what industry they are in.”
IT can no longer be compartmentalized as a separate support organization. IT needs to be integrated completely within all business processes where a customer, internal or external, expects value.
Imagine an assembly line where the raw material what a customer wants and the output is a value that the customer receives. The more times the line stops to hand off information or wait for an answer, the longer it takes to get value out the door. A simple exercise is a value stream map for every step from capturing a customer idea to the moment when the customer perceives actual value or resolution. Does every step add value? How much time is spent with every step?
Your company needs to be a value factory. DevOps is about making it work like one.
This also means changing how technology partners envision their role within the organization. They are not supporting the business but rather at the heart of a complex mechanism that exists to create value. This means questioning many legacy processes that may create unnecessary delays and obstacles in its delivery. It also means empathy for those who may be most resistant to change.
Change is incredibly challenging, especially in large organizations. It is important to start small. Find an opportunity to improve a process by automating it, then demonstrate the savings to decision makers. Add a DevOps role to a development project and demonstrate faster release cycles. Or take advantage of the many cloud platforms that are “DevOps friendly” to demonstrate the cost savings over maintaining secure environments on-premise.
How Can We Help?
Our DevOps engineers are embedded in teams that serve our largest enterprise customers. This role not only adds direct value by ensuring that products are brought to market faster and more securely, but also adds transformative value to organizations that are undergoing their own adoption of Continuous Delivery and a DevOps culture.
As for the skills, we only select the top 1% of talent from a pool of 46,500 applicants per year so you can leave the skills to us – we guarantee them. We carefully screen for a senior level understanding of the skills mentioned in this post as well as many others. We also only accept the highest general aptitude results and knowledge of core concepts and best practices common across technologies, platforms, languages, and frameworks.
To show just how committed we are to helping organizations adopt the DevOps culture, we will offer a discount to any existing engagement if we add DevOps engineers to your team. Just reach out and refer to this post.