Technical Practices Expertise: Improving Quality With Best Practices

Improving Quality With Technical Best Practices

Improving Quality With Best Practices

Agile methodology has revolutionized the software development industry by providing a flexible and iterative approach to project management. However, without technical practices expertise, even the most skilled agile coaches may struggle to improve the quality of their team's work. 

Here, we examine the top approaches to Technical Practices Expertise, divulging crucial best practices that are useful at every stage of your learning expedition. By following these core techniques, you can gain the aptitude and knowledge essential to implement winning team tactics. Nevertheless, it's essential to note that Technical Practices Expertise constitutes just one piece of the larger picture. To obtain a comprehensive understanding of your current process status, we recommend availing yourself of our free agile assessment for Scrum Masters and Agile Coaches.

Technical Practice Expertise and The Learning Journey

At Lean Agile Intelligence, we recognize Technical Practice Expertise as the individual's understanding of technical practices to improve quality. We divided the learning journey into 4 different stages: Developing, Emerging, Adapting, and Optimizing. In the following sections, we will discuss each stage in detail as well as provide practical tips and techniques to help you extend your skills in this area.

 

10_pluralsight_mob_programming_2-technical-practice-expertise-improving-quality-with-technical-best-practices.jpg

Source - How Mob Programming is Reshaping The Workplace

 

Developing

A coach “developing” an understanding of the value of Technical Practices Expertise and adopting the foundational techniques should focus on the following improvements:

  • The What: Teaches and facilitates others about collaborative working techniques (i.e., pair programming styles and mob programming)

    • The How: Pair programming is a practice that derives from XP (extreme programming). An evolution of pair programming is called mob programming. The term was coined by Woody Zuill, one of the first to develop the technique. To get started, visit mobprogramming.org. Here is a great blog post by Sam Fare, who shares his five-month experience with the method.

  • The What: Facilitates the creation and refinement of a test strategy based heavily on unit and integration tests

    • The How: It's important for Agile coaches to work closely with the development team, QA team, and other stakeholders to create a test strategy that is tailored to the specific needs and context of the project. By facilitating collaborative workshops, promoting best practices, providing training and coaching, and conducting continuous reviews and refinements, Agile coaches can help teams create and refine a test strategy that heavily emphasizes unit and integration testing, leading to higher-quality software products. Apart from promoting test-driven development practices, coaches should also facilitate defining of unit and integration testing guidelines. 
  • The What: Understands the basics of continuous integration and can teach or coach

    • The How: “Continuous Integration is a software development practice where members of a team integrate their work frequently. Usually, each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.” - Martin Fowler, Agile Manifesto Co-Author.

    • For a more in-depth look into continuous integration, we recommend this article to start.

 

technical-practice-expertise-improving-quality-with-technical-best-practices-2.png

 

Emerging

A coach “emerging” beyond the foundational techniques of Technical Practices Expertise and embracing it as they become more proficient should focus on the following improvements:

  • The What: Teaches others about Test Driven development

    • The How: Test Driven Development or “TDD,” is a development technique created by Kent Beck. It is a core practice of the “Extreme Programming” framework. Developers write a failing unit test, write the smallest amount of code to make it pass, and then refactor. Unit testing is part of the iterative development process and should not be an afterthought or its own story. In our recommended post, “The Art of Agile development - Test-driven Development,” James shore describes what it means to write code and unit tests using an iterative approach.

  • The What: Teaches others about Behavior Driven Development (BDD) and facilitates example mapping

    • The How: “BDD is a way for software teams to work that closes the gap between business people and technical people by:

      • Encouraging collaboration across roles to build a shared understanding of the problem to be solved

      • Working in rapid, small iterations to increase feedback and the flow of value

      • Producing system documentation that is automatically checked against the system’s behavior

    • We do this by focusing collaborative work around concrete, real-world examples that illustrate how we want the system to behave. We use those examples to guide us from concept through to implementation, in a process of continuous collaboration.” - Source Cucumber.io

  • The What: Teaches others about effective continuous integration where integration occurs at least daily

    • The How: “Continuous Integration is a software development practice where members of a team integrate their work frequently. Usually, each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.” - Martin Fowler, Agile Manifesto Co-Author.

    • For a more in-depth look into continuous integration, we recommend this article to start.

 

*   *   *   *   *   *

"Understands pair and or Mob programming and can teach and facilitate techniques."

*   *   *   *   *   *

 

Adapting

