At DVT, we run regular online events focused on the latest technology trends within the IT industry and invite guest speakers to share their knowledge and insights on various topics. The DVT Insights Events aim to enlighten you, educate you and often, provide a new view on a burning issue within the technology space.

Best Practices of Agile Software Development
Thean Hoogenboezem

Best Practices of Agile Software Development

Donnerstag, 29 August 2019 12:52

Whether you’re learning about Agile for the first time or want a refresher on the basics, this roundup of Agile software development best practices has what you need to get your team up and running so you can do what Agile does best: deliver fast and frequent value.

Countless Agile best practices and development strategies are now part of the body of knowledge, giving Agile teams the benefit of learning from those before them. Equally important are the best practices concerning how groups of individuals can work together more efficiently and effectively. Even the best developers and testers need to up their interpersonal games to deliver products of value to users. As a Software Engineer, I have had the pleasure of working in many software development environments, projects and teams. These experiences have shown me that the following of best practices are experienced in different ways. One of the challenges is to identify the best method of recognising these best practices.

3 reasons to implement the Agile methodology

By way of background, I am an avid supporter of good practices such as working Agile within self-organised teams and applying good practices within software engineering. This includes all the industry de-facto practices and principles and certainly not excluding individual traits and personal experiences contributing to better ways of working.

By way of background, I am an avid supporter of good practices such as working in Agile within self-organised teams and applying good practices within software engineering. This includes all the industry de-facto practices and principles and certainly not excluding individual traits and personal experiences contributing to better ways of working.

Agile is a project management methodology that is based on iterative development, incremental delivery, and continuous improvement. It is a flexible approach that allows teams to adapt to change quickly and efficiently. Agile is widely used in software development, but it can also be applied to other types of projects, such as product development, marketing, and customer service.

Here are three reasons why you should consider implementing the Agile methodology:

1. Faster delivery of high-quality products

Agile teams work in short sprints, typically two weeks long. At the end of each sprint, the team delivers a working product that has been tested and approved by the stakeholders. This iterative approach allows teams to get feedback early and often, which helps to ensure that the product meets the needs of the users.

Agile teams also focus on delivering value to the users in each sprint. This means that they prioritise the most important features and functionality first. This helps to reduce the risk of scope creep and ensures that the team is delivering a product that the users want and need.

2. Improved communication and collaboration

Agile teams are cross-functional and self-organising. This means that they have all the skills and expertise they need to complete the work, and they are empowered to make decisions and take action. This leads to improved communication and collaboration within the team, as well as with stakeholders.

Agile teams also use a variety of tools and techniques to promote communication and collaboration. For example, they often use daily standup meetings to share their progress and identify any roadblocks. They also use visual tools, such as Kanban boards, to track the progress of work and identify bottlenecks.

3. Increased adaptability and responsiveness to change

The Agile methodology is designed to help teams adapt to change quickly and efficiently. This is because Agile teams work in short sprints and deliver working products at the end of each sprint. This allows them to get feedback early and often, and to make changes to the product as needed.

Agile teams also use a variety of tools and techniques to help them adapt to change. For example, they often use backlog prioritization to identify and prioritize the most important work. They also use risk management techniques to identify and mitigate potential risks.

Overall, the Agile methodology is a flexible and adaptable approach to project management that can help teams deliver high-quality products faster and more efficiently. It is a good choice for teams that need to be able to respond to change quickly and efficiently.

In this article, I’ll be sharing my observations and recommendations on best practices. So as a start, what value can be instilled in a software development team that will allow the formulation of practices to achieve the desired outcome?

Continuous Improvement

What does this mean?

A core value of best/good practices is Kaizen,

Improving is not easy

Kaizen (改善) is the Sino-Japanese word for “improvement”. In business, kaizen refers to activities that continuously improve all functions and involve all employees from the CEO to the assembly line workers. — Wikipedia

To start any journey to improvement you need to first understand the desired outcomes of the change and be able to identify what is not working as ideally as you would like it to. Having this conviction allows the willingness to make the change and to review it objectively when enough time has been invested to evaluate the change.

What is the improvement we want?

