Last week, I participated Craig Larman's one-week course "Applying Object Design with Programming & TDD". It is really a terrific course because it was so practical and the methods Craig Larman introduced is so effective that even in a small example project, his methods showed their value.
One good point of Craig's methods is that it focuses on effectiveness, the effectiveness of communication, the effectiveness of analysis, the effectiveness of design. So our practice was somewhat not exactly the same as textbooks, just for effectiveness. For example, Craig emphasized that UML is not for documentation, is only a tool of analysis and design. Software designers should always take UML as a support for communication, analysis and design. So this course, we did not use any UML software to build our model, because in a team work, it is not the most effective way. We draw sketches on the walls, and in the process of discussion, we changed it a lot. We found it really worked! We discussed requirements, domain models in group, and did programming in pairs (and switch pair frequently), our working efficiency was improved a lot. And the code now looks much better than what we did before.
Another point impressed me a lot was Craig's description of 'Agile'. In our current work style, we write documents, then review it; we write code, then review it. We always follow the way: do something --> review. But as a human being, the memory and understanding of something will be lost in nonlinear way along with time. Sometimes, even yourself cannot remember your own work. So why not we eliminate the gap between 'do something' and 'review'. We can involve the product champion when we write the documents, so that we don't need a separate document review, and eliminate the misunderstandings as early as possible; we can do the tests in the same time when we write code(TDD), so that we don't even need a separate testing stage ("No quality control is best quality control"); we can do code review when we write code(pair programming), so that we don't need spending extra time reviewing code.
I may participate Craig Larman's more advanced course next year, and I am really looking forward to it
By the way, in Craig Larman's book 'Applying UML and Patterns', he mentioned that he used to be a singer in 1970s, that in some degree explains why he always played very fashioned music in our course break
0 blog comments below