There’s a Better Way To Deploy Code: Let’s Share It
Gatekeeping best practices within the developer community benefits no one. If there's a better way to deploy code, we should share it.
Join the DZone community and get the full member experience.Join For Free
Gatekeeping best practices within the developer community benefits no one. If there's a better way to deploy code, we should share it. Why? Because a developer community is just that: a community. What benefits one team will help another, creating more efficient processes, reducing hassle, and elevating software quality and performance across the board. We are witnessing increased collaboration in the DevOps space, a trend we should encourage.
What Is Gatekeeping?
Senior developers have learned many lessons over the course of their careers, and many developed innovative solutions to development cycle challenges. In the past, they may not have openly shared their experience and knowledge; whether it was intentional or not, they were essentially gatekeeping their practices.
Why Should Developers Eliminate Gatekeeping?
When gatekeeping happens, the next generation must spend years gaining understanding and developing their own strategies. This is unnecessary — the knowledge already exists with experienced developers. Sharing wisdom eliminates trial and error. When everyone on the team knows the best ways to do things, the entire team can be more efficient. And they can innovate even further, creating new strategies that help everyone.
What Is the Benefit of Sharing Deployment Practices?
A business's competitive advantage lies in its software, not its deployment process. Streamlined deployment contributes to superior software. This approach enables development teams to spend their time writing great code and committing it to production without the stress of dealing with Kubernetes complexities and needing additional resources.
Enabling these best practices is critical as software development processes grow increasingly complex and teams constantly innovate ways to improve and simplify them. The multitude of execution options creates endless task combinations, and when teams work in silos, each will develop its own strategy. Why is this a problem? Teams will deliver software at different rates of innovation, making it extremely difficult to forecast the long-term direction of the business. Conversely, ordering chaos enables more precise expectations. When everyone shares their secrets, it reduces complexity because developers aren’t creating new solutions to problems that already have an answer.
How Can Teams Share Best Practices?
One way development teams can standardize deployment best practices is through continuous deployment. This process builds onto continuous integration and delivery (CI/CD), pushing code into production and automating the entire release process. Continuous deployment makes software delivery simple, reliable, predictable, and repeatable and eliminates most code release troubleshooting.
Consider this example: automated Canary analysis (delivering code to iterative audiences) may seem foreign and sophisticated to development teams focused on basic tasks such as delivering files to the server. These developers may be overwhelmed by the prospect of conducting a progressive release, but they don't need to be. Continuous deployment removes manual steps, so developers and engineers don't need to learn new deployment skills to reap the benefits of an efficient, dependable, and error-minimizing release process. Even pre-elite teams can successfully use continuous deployment to improve software creation. Experienced teams understand the advantages, but due to gatekeeping, this practice is not used widely. As a developer community, we must share these innovations.
Do We Build the Tool Ourselves or Use an Existing One?
Many teams ask themselves: Should we build our own tool for deployment? While the self-built approach may seem cost-effective, it creates a narrow view of tasks and short-sighted decision-making. Teams focus on the rudimentary checklist rather than the bigger picture of boosting performance metrics.
Yes, getting the update out is vital. But teams must also look to enhancing future production and value by improving deployment frequency, lead time for code changes, change failure rate, and time to restore service — all while meeting growing user expectations. The proof is in the pudding: companies with higher release rates generate four to five times higher revenue growth than those pushing updates less often.
Do-it-yourself tools lack the scalability to keep up with growing process complexity, expanding audiences, and heightened demand. Teams running their own solutions often find themselves distracted from building sustainable value for users. In other words, time spent building and maintaining tools could be used to instead improve software and deployment speed.
In the end, adopting an existing solution is less work than building one. Someone has already put in the effort to create tools — teams should jump on the opportunity to skip over those steps. Then developers and engineers can spend their time on value-driven activities like building software. Reinventing the wheel won't provide a competitive advantage. An existing continuous deployment solution that maintains service and operations while automatically committing code to production maximizes time and resources.
Teams constantly create ways to improve processes and workflows — but those solutions shouldn't stop with them. Best practices that save developers and engineers significant time and frustration should be disseminated to the entire DevOps community so they can build even better methods. Gatekeeping inhibits innovation. The superior solutions created by opening the communication gates will help teams now and make an easier, more productive future.
Published at DZone with permission of Andrew Backes. See the original article here.
Opinions expressed by DZone contributors are their own.