Best refers to saying it is the only right way (In truth there is no right way). We should rather be thinking about good practices — meaning we apply kaizen to find a set of good principles resulting in the desired outcomes we need right now. Reviewing these practices as the answers to the questions change will allow faster adaption, however, attempting to evolve too quickly can have the opposite effect that no method is ever around for long enough to be seen as a good practice. (Meaning a benchmark of practice formulation is required to give viable improvements enough time to be properly evaluated.)

We should always improve the way we work and perform our daily actions and interactions better. Once we feel we cannot improve anymore we should take a step back to review, explore and discover innovation. I would say that this is where the actual work begins. (By the way, in Agile methodologies this is referred to as the work that happens outside the workplace.)

Good practices go much further than writing better code, creating resilience and striving for more sustainable and maintainable development practices. This means that there are many ways to apply good practices. As an example, Agile theoretical practices translate differently for small versus large companies. Small companies can take the basic Agile framework and adopt a version suited to their interactions and requirements. In large organisations, the SAFe framework has been adopted since it allows much-needed strategy and some form of planning compatible with development teams’ requirements to work Agile. Working Agile means something different to almost all organisations and the version adopted changes on a yearly if not monthly basis.

Let’s now review some of the practices that are contained at the core of good practices in software development teams:

Agile Scrum team practices

All members of the team should be able to see and access all aspects of the project. While face-to-face communication is still important, Scrum teams benefit from project management software or a single source of truth where all of the project information is accessible to everyone. Here are some of the agile scrum team practices:

  • Sprint Ceremonies
  • Sprint Planning
  • Technical Planning
  • User Story Reviews
  • Daily Stand-ups
  • Retrospectives
Development Practices
  • Use of Source Control (Git and others)
  • Build Pipelines (CI/CD) — Allowing continuous integration and delivering potentially shippable artefact’s for testing and evaluation of the developed product
  • Clean Coding principles
  • SOLID Principles
  • Unit Testing — TDD preferably ( not always possible btw. )
  • Architectures and Design Patterns
  • Many more
Character traits for good team work

Team members need to be:

  • Confident about the skills they possess yet humble in their interactions with their team, business and at a technical level
  • Approachable, friendly and collaborative
  • Willing to learn and teach amongst themselves
  • Open-minded to different approaches
  • Involved in your team’s interests, creativity and fun
  • Open to questions around your designs, solutions and work in general
  • Curious about proposed solutions, designs and people’s ideas and work

Additionally, other character traits include the ability to:

  • Ask relevant and constructive questions
  • Remain persistent in your experiences and strengths, yet willing to adapt, adopt and change based on new activities and requirements
Apply Kaizen in your lifestyle

The ultimate good practice to unlock your potential is Kaizen. Grow your understanding, capabilities and ways of thinking. Goals and business requirements have not changed as much as we think in the past decade. They have evolved due to the acceleration of technology innovation. The answers and potential solutions have been changing faster than companies can adapt. Make sure that you are part of these mindset changes by allowing yourself to improve every day.

Agile software development is a powerful approach to software development that can help teams deliver high-quality products on time and within budget. However, it is important to remember that agile is not a silver bullet. It requires a commitment to change and a willingness to learn and adapt.

The best practices discussed in this article can help teams to get the most out of agile development. However, it is essential to remember that there is no one-size-fits-all approach. Teams need to find what works best for them and their specific context.

If you are considering adopting agile or improving your existing agile practices, I encourage you to start by experimenting with the best practices discussed in this article. See what works for your team and your specific context. And be prepared to adapt and learn as you go.

Agile development is a journey, not a destination. It is a continuous process of improvement. But if you are willing to commit to the journey, the rewards can be great.

Challenge and reward of agile development

Agile development can be challenging, but it is also incredibly rewarding. Agile teams are empowered to make decisions and own their work. They are also able to learn from their mistakes and improve quickly. This can lead to a more engaged and productive workforce, and ultimately to better products for customers.

If you are considering adopting agile software development, I encourage you to start small and experiment. There are many resources available to help you get started. And remember, agile is a journey, not a destination. Be patient and persistent, and you will eventually see the benefits.

This article was originally posted on Medium's DVT Engineering publication. Read Article

Editor's Note: This post was originally published on 29 August 2019, and was updated on 5 December 2023

DVT 25 Years of Service