The following article is a guest post to Zephyr from Rodney West, Senior Consultant and the Editorial Director at Isos Technology. Isos Technology is a partner of Zephyr and is the market leader in solving complex enterprise challenges from Agile adoption and QA to DevOps and they help teams improve quality and speed delivery.
I’m about to say something that is going to make a lot of developers angry. Standardized development environments are a good thing. I know this flies in the face of many developers. As a developer, the development environment is a deeply personal reflection of your development style and needs in the pursuit of expectations. Continuously tweaked and constantly evolving, your development environment (theoretically) enables peak productivity. So why is standardization good?
One of the most important aspects of agile development is effective use of time. Loss of time is the enemy of agile development. Unfortunately, custom environments are often speed bumps, and in the worst case brick walls, in the agile world. How often have you seen teams lose hours, days or even entire sprints because of development environment issues? Standardized development environments to the rescue!
One benefit of agile development is team composition flexibility. Is your team going to need more Java developers for a couple of sprints? How about increased UX capacity? No problem (as long as resources with the needed skills are available) … until the time comes to ramp up new resources.
Time and time again new resources trip over the hurdle of setting up a suitable development environment. On agile projects, resources need to be productive from day one. An entire sprint can easily be lost setting up a new development environment… not including time commitment from other team resources. A standardized development environment will help you here.
Why does it work for everyone but me?
When a development environment goes sideways, sprint time is drained away. Depending on issue severity and resource skills, this can range from a minor inconvenience to the loss of sprint productivity for multiple resources.
What happens when a database listener issue crops up in a junior UX resource’s environment? How do you deal with missing binaries or incorrect configuration files? Anyone who has spent time helping fix another resource’s local environment issues knows the pain of tracking down issues muddled by environment differences.
If everyone starts from the same point, it is simpler to get to the bottom of the issues. Files and directories are easier to locate, configurations can be shared and logs are easier to analyze. This will save everyone involved time and may just save the sprint.
New Toys for Everyone
What do you do when it is time to update the development environment? You could just be applying a database patch. Maybe you are moving from an Apache HTTP Server to Nginx. Regardless of the upgrade, having everyone do their own upgrades to unique environments is time consuming and potentially error prone. Even with detailed upgrade path notes, there will probably be issues. In the agile world, issues == lost time.
Would you task a UX resource with a database upgrade? No. You would have the database export perform the upgrade. Using this approach, the standardized environment can be upgraded and debugged before pushing changes to the rest of the team, saving everyone time and headaches. Once a stable has been completed, it can be pushed to the whole team.
The Time Is Now
Standardized development environments will buy time and productivity in your agile projects. As an added benefit, keeping a history of development configurations allows testing of older configurations as needed. Tools such as VirtualBox and Docker make it easy to create and update standard development environments.
Author Rodney West: Rodney West is a Senior Consultant and the Editorial Director at Isos Technology. He has over 17 years of experience in Software Development, Software Architecture and Technical Leadership in a wide range of industries. His approach to software development focuses on the interaction between corporate culture and development processes in the delivery of software.