For this interview, I had the pleasure to talk to Gisela Decuzzi, an Argentine software developer with a strong passion for Agile technical practices.
Gisela joined 10Pines more than eight years ago and has been developing products for clients in several countries. Besides being an experienced software developer, she is a professor and is helping to educate the next generation of developers in her country.
Gisela started the interview by talking about Continuous Delivery, a collection of techniques that taken to an extreme provide great value to the product that is being built. It enables development teams to put good-quality code into production at short intervals. She mentioned that the project on which she’s currently working is deploying to production thirty times a day.
She outlined four conditions for successful Continuous Delivery:
- Having automated test in all four quadrants guarantee the quality of what is being delivered
- Monitoring code in production with alarms
- Having a committed team that reacts quickly instead of blaming each other
- Having the ability to roll back changes as quickly and easily as putting code into production
For Gisela, running manual regressions is a waste of time and talent. She says that instead, this should be done with automated end-to-end tests that cover the most common scenarios. In her opinion, it doesn’t make sense for a developer to not automate something that might fail, as automation may prevent that the developer from being embarrassed.
She pointed out that trunk-based development is much easier than having to deal with multiple branches. This practice becomes even more powerful when combined with feature toggles that would allow incomplete functionality to be put into production that will be visible only when completed. She recommended using tools that offer feature flags that can be activated and removed when no longer needed. Feature flags enable customers to test functionality in production without any risk to the product, although she warned that feature flags not adequately handled can lead to spaghetti code.
Heavily investing in rollback procedures is key, Gisela emphasized again. Being able to roll back the database is also key. Deployment patterns like Blue/Green and Canary supported by containers are fundamental.
She commented that she likes XP for being the first method that really emphasized software development technical practices. DevOps and Agile also are part of this powerful mix that enables Continuous Delivery practices. In closing Gisela recommends researching publicly available information about the topic and begin experimenting with its tools and techniques.