How development and operations teams came together to solve dysfunction in the industry.
Principal Solutions Engineer
Despite the rise of agile methodology, development and operations teams remained siloed for years. DevOps is the next evolution of collaboration tools and practices to release better software, faster.
Bringing development and IT teams together
The DevOps movement started to coalesce some time between 2007 and 2008, when IT operations and software development communities raised concerns what they felt was a fatal level of dysfunction in the industry.
They railed against the traditional software development model, which called for those who write code to be organizationally and functionally apart from those who deploy and support that code.
Developers and IT/Ops professionals had separate (and often competing) objectives, separate department leadership, separate key performance indicators by which they were judged, and often worked on separate floors or even separate buildings. The result was siloed teams concerned only with their own fiefdoms, long hours, botched releases, and unhappy customers. Surely there’s a better way, they said. So, the two communities came together and started talking – with people like Patrick Debois, Gene Kim, and John Willis driving the conversation.
What began in online forums and local meet-ups is now a major theme in the software zeitgeist, which is probably what brought you here! You and your team are feeling the pain caused by siloed teams and broken lines of communication within your company.
You’re using agile methodologies for planning and development, but still struggling to get that code out the door without a bunch of drama. You’ve probably heard a few things about DevOps and the seemingly magical effect it can have on teams: Nearly all (99%) of DevOps teams are confident about the success of their code that goes into production, in a survey of 500 DevOps practitioners conducted by Atlassian¹.
However, DevOps isn’t magic, and transformations don’t happen overnight. The good news is that you don’t have to wait for upper management to roll out a large-scale initiative. By understanding the value of DevOps and making small, incremental changes, your team can embark on the DevOps journey right away.
Going beyond agile
DevOps touches every phase of the development and operations lifecycle. From planning and building to monitoring and iterating, DevOps brings together the skills, processes, and tools from every facet of an engineering and IT organization.
Agile methodologies help teams plan and produce by breaking work down into manageable tasks and milestones. Agile relies on sprints, backlogs, epics, and stories to assign work to skilled team members, adjust timelines when necessary, and deliver quality products and services to customers. Read more about agile.
Continuous integration and delivery: Continuous integration and delivery is a cornerstone of DevOps practices that relies on automating the merging and deployment of code. Traditional development methods require engineers to manually update changes in the codebase, with additional manual checks to ensure quality code is ready to ship into production. Deployments are scheduled with weeks- or months-long delays to remove the likelihood of bugs or incidents. DevOps practices remove these delays by automating the merging, testing, and deployment functions. High-performing teams use CI/CD to reduce their deployment frequency from every few months to multiple times each day. Read more about CI/CD.
Git repositories and workflows enable the automation and version control capabilities that are foundational to DevOps practices. Because Git is distributed, operations such as commit, blame, diff, merge, and log happen faster. Git also supports branching, merging, and rewriting repository history, which enables powerful workflows and tools. Read more about Git.
IT service management is the process IT teams use to manage the end-to-end delivery of IT services to customers. This includes all the processes and activities to design, create, deliver, and support IT services. The core concept of ITSM is the belief that IT should be delivered as a service, which goes beyond basic IT support. ITSM teams oversee all kinds of workplace technology, ranging from laptops, to servers, to business-critical software applications. Read more about ITSM.
Incident management teams respond to an unplanned event or service interruption and restore the service to its operational state. In a “you build it, you run it” model, developers partner with operations to reduce the likelihood of an incident occurring, and also reduce the mean time to recovery when an incident happens. Read more about incident management.
State of DevOps
Organizations and teams continue to adopt DevOps practices and tools. In a survey of 500 DevOps practitioners, Atlassian found that 50% of organizations say they’ve been practicing DevOps for more than three years.
Unfortunately, despite agreement on the definition of DevOps and the benefits of implementing DevOps practices, organizations and teams still struggle to fulfill the promise of DevOps. Teams must focus on continuous feedback, iteration, and improvement to deploy better and faster to meet customers' needs.
Ian Buchanan is a Principal Solutions Engineer for DevOps at Atlassian where he focuses on the emerging DevOps community and the application of Jira, Bitbucket, and Bamboo for better continuous integration and continuous delivery. While Ian Buchanan has broad and deep experience with both Java and .NET, he is best known as a champion of lean and agile practices in large enterprises.
During his career, he has successfully managed enterprise software development tools in all phases of their lifecycle, from cradle to grave. He has driven organization-wide process improvement with results of greater productivity, higher quality, and improved customer satisfaction. He has built multi-national agile teams that value self-direction and self-organization. When not speaking or coding, you are likely to find Ian indulging his passions in parsers, meta-programming, and domain-specific languages.