The elements needed to build a successful, mature software development team can keep most managers up at night. Without it, the programming suffers and it can ultimately influence the success of a project/product. At times, it can feel like an unachievable goal situated in the ether just beyond reach. Teams are always seeking new and innovative ways to code, document, frame, massage, expand, or eliminate steps in an effort to find the secret sauce. Although each team's recipe varies, there is one ingredient that is notably missing from most cauldrons and can have a greater reaching impact than most. This special ingredient is advocacy. Dictionary.com defines an advocate as "a person who speaks or writes in support or defense of a person, cause, etc."
In software development, programming teams tend to thrive in diverse environments where team members hail from various backgrounds and walks of life. Combining that ingredient with the value of holding each other accountable can be a powerful combination. One way to drive accountability is through advocacy. Looking back on the definition, there are two sides to advocation. The first side is advocating for each other on a team. The second is advocating for varied causes. This is where the secret sauce is underutilized. Software development is too vast for any one person to handle. As software grows, so does the number of individuals required to support it. With this knowledge in hand, team members should find areas of the product/project/system to advocate for. Traditionally, teams have one or two individuals who seek out and stimulate change. Encouraging group advocacy converts everyone on a team into niche promoters.
When everyone jumps in and advocates, the sum is greater than its parts. There are plenty of areas to advocate for. As teams grow and mature, members should be encouraged to find their voice and advocate on topics they feel strongly or passionate about. This is a key to successful advocation. Do not force or assign topics. When advocating for something, it's important to do it in a respectful, encouraging manner. Admonishing, threatening, rude, or other negative behavior is not productive or acceptable. Simply stated, remain humble with a steadfast resolve.
Advocation can include introducing new concepts or seeking advancement of existing paradigms. For example, any of the following are excellent areas of interest: coding standards, software release procedures, unit testing, code reviews, use of new technologies, code reuse, code refactoring, code repository etiquette, code efficiency, new coding techniques, etc. Although the previous list was tailored toward physical programming, teams also need advocates for broader programming and business concepts. One of the hidden benefits of individual advocacy is a more balanced approach to software development. Through proper advocacy, teams can challenge one another and grow together. This helps open the door to enable teams to do great things.