Collaboration cracks it
Here at 345 Technology we believe that the toughest challenges can be solved when highly skilled people work together, trust each other and bring out the best in each other. We work just as closely with our clients to understand their challenges and help them to reduce complexity, modernise applications, and increase software efficiency. DevOps culture addresses all of these requirements and creates an environment where high-performing teams can flourish, while continuously delivering value to customers.
Why do we need DevOps?
If we look back at how software was developed before DevOps, a typical scenario was that a test plan would be created in Word and given to the developers. They would develop the software and produce some documentation, again in Word, which would be stored on a disk. The production people would install the software and a bug would appear. They may or may not look at the documentation. They may or may not look at the test plan. Everyone worked in silos, with someone producing the requirements document and test teams working to the test plan and so on. All that documentation was just not available quickly to everybody in an open way. That’s the opposite of DevOps culture.
How did DevOps emerge?
The DevOps movement was ignited in 2009 at the O’Reilly Velocity Conference, when Paul Hammond, Flickr’s director of engineering and John Allspaw, SVP Technical Operations, presented the now legendary, “10 + Deploys per Day: Dev and Ops Co-Operation at Flickr.” By role-playing the typical interdepartmental conflict that slowed software development, they made the case for better collaboration between developers and operational teams.
The Hammond/Allspaw livestream was watched by Belgian IT consultant, Patrick Dubois, who had project managed a government data centre migration project and worked across the operational teams looking after the servers and the database application development teams. He was frustrated at the inefficiency of this siloed approach and had started to think about how sysadmins, developers and testers could collaborate to achieve better business results. His ideas on ‘Agile Infrastructure’ were presented at Agile 2008 in Toronto and the following year Dubois hosted the first ‘DevOpsDays’ event in Ghent.
Three years later Gartner predicted that by 2015 20% of Global 2000 organisations would have adopted DevOps as a mainstream strategy to gain efficiencies in their software development cycles with continuous integration/ continuous delivery (CI/CD).
How do you ‘do’ DevOps?
DevOps involves a change in culture, where developers, testers, security and compliance teams work together to enable their organisation to improve productivity, shorten development cycles, improve confidence in applications, increase organisational agility and continually provide value to customers.
As well as a change in working practices, this CI/CD cycle requires new tools to allow repeatable processes to become automated.
What are the typical DevOps tools?
Microsoft, Google and AWS all provide tooling to enable the collaborative working that underpins DevOps. Toolsets such as Chef, Puppet, Kubernetes and Docker support each stage of the application lifecycle of discovery, planning, building, testing, monitoring, operation, and continuous feedback.
CI/CD pipelines are text-based files, so an editor such as VS Code that supports collaboration is one of most useful DevOps tools. As practitioners are continuously communicating with colleagues during different stages of the development process, asynchronous chat systems are also important DevOps tools. If a problem occurs, everyone can see what’s been run, what tests have taken place and they can hop onto Slack or Teams to discuss it within that DevOps platform.
How does DevOps improve confidence in applications?
It’s important to remember that people are very protective about their production environment and rightly so. To address this, DevOps organisations often create parallel environments allowing teams to build and deploy to blue/green production environments: alternating between the two to ensure that whenever changes are made, they are only applied to one environment. Once everyone is confident that a change works in production, it can be deployed to real users. This approach allows developers more freedom to experiment without risking the production environment.
How does DevOps improve visibility?
Working in a DevOps environment, if a bug appears, we can see what changes have been applied to the software and where the last change was. The information is readily available to everybody who needs it. We can see what test cases have been run and track everything backwards and forwards across the whole process. It’s important to ensure that within that DevOps structure, everyone can hop on to a communication channel such as Slack and be able to talk to somebody about a problem that they’ve spotted.
How does DevOps foster collaboration?
DevOps encompasses the whole development process, from collecting requirements, to running tests and implementing a hotfix in production. Every person in the team will interact with the DevOps process and they are all responsible for its smooth running.
Within DevOps, we’re all in the same multifunction team, swarming, working on the same task to solve the same problem. We’re all responsible for the whole process. If five people are working on a bug, everyone is working on it, they all want to get it fixed. Each person has to take an egoless stance. In that situation, the scrum master’s role is to ensure that the team has everything it needs to get the job done. It doesn’t matter who does what, as long as everyone is moving in the same direction and collectively solving the problem.
Enterprises that want to experiment with DevOps tend to create small teams that are able to operate like a start-up and think and act independently. Working within small tightknit teams of five developers, where everyone is working towards the same goal and solving the same problem is a great way to introduce people to that new way of working. Once that mutual professional respect develops as a result of solving problems together, developers start to trust their team and that can be a powerful way of helping experienced software engineers to work in a more open, collaborative way.
How does DevOps accelerate software development?
A working DevOps pipeline provides the same level of confidence as test-driven development (TDD). When everyone is working together in the flow and concentrating on getting the next feature out, everyone is responsible for reporting bugs and these can be addressed during retros following a sprint. This allows for rapid, iterative software development cycles, that continue to meet business requirements as they evolve.