Getting Started
- The Pomodoro Technique
- Manifesto for Agile Software Development
- Principles behind the Agile Manifesto
- Manifesto for Software Craftsmanship
Week 1: SOLID and Clean Code
- SOLID principles
- SRP: Single Responsability Principle
- OCP: Open-Closed Principle
- LSP: Liskov Substitution Principle
- ISP: Interface Segregation Principle
- DIP: Dependency Inversion Principle
- Start theRacing 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
Week 2: Introduction to TDD
- TDD by example : The Money Example
- Clean Code
- Chapter 9: Unit Tests
Week 3: Working with Legacy Code
- Working Effectively with Legacy Code
- Chapter 8: How Do I Add a Feature ?
- Start theGildedRoseKata
- Code Coverage
- Add the new feature
- No refactoring!
- Working Effectively with Legacy Tests
Week 4: Refactoring
- Martin Fowler @ OOP2014 "Workflows of Refactoring"
- Refactoring: Improving the design of existing code
- Chapter 1: Refactoring, a First Example
- Example Code
- Chapter 2: Principles in Refactoring
- Chapter 3: Bad Smells in Code
- Chapter 1: Refactoring, a First Example
- Testing and Refactoring Legacy Code
- Example Code
- Takes the code of the week 2 and try to do refactoring (find code smells)
- Try the TennisRefactoringKata (find code smells)
Week 5: TDD and "Friends"
- How to Write Clean, Testable Code
- Good Design is Easily-Learned
- Try to learn and repeat these Katas autonomously
- TheBowlingGameKata
- TheRomanNumeralsKata
- 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
Week 6: Hands On Erlang
You are free to replace Erlang with whatever programming language you wants to dive in
- Erlang resources
- Programming Erlang (2nd Edition)
- Other useful resources about Erlang: Spawned Shelter!
- Try these Katas in Erlang:
- TheBowlingGameKata
- RomanNumeralsKata
- FizzBuzzKata
- StringCalculatorKata
- Follow this video
- TennisKata
Week 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 ?)
Week 8: Refinements and IDD
- TDD by example
- Patterns for Test-Driven Development
- Clean Code
- Chapter 12: Emergence
- Crafted Design:
- https://vimeo.com/107963074
- https://vimeo.com/128596005
- Notes
- Hexagonal architecture
- Looking at the
example application
of the week 7:- What are your considerations ?
- Can you apply
IDD
? If yes propose the changes.
- Further topics
- Greg Young - CQRS and Event Sourcing - Code on the Beach 2014
- Bryan Hunter - CQRS with Erlang
- Try the Social Networking Kata