Agile Development, in particular, eXtreme Programming (XP), has been gaining a lot of momentum because it can effectively address the problems plaguing software development such as mis-understanding customers' requirements, missing deadlines, over-budget, conflicts between customers and developers and poor maintainability of legacy systems.
However, it is so difficult to teach the skills needed to be agile. In 2002, we, the Macau Productivity and Technology Center (CPTTM), started to hold courses on XP and Object Oriented design to teach the skills by hiring a well known software training and consulting company to do the teaching. While the instructor was very professional and instructive and the students were happy, they didn't acquire the skills taught.
We knew that it was because the concepts involved were abstract and it needed far more exercises for the students to practice in the courses. Therefore, we decided to develop our own training materials. In particular, we selected the 20% of the skills in agile development that deliver 80% of the value, ignoring the other useful but non-essential skills. Then we explained those essential skills in terms of examples and added a lot of real world examples as exercises. After adopting this set of materials, the students really acquired the skills taught.
In order to share this with the community, we have organized the training materials into this book: Essential Skills for Agile Development.
The book includes the following chapters: (1) Removing duplicate code. (2) Turning comments into code. (3) Removing code smells. (4) Keeping code fit. (5) Take care to inherit. (6) Handling inappropriate references. (7) Separate database, user interface and domain logic. (8) Managing software projects with user stories. (9) OO design with CRC cards. (10) Acceptance test. (11) How to acceptance test a user interface. (12) Unit test. (13) Test driven development. (14) Team development with CVS. (15) Essential skills for communications. (16) Pair programming.
About the Author
Ka Iok 'Kent' Tong, has a Master degree in Computer Science from the New South Wales University, Sydney, Australia. He was the winner of the Macao Programming Competition (Open Category) In 1992. He has been involved in professional software development, training and project management since 1993. Since 2002 he has been actively promoting Agile Development in Macao.