This is the learning path every new developer has to follow when joining the XPeppers team.
This path reflects our team's culture and values, which have their roots in the agile values and principles, as well as in those of XP, and in the software craftsmanship manifesto.
Please feel free to fork and contribute, add materials, fix the existing ones and propose new stuff.
- Read The Pomodoro Technique paper
- Read first three chapters of XP Explained
- Read first chapter of "Applying UML and Patterns"
- Try to estimate the time needed to study that chapter (using the pomodoro technique)
- Answer (for example on the team's wiki pages)
- What is analysis?
- What is design?
- What's the difference between them?
- What is design for?
- in other words, how would you reply to the following statement: "I just need to understand what to do (analysis) and than do it (coding). Everything else does not matter!"
- Read the article Keep It DRY, Shy, and Tell the Other Guy
- Tell Don't Ask principle
- read the article Tell, Don't Ask
- read the article The Art of Enbugging
- Do the Kata String Calculator
-
See the Clean Code Talks series: these four videos (and the related blogpost series) are really valuable to learn how to design for testability.
-
Watch "The Clean Code Talks -- Unit Testing" video (~ 30 minutes) [slides]. Then read his blogpost.
-
Watch "The Clean Code Talks -- Inheritance, Polymorphism, & Testing" video (~ 40 minutes). Then read his blogpost (there you can find the slides too).
-
Watch "The Clean Code Talks - Don't Look For Things!" video (~ 35 minutes) which talks about the Dependency Injection pattern. Then read his blogpost (there you can find the slides too).
-
Watch "The Clean Code Talks - "Global State and Singletons" video (~ 55 minutes). Then read his blogpost (there you can find the slides too).
-
For each video you see, write a short post (e.g. on your public gist) on
- what you learned
- what puzzled you most?
- Read Miško Hevery's guide on "Writing Testable Code"
-
-
See Lets Play on TDD by James Shore
-
For italian speakers, Piergiuliano Bossi's screencasts on TDD are a good starting point: there are five basic lessons and a final video on emergent design.
-
Do the Sales Kata in TDD
-
Extra: Follow the The World's Best Intro to TDD by J. B. Rainsberger
- Read first ten chapters of Clean Code
- SOLID principles
- Start the Racing Car Katas
- find SOLID violations
- Read The Pragmatic Programmer
- See Is SOLID A Good Idea
- See Responsive Design
- Extra: Follow the "Clean coders" screencasts by Robert C. Martin
- Read http://alistair.cockburn.us/Hexagonal+architecture
- Read http://matteo.vaccari.name/blog/the-hexagonal-architecture
- Read http://matteo.vaccari.name/blog/archives/154
- Read http://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the-test-automation-pyramid
- Read http://c2.com/cgi/wiki?HexagonalArchitecture
- See Martin Fowler @ OOP2014 "Workflows of Refactoring"
- Read first three chapters of Refactoring: Improving the design of existing code
- See Testing and Refactoring Legacy Code
- Try the GildedRoseKata
- Code Coverage
- Code Refactoring
- Add the new feature
- Try the TennisRefactoringKata (find code smells)
- How to Write Clean, Testable Code
- Good Design is Easily-Learned
- Try to learn and repeat these Katas autonomously
- Read the first eight chapters of Growing Object Oriented Software, Guided by Tests
- Mocks Aren't Stubs
- Encapsulation e Information Hiding:
- Read The Four Elements of Simple Design
- Read Overcoming the one weakness of OOP
- Read Object Calisthenics
- See Ian Cooper - TDD, where did it all go wrong
- See J.B. Rainsberger - Integrated Tests Are A Scam
- See Sandro Mancuso - Testing and Refactoring Legacy Code
- See Sandro Mancuso - Crafted Design
- See Mock Roles Not Object States
- "Patterns of Enterprise Application Architecture" by Martin Fowler
- "Working Effectively with Legacy Code" by Micheal Feathers
- "Understanding the Four Rules of Simple Design" by C.Haines