title |
---|
eXtreme Programming |
Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements.
- Focus on stories, estimations, priorities, reporting...
- Targets the project organization, not really its realization.
- Agile methodology for project managers.
Going from client specifications to prioritized User Stories.
A methodology for writing Jira tickets.
It's an organisational methodology. It describes how to organize the tasks, not how to actually do them.
Just some lightweight SCRUM.
Just some heavy SCRUM.
- A methodology focusing on how we do stuff.
- Clearly dedicated to developers.
Takes values from the Agile Manifesto but isn't limited to developers working in an agile environment.
Going from a specified task to the actual source code.
Including analysis, design, architecture, and actually writing the code.
Aiming at reaching the technical excellence part of the agile manifesto.
Cause writing a code base isn't easy!
Writing a code base which allows regular changes is even harder.
In a not agile context, developers have specifications to work with. They can build a solid code base from their analysis, design and architecture.
In agile, they have short iterations, and unfinished specifications...
We expect from them that they code, quick. And whatever they built may change.
Which means they need to be trained and efficient. Otherwise, any agile approach won't work.
Agile isn't making projects successful anyway. So focus on your project's quality instead of methodologies.
Remember quality takes time and effort.
A 3 days task made in 2 days costs 5 days.
We'll build a simple RPG simulator, with really easy rules. First with a naive implementation, then step by step with XP.
- Pair Programming
- KISS
- TDD
- Refactoring
- Quick
- Looks easy
- Maybe bugs?
- No corner cases
- No tests
- Can't be tested
- Messy and not readable
Our specification looks just fine isn't it?
Remember DEEP and INVEST?
Well, it's not detailed enough and moreover it's not testable!
TDD allows us to spot problem and to fix them!
TDD also stimulates creativity because we're talking about examples and real cases!
- Tested
- Takes more time
- Trustable
TDD takes more time, but that's the cost of your software's quality.