I surely think that Agile development methodology has an advantage over traditional development methodologies. But I’ve also found some problems in my Agile practices. I want to discuss them and the possible solutions in this article.
1. Do we still need an architect?
I noticed there is no architect in many Agile teams, even in some big projects. I think the possible reason is that Agile doesn’t advocate big design up front. But it doesn’t mean there is no any design at all. There are still requirements, still a design though not heavyweight and a solid architecture is still beneficial. I would suggest some experienced developer will still take the role of an architect.
2. Why is the development work getting slower and more painful as the sprint is evolving?
A project usually goes well in the first several sprints: stories are implemented quickly, system is demoed to customer, everyone is happy. But the situation changes in the sprints later on. The system is becoming complicated and codes are accumulated, even worse, every piece of code has obvious personal imprint so it’s not easy for others to read old codes. Why does this happen? Because Agile suggests every team member have the same responsibility so everyone can work on the same code piece which is great because it improves every one’s understanding of the whole system. But what can we do to make it less painful? Good design, clear codes and refactoring are the keys. Developers should be conscious about the importance of good design and clear codes, especially in medium or big size of projects. Refactoring and unit testing are very useful to make your code clear. If you don’t refactor codes as soon as possible, it will be much more painful as the code size increases. The management also needs to understand the cost and value of refactoring work.
3. Should we pursue the highest unit testing coverage?
Some teams are obsessed about the unit testing coverage. Higher coverage is a good thing of course, but it’s not the ultimate goal of software development. It’s only a useful technology to improve code quality. So more test cases in important codes is useful than test cases on clear and simple codes.
4. Do we need to write document anymore?
Some people may think document is not important any more in Agile. But it’s not true especially in the situations where the development team is not so stable. Believe me, it’s not rare for some core developers to leave the team. Of course, knowledge sharing and transfer help a lot. But a well-written document is also very useful for the new starters. I know it’s not so easy to maintain your document, but it’s a worthwhile job.