Starway to Orione: the Orione Team Learning Path
This is the learning path every new developer has to follow when joining the XPeppers team.
Please feel free to fork and contribute, add materials, fix the existing ones and propose new stuff.
Main learning path
- Flat Organizations:
- Read chapters 1, 4, 5, 7 of XP Explained
- Read chapters 2, 6 of XP Explained
- Iterative and Incremental Development:
- For italian speakers, Watch "Perché è così difficile fare Extreme Programming" by Matteo Vaccari
- Pair Programming
- Agile Mindset:
- What Exactly is the Agile Mindset?
- What Exactly is the Agile Mindset?
- Read The Pomodoro Technique paper
- 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 then do it (coding). Everything else does not matter!"
2) Testing and TDD
Read chapter 9
"The Three Laws of TDD"of Clean Code
Watch 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 - 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 watched, 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"
Watch 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
3) Clean code
- Read the article Keep It DRY, Shy, and Tell the Other Guy
- Read the article You Aren't Gonna Need It
- Tell Don't Ask principle
- Do the Kata String Calculator
- Read first ten chapters of Clean Code
- SOLID principles
- Start the Racing Car Katas
- find SOLID violations
- Read Names objects after things, not actions! by Matteo Vaccari
- Watch Venkat Subramaniam's talk about "Core Design Principles for Software Developers"
- Read The Pragmatic Programmer
- Watch Is SOLID A Good Idea
- Watch Responsive Design
- Extra: Follow the "Clean coders" screencasts by Robert C. Martin
- Watch Martin Fowler @ OOP2014 "Workflows of Refactoring"
- Read first three chapters of Refactoring: Improving the design of existing code
- Watch Testing and Refactoring Legacy Code
- Try the GildedRoseKata
- Code Coverage
- Code Refactoring
- Add the new feature
- Try the TennisRefactoringKata (find code smells)
5) TDD and "Friends"
- Read The Four Elements of Simple Design
- 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 Overcoming the one weakness of OOP
- Read Object Calisthenics
- Read about the Practical Test Pyramid
- Watch Ian Cooper - TDD, where did it all go wrong
- Watch J.B. Rainsberger - Integrated Tests Are A Scam
- Watch Sandro Mancuso - Testing and Refactoring Legacy Code
- Watch Sandro Mancuso - Crafted Design
- Watch Mock Roles Not Object States - Paper
6) Hexagonal architecture
- Read https://web.archive.org/web/20170916120520/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
7) Systems architecture
- Read chapters about Stability 3, 4, 5 and Capacity 8, 9, 10 of Release It!
Beyond Software Development
1) Becoming a "full-stack" Agile Developer
- Watch 7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development by J.B. Rainsberger
2) Software development economics
- Read chapter 3
"Economics of Software Development"of XP Explained
- Read chapter 7, section with title
"Tools 22": Contractsof Lean Software Development: An Agile Toolkit
Side learning paths
- "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