A coach that is “adapting” the Technical Practices Expertise to extract the full benefit should focus on the following improvements:

  • The What: Teaches others about Domain Driven Design and facilitates big picture and tactical event storming

    • The How: It's important for coaches to adapt their teaching and facilitation approach to the needs and context of the teams they are working with. Providing a combination of theoretical knowledge, practical workshops, hands-on practice, and continuous improvement opportunities can help teams build a solid understanding of DDD and event storming, and effectively apply them in their agile software development efforts. Here are some detailed strategies that can help coaches teach others about Domain-Driven Design (DDD) and facilitate big picture and tactical event storming:

      1. Start with Fundamentals of Domain-Driven Design: Before diving into the practical aspects of event storming, it's important to establish a solid understanding of the fundamentals of Domain-Driven Design (DDD). Agile coaches can start by teaching the core concepts of DDD, such as bounded contexts, aggregates, entities, value objects, domain events, and ubiquitous language. There are several books and articles available that provide comprehensive explanations of DDD fundamentals, including:

      1. Utilize Interactive Workshops for Big Picture Event Storming: Agile coaches can facilitate interactive workshops for big picture event storming, which is a collaborative technique used to discover and model the key business events, commands, and aggregates in a domain. These workshops involve cross-functional teams and stakeholders coming together to visually map out the high-level flow of events and commands in the system using sticky notes on a large wall or a digital tool. This can help create a shared understanding of the domain and identify areas of complexity or opportunities for improvement.

      2. Conduct Tactical Event Storming Sessions: Agile coaches can facilitate tactical event storming sessions, which are more focused workshops that involve domain experts, developers, and other stakeholders in modeling specific parts of the system in detail. Tactical event storming involves using a collaborative approach to identify and model individual domain events, commands, and aggregates, along with their relationships and interactions. This can help teams gain a deep understanding of the system's behavior and design its components in a more domain-centric way. Check out this post on how to run your first event storming session.

      3. Provide Hands-on Practice Opportunities: Agile coaches can provide hands-on practice opportunities for teams and individuals to apply DDD and event storming techniques in real-world scenarios. This can involve organizing hackathons, coding dojos, or other collaborative sessions where teams can work on modeling and implementing domain-driven solutions using DDD principles and event storming techniques. This hands-on practice can help reinforce the learning and facilitate the application of DDD and event storming in actual projects.

      4. Foster Continuous Learning and Improvement: Agile coaches can foster a culture of continuous learning and improvement by encouraging teams to reflect on their experiences with DDD and event storming, and continuously iterate and improve their domain models and design decisions. Coaches can facilitate regular retrospectives, communities of practice, or other feedback channels where teams can share their challenges, successes, and learnings related to DDD and event storming, and collaboratively work on refining their domain models and design.

       

  • The What: Teaches others about design principles that enhance agility (i.e., S.O.L.I.D)

    • The How: In object-oriented programming, SOLID principles are five design principles that help a developer build easy-to-extend and maintain software which was originally coined by Agile Manifesto co-author Robert Martin. We recommend this easy-to-read “cheat sheet” that is a nice summary from monterail.

 

solid-1024x797-technical-practice-expertise-improving-quality-with-technical-best-practices.png

Source - Solid Principles in C# - A Complete Guidance

 

Optimizing

A coach “optimizing” knowledge sharing of the Technical Practices Expertise practice learnings across the enterprise should focus on the following improvements:

  • The What: Teaches and shares advanced Technical Practice techniques outside of those they directly support (i.e., Communities of Practice, Workshops, Mentoring)

    • The How: A large part of growth as an agile coach is the ability to share your knowledge and experiences with peers and leadership and learn from one another. This can be done in the form of guilds, COPs, one on ones, lean coffees, and more.

 

*   *   *   *   *   *

"A large part of growth as an agile coach is the ability to share your knowledge and experiences with peers and leadership and learn from one another."

*   *   *   *   *   *

 

Conclusion

In conclusion, Technical Practices Expertise is a crucial skill for agile coaches to possess in order to improve the quality of the team's work. Coaches can develop their understanding of these techniques and teach and coach them to their teams. As coaches become more proficient, they can lead or facilitate Communities of Practice (COPs) around agile technical practices, have a basic understanding of object-oriented design principles, and implement organizational improvements regarding agile technical practices. Knowledge sharing and continuous learning are critical for agile coaches to help their teams grow and improve. Our free agile assessment for Scrum Masters and Agile Coaches provides a complete overview of your team's process status, so if you're interested, give it a try.