Skip to content

Latest commit

 

History

History
206 lines (111 loc) · 3.05 KB

slides.md

File metadata and controls

206 lines (111 loc) · 3.05 KB
title
eXtreme Programming

eXtreme Programming

Discovering through examples


What is eXtreme Programming?


Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements.

source


Yet another agile bullshit?


Quick Reminder!


SCRUM

  • Focus on stories, estimations, priorities, reporting...
  • Targets the project organization, not really its realization.
  • Agile methodology for project managers.

SCRUM

Going from client specifications to prioritized User Stories.


SCRUM

A methodology for writing Jira tickets.


SCRUM

It's an organisational methodology. It describes how to organize the tasks, not how to actually do them.


Kanban?

Just some lightweight SCRUM.


SAFe?

Just some heavy SCRUM.


eXtreme Programming

  • A methodology focusing on how we do stuff.
  • Clearly dedicated to developers.

eXtreme Programming

Takes values from the Agile Manifesto but isn't limited to developers working in an agile environment.


eXtreme Programming

Going from a specified task to the actual source code.

Including analysis, design, architecture, and actually writing the code.


eXtreme Programming

Aiming at reaching the technical excellence part of the agile manifesto.


Why is it needed?


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.


Live Coding


We'll build a simple RPG simulator, with really easy rules. First with a naive implementation, then step by step with XP.


Results


  • Pair Programming
  • KISS
  • TDD
  • Refactoring

Naive Implementation

  • Quick
  • Looks easy

Naive Implementation

  • 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!


TDD

  • Tested
  • Takes more time
  • Trustable

TDD takes more time, but that's the cost of your software's quality.



Thank you!

Questions?