Modern Agile: Embracing Rapid Experimentation and Learning in Software Development

Rob Novelino
August 6, 2023
<p>Welcome to the first installment of our four-part blog series exploring the world of modern agile!</p><p>At Vinta, we believe in the power of modern agile methodologies to drive continuous improvement in our software development process.</p><p>According to Joshua Kerievsky, one of the pioneers behind modern agile, while the original agile principles are valuable, they represent a historical perspective. This means every software company must strive for even higher goals in the ever-evolving world of software development.<br><br>Kerievsky divides modern agile into four key principles:</p><ol><li>Make People Awesome</li><li>Deliver Value Continuously</li><li>Make Safety a Prerequisite</li><li>Experiment and Learn Rapidly</li></ol><p>In this first post, we'll explore the principle of Experiment and Learn Rapidly, discussing how we foster a culture of continuous learning and experimentation to drive efficiency when <a href="https://www.vinta.com.br/blog/2022/feature-software-development/">building new features</a>. Enjoy your reading!</p><h2 id="the-importance-of-rapid-experimentation-and-learning-in-software-development">The Importance of Rapid Experimentation and Learning in Software Development</h2><p>Software development is a creative process, and like any creative endeavor, it requires experimentation to succeed. The most innovative companies in the world are constantly experimenting with new technologies, new ways of working, and new business models. This experimentation is crucial for their continued success.</p><p>The Experiment and Learn Rapidly principle is rooted in the idea that organizations must be able to quickly test new ideas, learn from the results, and iterate on their processes to improve their software development practices continually. This mindset is essential in today's competitive landscape, where the ability to innovate and respond to change can make or break a company's success.</p><p>A <a href="https://www.mckinsey.com/capabilities/people-and-organizational-performance/our-insights/the-five-trademarks-of-agile-organizations">study</a> by McKinsey &amp; Company found that agile organizations are five times more likely to achieve top-quartile performance in both financial and non-financial measures. This success can be attributed, in part, to their ability to experiment, learn, and adapt quickly.<br><br>This is particularly relevant for companies developing software, where the long lifecycle of projects often requires teams to move from one project to another before they have finished their current sprint. This creates a problem because agile teams are designed around short-term planning horizons, which do not lend themselves well to long-term strategic planning.<br><br>But how can you embrace this principle? Let's take a look at the steps you can take to get started.</p><h2 id="5-steps-to-implement-rapid-experimentation-and-learning">5 Steps To Implement Rapid Experimentation and Learning</h2><p>To effectively embrace the principle of Experiment and Learn Rapidly, consider the following strategies:</p><h3 id="1-foster-a-culture-of-experimentation">1. Foster a culture of experimentation</h3><p>Encourage your team members to test new ideas, even if they might fail. This can be achieved by creating an environment where failure is seen as an opportunity to learn and grow, rather than a setback. If you want your team members to be more willing to experiment and learn quickly, then they need to know that you have their backs.</p><p>A good way of doing this is by providing them with the resources and support needed for experimentation. For example, if an employee wants to try a new approach but it might take time away from other tasks, offer up additional resources so that they can focus on this new venture.</p><h3 id="2-implement-short-feedback-loops">2. Implement short feedback loops</h3><p>Short feedback loops enable teams to quickly gather information on the effectiveness of their ideas and make necessary adjustments. This can be achieved through practices such as daily stand-ups, sprint reviews, and regular retrospectives.</p><p>By providing teams with feedback about the results of their efforts, you allow them to adjust their approach and continue moving forward. For example, if a team is working on a new feature but isn’t seeing the results they expected or hoped for, they need to know that so that they can make changes before it’s too late.</p><h3 id="3-emphasize-data-driven-decision-making">3. Emphasize data-driven decision-making</h3><p>Encourage your team to base their decisions on data and evidence, rather than relying on intuition or assumptions. This can be achieved by implementing analytics tools and processes that enable your team to gather and analyze data effectively.</p><p>By making data-driven decisions, teams can make more informed decisions that help them produce better results. Provide clear goals and expectations: Make sure your team understands what’s expected of them and how they can achieve their goals. The best way to do this is by providing clear, measurable objectives for each project or initiative.</p><h3 id="4-promote-continuous-learning">4. Promote continuous learning</h3><p>Invest in your team's professional development by providing opportunities for them to learn new skills and technologies. This can be achieved through workshops, training courses, and access to online resources.</p><p>Create a culture of collaboration: Encourage your team to collaborate with each other on projects and initiatives. This will help them learn from each other while building stronger relationships that can lead to better results.</p><h3 id="5-iterate-on-processes-and-practices">5. Iterate on processes and practices</h3><p>Regularly review and evaluate your organization's software development processes and practices, and make adjustments as needed to improve efficiency and effectiveness.</p><p>One way to do this is with a retrospective. A retrospective is a short meeting, usually held at the end of every iteration or sprint, in which team members reflect on what went well and what could be improved.</p><h2 id="iterating-and-learning-the-vinta-way-for-software-development">Iterating and Learning: The Vinta Way For Software Development</h2><p>At Vinta, we've developed our own custom agile methodology by combining elements from various agile frameworks and iterating on them to suit our unique needs and preferences. Our process is built around the following practices:</p><ul><li><strong>One-week sprints</strong>: We believe in frequent, small deliveries to ensure continuous progress and facilitate rapid learning.</li><li><strong>Trello for project management</strong>: Trello allows us to collaborate effectively with clients and maintain a single source of truth for project information.</li><li><strong>GitHub for code review and continuous integration</strong>: We use GitHub, CircleCI, and Travis CI to ensure high-quality code and efficient collaboration.</li><li><strong>Slack for real-time communication</strong>: Daily communication with clients and team members helps us maintain transparency and align expectations.</li></ul><p>We've also adopted a<a href="https://www.infoq.com/articles/noestimates-introduction/"> #noestimates</a> approach to project management, focusing on delivering value through hours worked rather than attempting to predict the exact scope and timeline of a project. This approach allows us to be more flexible and responsive to change, ultimately delivering better results for our clients.</p><h2 id="continuous-improvement-through-experimentation">Continuous Improvement Through Experimentation</h2><p>At the heart of our agile process is a commitment to experimentation and learning. We constantly iterate on our practices and processes, incorporating new ideas and techniques as we discover them. This commitment to continuous improvement is inspired by the<a href="https://leanstartup.com/"> Lean Startup</a> methodology, which emphasizes the importance of rapid learning and adaptation.</p><p>By embracing the principles of Modern Agile, we've been able to create a software development process that is both efficient and flexible, ensuring that we can consistently deliver high-quality results for our clients.</p><p>We hope this post has given you some insights into how we approach software development at Vinta and the benefits of adopting a modern agile mindset. If you'd like to learn more or discuss your own software development needs, please feel free to<a href="https://www.vinta.com.br/contact/"> contact us</a>.</p>