Agile development is one software methodology that’s continually gaining traction from a business perspective. Despite its growing popularity, there’s still a lot of criticism that's associated with agile, and I believe that’s partly due to misconceptions about what this methodology truly offers. Agile development promises several different benefits such as placing a greater emphasis on delivering quality software, and this methodology lends itself to strengthening the relationship between developers and key stakeholders to deliver a product efficiently. However, it’s important to note that these benefits can only be achieved by carefully outlining a strategy that truly embraces agile within the business. Although agile might not be the easiest strategy to implement in large organizations, the time and effort dedicated to crafting a conducive agile environment is certainly worth the effort in the long run.
Furthermore, agile is not going away. I’ve written about agile extensively in “Visual Studio 2013 Emphasizes Agile Development & DevOps Collaboration,” where Microsoft is clearly placing a greater significance on the agile development lifecycle in its Visual Studio tooling. In fact, Microsoft’s mission becomes incredibly apparent when you step back to look at the company’s devices and services strategy. The Microsoft word of the year is cadence, cadence, cadence—which reflects something of the business and development industry—that it’s the norm to deliver products and services on a routine basis.
With these thoughts in mind, I recently spoke with Gil Zilberfeld, product manager at Typemock, to discuss best practices for cultivating an effective agile development. Below are the most important takeaways from our discussion that developers should consider when developing an effective agile environment.
Focus on Results—Publicize Your Hard Work!
Since its inception, agile development has shifted from a bottom-up to top-down process. This means that most of the direction comes from upper management, while the development team is charged with operating within the rules and boundaries that are set by upper management. Stated differently, this top-down process typically takes longer to implement.
As a result of this top-down mentality, it's especially important for development teams to focus on tangible and measurable results. Rather than showing upper management the amount of code produced, show something more specific such as decreased processing time for executing a feature under load. Unit tests are a great option to demonstrate these type of results and proves to upper management in a meaningful way that your product or service is fit for use. Test driven development (TDD) can also play an important role here as well.
Finally, Zilberfeld stresses transparency in the agile development process. Not only do you want to showcase all of your successes, but it's also important to acknowledge your failures and consider different ways to address them.
Gain Sponsorship from Upper Management
Because agile development is a top-bottom approach, it can be a time-consuming process to get approval from upper management so that development initiatives are set in motion. As a result, Zilberfeld recommends finding a go-to person who supports the agile mission that's able to effectively backup the development team for any tasks that require approval from upper management. Without this type of person at the helm, Zilberfeld explains that a development team can easily get caught up in a vicious cycle where they're wasting precious time explaining themselves to gain approval for different initiatives. By having a spokesperson to help sell your initiatives to upper management, your development teams will be better able to spend their time developing quality software.
Ask for Feedback
Because agile development is an inherently iterative process, it should come to no surprise that obtaining feedback should be put at the forefront of the development process. Stressing this importance, Zilberfeld says, "If you don't ask for feedback, then it's like you've done nothing." Collaboration within development teams also plays an important role here. Zilberfeld highly recommends that developers engage in a peer code review process, which helps development teams continuously improve their skillsets in an efficient and collaborative way.
According to Zilberfeld, an effective agile environment can't be successful without automation. As a rule of thumb, if you're doing something more than once, then it's likely that you need to automate it. It can be incredibly stressful to write a new test in a scrum sprint for every new feature that you're developing. That stress easily intensifies as developers need to ensure that those features work on existing builds. Automated regression testing is an excellent technique for eliminating those hassles for efficient code iteration. An automation testing framework helps alleviate this tediousness and frees up your development team's time so they can get back to developing new functionalities.
Fail Early and Try Again
Finally, Zilberfeld urges developers to accept the mantra of fail early and try again. Remember that agile is an iterative process—you’re developing little bits of demonstrable functionality. Zilberfeld recommends to always assume that 90 percent of what you do isn’t going to work. Stated differently, keep a level head, learn through your mistakes and make adjustments accordingly. Learn, adjust, adapt. It’s all iterative.