The summer of buzz words: Cloud computing, tablets, agile, scrum … others?
I plan to write about the first one in a next entry. Today I want to focus on Agile (see its manifesto). Sometimes when looking around on industry blogs, software team mission statements, job descriptions two trends seem to take hold: software development organizations need to be agile in order to attract top talent, software developers need to master agility in order to be hired.
And yes, I am also a proponent of agile development methodologies including some of its variants like Scrum (see Jeff Sutherland’s blog) and Extreme Programming. One reason why agile-like methods are taking hold not only in fast-paced startups but also the stately corporations is that they build upon the lifestyle of successful open source software projects: “release early and release often.”
In past years Big Bang approaches were common. Companies may have attempted to breakdown scope and complexity of projects through variants of the basic iterative waterfall models but still the project would always work towards the big, unique delivery of the final product to the customer.
Successful execution of an agile approach can achieve several results:
- the product development as a whole becomes more transparent and manageable
- developers and customer understand each others roles and responsibilities much better
- the customer sees continuous progress towards a goal
- makes adjustment to changing circumstances easier
- more opportunity to recognize and foster talent
Perhaps an unfair advantage Agile has over the traditional models of the past is that we now benefit from the web: abundance of information available through blogs and articles of our experiences with applying this approach.
As illustration I offer a few of favorite blog posts. Some over guidance, some offer a word of caution:
Sumeet on “Agile is not…”
Adam on “Definition of Done in Agile development”
Venkatesh on “Agile Testing”
In case of Sumeet’s post I agree with his concerns regarding the focus on colocation. Apache Software Foundation, Eclipse and others have shown that colocation is not a requirement for success. Even more, a strict focus on colocation limits your organization’s access to available talent. Wiki’s, social media tools, video chat and many more modern communication tools all help break down geographical distance and help create rich communication, collaboration between dispersed team members and even those who are near.