I attended the keynote presentation by Kent Beck (Agitar Fellow) on "Trends in Agile Development" topic. This was the first session in QCon 2007 to officially kick-off the conference (there were tutorials on Monday and Tuesday but the actual conference started on Wednesday).
Kent started his presentation talking about the business trends in the current agile software development environment.
He listed the following 4 factors that are influencing these business trends in agile development.
Kent said that "off-shoring" is not a quest for lowering costs, but to find reliable off-shore business and technical partners and mentioned about the quality of projects implemented abroad.
Talking about software defects, he jokingly said that the bugs are "little things that crawl into code while we are asleep".
He also said that social evolution and new generation of business professionals are impacting the way we develop and manage the agile projects.
Kent compared how the sales people work, based on quotas v. sales and he said it should be the same for software development (IT) professionals as well where our performance is dependent on what we deliver with quality (sales) than what we commit to deliver (quotas).
The reliability of software is as important as the reliability of the software development process followed to develoop that software.
Speaking of the the users of agile methodologies, Kent said Agile methodologies are being used in large and small companies as well as large and small project teams.
He talked about two types of skills that are essential to excel in an agile development environment: Social and Technical Skills. He said social skills are more important than technical skills and suggested that every one should learn and improve the listening skills.
He also talked about "Appreciative attitude" and "Emotional Intelligence" as the important ingredients in a successful agaile development team.
Talking about Integrity, Kent gave an example of committing to new features in a project when the features already committed to deliver aren't even completed yet. For example, we shouldn't do things like promising additional features when the current commitments are not done, saying "I am not done but I will give you more later".
In Technical Skills category, he listed the following three items:
- Incremental Design
- Automated Testing
- Self Education
He suggested that we take a minute at the end of the daily stand-up meetings and appreciate on one good thing we did as a team. We should ask the following questions to stay successful in agile projects:
- What does your team do well and what you can do to do more of it?
- How could you use agile techniques to enhance your strengths?
Responding to a question from the audience, he said the geographic distribution has nothing or little to do with agility. Agility is an attitude and it can be learned and adapted in both co-located and geographically distributed project teams.
Kent also said we need to augment XP with Domain Driven Design (DDD) techniques and follow the usability practices at the same time. For small scale designs, we should use Domain Specific Language (DSL) based architectures.
He concluded the presentation by saying that designing or coding directly shouldn't be the question but what's more important is to ask questions like "what are our principles?" and "what business problems are we trying to solve in the project".
Kent listed some good resources on Agile methodologies and XP based software development: