If you have a computer technology degree, then you’ve probably heard of agile development, the corporate software design and construction approach of self-organized teams that work in an incremental and iterative manner with continuous feedback. The method offers some powerful benefits, such as keeping software in sync with what customers want and higher quality software in less time.
Current needs of corporate development, particularly in mobile, could lean more companies to exploring agile. The practice has an inherent weakness because it depends on people skills. Learn to work effectively with others, and you could add a new powerful set of tools to your development arsenal.
Agile development emphasizes communications. How can teams collaborate if they don’t work together effectively? How can you improve the match between what you do and what the customer wants if you and the customer don’t find ways to work well together?
The first step is to use the best form of communication for your circumstances. For example, developers in the same room might work at the same terminal and share a white board. If you collaborate with someone in a different office, regular video conferences (to get across body language), supplemented with email, phone, and even regular in-person visits, might be necessary.
Agile requires regular interaction with the customer, whether outside the company or in-house. Depending on the circumstances, that could easily turn into a state of constant interruption and distraction. Some teams take turns being the person to be interrupted, so the rest can get coding done.
It’s important for teams not to use agile practices as a way to avoid communicating with customers. When developers prohibit customers from explaining what they mean, insisting instead on starting only with superficial detail, they block real communication. You can’t solve a problem if you don’t know the conditions, and when developers don’t really listen to the users, they can’t hear what they need to know.
That said, often users are poor at communicating what they want because they can’t envision the business processes necessary. So developers may have to aid them in developing an understandable process.
Developers also should understand how others may need more flexibility in how they work. Designers are accustomed to reworking designs multiple times. If software develops incrementally, with the opportunity to go back and improve it, interface design — or any other aspect of the final product — needs the same freedom.
Agile development is a powerful tool. Get the communications right, and it will serve you well. Skimp on effectively speaking and listening, and you’ll find yourself in the same old place.