Despite a demand for faster release cycles -- weekly rather than monthly -- development teams can find it difficult to integrate the necessary set of tools into their pipeline to make updates ahead of a deadline. How do we give teams the capabilities to keep up with this industrywide trend of accelerated release cycles?
Successful DevOps involves a tuneup of Agile processes. A thorough spring cleaning can help teams get there. Here's how.
Step 1. Refresh roles and responsibilities
While the goal of DevOps is to help dev teams deliver at a faster pace, managers oftentimes don't take into account how this transformation in processes will affect employees and their constantly changing roles.
DevOps, by definition, is the combination of development and operations. This can mean developers are responsible for tasks once performed by testers and operations at different stages throughout the software development life cycle (SDLC). An Agile approach means the execution of these different processes -- building, testing, etc. -- is more tightly coordinated. This requires each of the different siloes to have a better understanding, and knowledge, of each process.
Before jumping into new processes or technologies, it's important to ensure alignment across all teams on what is expected from them in their evolving roles and responsibilities. Successful DevOps is meeting with individuals, teams and their managers to get everyone on the same page and provide guidance on best steps for moving forward this year.
Step 2. Shrink the skills gap
Despite developers' growing list of responsibilities, a recent LinkedIn report found there is a significant skills shortage when it comes to software engineers and other similar career trajectories. Even more, some have begun to take on more responsibility as full-stack developers. That role requires them to assure high-quality outputs and confirm there are no bugs in their code, but many developers have very little knowledge of how to implement continuous testing.
This spring, spend time with employees to brush up on their skills, refine their job responsibilities and up level their expertise to establish full transparency about what is expected of them. Three thought-starters to kick off the conversation include the following:
- Get leadership buy-in. To fund any of this, teams will need leadership to get on board. Sit down with those in senior positions to explain the benefits of team-wide training from both an organizational and economic perspective.
- Implement coaching and mentorship programs. Pair up programmers of different skills and levels to mentor one another. Consider it a coaching system in which team members can provide feedback and training in real time with real-world projects.
- Consider augmenting software delivery practices to improve quality. Acceptance test-driven development is a proven accelerator and behavior-driven development helps bridge varying skills and blind spots between the different personas across the SDLC.
Step 3. Improve productivity with new and improved processes
As release cycles accelerate, team leads should evaluate any roadblocks throughout the SDLC and what might cause them. Start with analyzing not only the quality of outputs, but also how quality assurance is being enforced throughout continuous integration process.
There are several different cooks in the kitchen with all the feature teams adding to, editing, updating and continuously testing code at any given time in the app development process. Successful DevOps involves establishing best practices and basic ground rules so that each of the teams' productivity is visible. If everyone is aware of which teams are progressing, and which are struggling, this will help ensure that all code components are working together as they should be. This will also ensure that any issues with individual code, such as test code potentially blocking CI integration, memory leaks or poor code development practices, don't throw the process off once in sprint. Last, be sure to work with teams to define their dashboards so that everyone can see the same actionable results at any given time.
Step 4. Don't forget to dust off your tech
While people and processes should be a main focus for spring cleaning, this is also a good time to review the various technologies your teams have in place. In this area, successful DevOps means seamless integration of the different types of technologies in the pipeline.
Start with your lab environments. The lab is the glue that keeps the entire CI process running smoothly and supporting all platforms, whether it's mobile, desktop, web, etc. If the lab is unstable or unavailable at any given moment, the entire process is flawed.
As more organizations begin to adopt these Agile approaches, it's also important to remember that it's nearly impossible to build a one-size-fits-all solution; every new process, tool or technology introduced should integrate within the existing toolchain, which will vary from business to business. For this reason, look to develop new APIs or integration points that make it easier to diversify the set of tools you already have.
Also, don't forget to consider your frameworks. When it comes down to it, a developer's objectives for their tests are different than the test engineer's needs. Make sure the entire team has tools and access to different frameworks based on their needs. A developer, for example, might require Espresso or XCUItest to run a small number of unit tests, whereas test engineers require end-to-end functional test frameworks, like Appium or Selenium.
Successful DevOps involves devoting time on a yearly basis to re-evaluating efficiencies, and what better time to do so than when in the spring cleaning spirit? By focusing on polishing up processes, training team members and sprucing up your stack to ensure release cycles are on time -- and spotless -- this spring, dev teams will set themselves up for success for the rest of the year.