I am tasked to conduct a training for an upcoming team of 20 Java developers for a new project. The project owner wants us to use state of the art development techniques like TDD and CI. The developers are skilled Java developers but have minor to no experience with unit testing, and most likely only superficial experience in refactoring. So the overall project manager scheduled a 3 day training for all developers, and some project managers, to learn the new techniques, get everybody in a shared mindset and get started.So I have 3 days (aka 20 hours) to teach themSoftware Craftsmanship deleted due to answerUnit TestingTDD/BDDRefactoringStatic Code AnalysisCIObviously I can't teach them everything. So my questions is how to distribute the available time on these (and other) topics, what to focus on and what do omit, and how to best conduct a training session based on these topics?
How to conduct a 3 days training on current techniques like TDD and CI
java;tdd;training;continuous integration
Software CraftsmanshipComes with experience. I'd exclude this from training.TDD/BDD & Unit TestingI would run these together and I would spend 2 days just on that. There is an awful lot to cover here. You have to demonstrate how you can guide design by tests (unit tests, integration tests and functional tests). You would also have explain how to configure/use mocking frameworks and custom matching frameworks such as nHamcrestRefactoringYou can teach some re-factoring techniques, code smells, but I don't think that you can teach how to separate concerns. This comes with experience.Static Code AnalysisFew hours to state its importance in CI process, how to run the analysis and how to interpret its feedback.CII'd spend few hours explaining importance of CI in medium and large size organizations, but there is only so much you can teach. We have different people working on different aspects of CI and they have been doing it for many years. I don't think that you can train it in such a short period of time.