Getting Started
- The Pomodoro Technique
- Manifesto for Agile Software Development
- Principles behind the Agile Manifesto
- Manifesto for Software Craftsmanship
Session 1: SOLID and Clean Code
- SOLID principles
- Start the Racing Car Katas
- find SOLID violations
- Clean Code
- Chapter 1: Clean Code
- Chapter 2: Meaningful Names
- Chapter 3: Functions
- Chapter 6: Objects and Data Structures
- Chapter 7: Error Handling
- Chapter 10: Classes
- The Pragmatic Programmer
- Chapter 2: A Pragmatic Approach
- Chapter 5: Bend or Break
- Chapter 6: While You Are Coding
Session 2: Introduction to TDD
- TDD by example: The Money Example
- Clean Code
- Chapter 9: Unit Tests
Session 3: Working with Legacy Code
- Working Effectively with Legacy Code
- Chapter 8: How Do I Add a Feature ?
- Start the GildedRoseKata
- Code Coverage
- Add the new feature
- No refactoring!
- Working Effectively with Legacy Tests
Session 4: Refactoring
- Martin Fowler @ OOP2014 "Workflows of Refactoring"
- Refactoring: Improving the design of existing code
- Chapter 1: Refactoring, a First Example
- Chapter 2: Principles in Refactoring
- Chapter 3: Bad Smells in Code
- Testing and Refactoring Legacy Code
- Takes the code of the session 2 and try to do refactoring (find code smells)
- Try the TennisRefactoringKata (find code smells)
Session 5: TDD and "Friends"
- How to Write Clean, Testable Code
- Good Design is Easily-Learned
- Try to learn and repeat these Katas autonomously
- Unit Testing
- Growing Object Oriented Software, Guided by Tests
- Chapter 1: What Is the Point of Test-Driven Development?
- Chapter 2: Test-Driven Development with Objects
- Chapter 4: Kick-Starting the Test-Driven Cycle
- Chapter 5: Maintaining the Test-Driven Cycle
- Chapter 6: Object-Oriented Style
- Chapter 7: Achieving Object-Oriented Design
- Chapter 8: Building on Third-Party Code
- Clean Code
- Chapter 8: Boundaries
- Mocks Aren't Stubs
- Try the StringCalculatorKata
- With interactions
Session 6: Hands On Erlang
You are free to replace Erlang with whatever programming language you want to dive in
- Erlang resources
- Programming Erlang (2nd Edition)
- Other useful resources about Erlang: Spawned Shelter!
- Try these Katas in Erlang:
Session 7: Deploy your application
- Read The Twelve-Factor App before you start
- Write an
example application
- Publish the code on a
GitHub
repository - Organize your work in User Stories (e.g. Trello)
- Setup a development environment (e.g. Vagrant/Ansible)
- Setup a CI environment (e.g. Travis)
- Deploy your application (e.g. Heroku)
- Test the deployed application
- Continous Delivery
- Describe your Continuous Delivery process (Can it be improved ? How ?)
Session 8: Refinements and IDD
- TDD by example
- Patterns for Test-Driven Development
- Clean Code
- Chapter 12: Emergence
- Interaction Driven Design:
- Hexagonal architecture
- Looking at the
example application
of the session 7:- What are your considerations ?
- Can you apply
IDD
? If yes propose the changes.
- Further topics
- Try the Social Networking Kata