DEVOPSdigest asked experts across the industry — including analysts, consultants and vendors — for their opinions on the best way for a development or DevOps team to become more Agile. Part 2 covers processes including automation, continuous delivery and testing.
Start with Essential Steps to Become Agile - Part 1
The best way any IT organization can become Agile is to automate proven and defined best practices and orchestrate them into a coherent digital assembly line. Executing scripts is not automation, nor is it orchestration! Safely deploying changes into PROD at velocity requires human effort to play a supervisory/administration role instead of a hands-to-the-keyboard, HESS (Holidays, Evenings, Saturdays, Sundays) role.
Product Marketing Director and DevOps Evangelist, Automic Software
Automate. Automate such that with each change you can validate the value delivered. Start with automation of the build, integration and validation processes, for continuous integration. Then automate the priority functional and acceptance testing. Ultimately extend the automation to ensure that you can deliver a validated change to a pre-production environment to confirm the related story is "done."
DevOps Evangelist, CloudBees
The top way to become Agile is to deliver as often as possible. This gets your product into the hands of your customers and perpetuates the feedback loop that helps improve your service, thus fostering innovation. And the only way to get high quality product through the pipeline quickly is by automating your testing cycle.
VP of Engineering, Sauce Labs
Agile is trusting your team to make choices on your behalf, set their own priorities, and fail forward. It's the same thing that happens now, with less ritual. Automating all the things requires new processes, new tools, new skills, and new thinking about both software development and teamwork. Hacking a pipeline is easy compared to hacking an organization. Automation is a never-ending process of troubleshooting and exception handling. If your automation is well-thought out, you can optimize those processes, but you can't eliminate them. All technical problems are people problems. Communication rituals like standups solve people problems, so that technical problems can be solved next.
Product Manager, SOASTA
AUTOMATION + ALGORITHMICS
The only way to become Agile, is through an aggressive shift to automation, but since that is almost mandatory now, the top way to make automation a force-multiplier, is by combining automation with algorithmics, and making the whole process an intelligent and collaborative one.
Chief Evangelist, Moogsoft
AUTOMATION + LEANIT
The benefits for an IT organization in becoming more Agile are the reduced time to market with shorter development cycles. Then, everything which leads to this objective should be considered and evaluated. As a result, organizations should adopt a sprint-based development methodology to push release out faster. Meanwhile, they want to automate, as much as possible, the processes of the release deployment and the testing phase. In addition, adopting a DevOps culture where Dev and Ops actively collaborate on deployment and production support will also speed up the app deployments. Finally, once this is done, I think the top way to become even more Agile is to always look for continuous improvement by using automation and LeanIT principles.
Senior Director of Product Marketing, IT Alerting and IoT, Everbridge
Build a roadmap to continuous delivery and execute on it. Work your transformation step by step until you achieve this state.
ARA Evangelist, Automic Software
To be truly Agile, development teams need to embrace continuous delivery. While this type of delivery is what users have come to expect from SaaS and consumer services, it's critical for business services that are on-premises as well.
CEO, Paessler AG
Teams can become more Agile by focusing on the concept of "Continuous Flow" because tasks can almost always be accomplished more efficiently and accurately when the product or release is worked on continuously from the time a business idea is accepted by development to the time the feature value is delivered to the customer. Faster, better business outcomes occur the more you can focus on the product or release and its needs, rather than the organization, process or people. Continuous flow is really the theory and basis for Continuous Delivery.
Director of Strategy, Micro Focus
The most important thing an organization can do is to understand that there is a difference between BEING Agile and DOING Agile. To "do" Agile, a team can adopt the roles, events and artifacts of Scrum, XP or another Agile framework. But to BE Agile, the team has to keep in mind the original goals of the movement: to focus on satisfying the customer through early and continuous delivery of valuable software. So many teams dogmatically focus on a framework, or on word-by-word parsing of the Agile Manifesto. In fact, it's "feeling" the "Principles Behind the Manifesto" that is much more important.
VP Industry Strategy, Tasktop Technologies
Being Agile means having the confidence to ship on short notice. The best way that a DevOps team can foster that kind of confidence is to provide a robust, continuous integration environment that builds, tests, packages, and deploys your product each time a pull request is merged. If these steps aren't automated they'll only get done on release day. Putting fully built products in the hands of testers as soon as possible once a change to the source code is made (ideally, within minutes) allows your environment to get the most of a team that may be covering multiple products.
Sr. Engineering Manager, Sencha
One of the foundational steps to improve productivity and agility is to build and adopt a true continuous integration/continuous deployment process to meet service needs. For a CI/CD process to be truly effective it should have automatic testing of security, performance and reliability be part of the build and deploy process. Having the confidence that every change pushed by a developer is fully tested to be secure and with no negative performance impact makes it easier to truly empower your developers, letting them push code and iterate quickly without losing control over the safety and reliability of the overall service/product.
Co-Founder and CTO, PerimeterX
TEST EARLY AND OFTEN
In support of today's Agile software development, where software is released frequently, organizations need to ensure that software is of high quality throughout development. To do this, teams need to test early and often, verifying both functional and non-functional requirements before releasing their embedded device, IoT application, or IT service. To succeed, teams must embrace a few critical best practices: implementing automated functional testing to enable early and frequent feedback on the status of the application and dramatically reduce overhead associated with continuous testing; utilizing service virtualization, to eliminate test environment bottlenecks while scaling the testing efforts; and using change-based testing to quickly focus on what in the codebase has changed, increasing efficiency while eliminating the risks associated with evolving applications.
Generally, I have seen that teams that are succeeding with Agile but looking to take it to the next level can implement a test-first or test-driven development approach to find additional gains in efficiency and speed to market. Test Driven Development will reduce the amount of documentation needed to define requirements by consolidating the test and requirements specifications into one shared item, which has an indirect benefit of driving more alignment and consensus on requirements up front. Additionally, it will increase speed to market by allowing features to be pushed to production soon after (if not immediately after) they are coded, as automated tests have been defined up front and can be run to validate the code as soon as it is completed.
VP of Strategy and Business Development, QASymphony
Reversibility is the key to becoming more Agile. Enterprises want to move fast, but what happens to the business and the customer if they break things? So many organizations still live in crippling fear of the possibility that downtime or an outage will result from the frequent code pushes and complexity that underlie a modern DevOps approach. Reversibility removes this fear. Building application development and management processes around tools that make it easy to roll back problematic changes before they turn into full-blown incidents. With the real-time and fine-grained insights provided by modern infrastructure and application monitoring tools, teams can deploy incremental updates with speed and confidence that any issue will always be easy to identify, isolate, and fix before they negatively affect customer experience. Reversibility enables agility and removes risk so that enterprises can speed their digital transformation and fully embrace DevOps.
Head of Marketing, SignalFx
Read Essential Steps to Become Agile - Part 3, providing some tips for getting started and gaining feedback.