Extreme Programming (XP), programowanie ekstremalne to metodyka wywodząca się z rodziny zwinnych. Główną cechą jej jest przyjęcie pozycji programisty i zgodnie z tym – budowanie środowiska pracy oraz sposobu zarządzania w sposób wysoko efektywny. Metodyka ta jest zdefiniowaną metodyką tworzenia oprogramowania. Jej zestaw praktyk mimo pewnych różnic w stosunku do metod znanych z tradycyjnej inżynierii oprogramowania, stawia przed sobą takie same cele. W związku z tym, że ukierunkowane są na różne obszary aktywności, podzielono go na cztery wartości: prostota, komunikacja, odwaga, informacja zwrotna oraz na dwanaście praktyk.
Dwanaście zasad, których należy przestrzegać wykorzystując metodykę XP to:
- Planowanie - plan powinien zawierać określenie zakresu całego projektu, jednak najważniejszym punktem na który szczególnie należy zwrócić uwagę to funkcjonalności będące kluczowymi dla klienta, oprócz tego plan musi zawierać terminy zakończenia kolejnych iteracji i opisy produktów z każdej z nich.
- Krótkie iteracje - programowanie powinno odbywać się w krótkich i częstych iteracjach w celu bieżącego przedstawiania wyniku pracy klientowi.
- Metafora - podczas wytwarzania oprogramowania powinno być określone jednoznaczne słownictwo w celu wyeliminowania nieporozumień i zamieszania.
- Prosty projekt systemu - projekt w założeniach powinien być w najwyższym stopniu prostym projektem.
- Testowanie - jest to bardzo istotny element, przeprowadzane testy muszą być określone jeszcze przed rozpoczęciem implementacji, czasem nawet przed stworzeniem danego projektu dzięki temu wczesne zidentyfikowanie możliwych błędów, tworzony jest projekt o znacznie wyższej jakości i funkcjonalności.
- Refaktoryzacja - refactoring, poprawki kodu będące bardzo ważnym punktem, szczególnie w systemach w których występują częste iteracje, ma to na celu doprowadzenie kodu do odpowiedniej jakości.
- Programowanie w parach - kod oprogramowania tworzony jest w dwuosobowych zespołach, polega to na tym, że jedna osoba odpowiedzialna jest za pisanie kodu, natomiast druga kontroluje go pod względem poprawności i proponuje ewentualne poprawki, dzięki temu zabiegowi kod jest przemyślany.
- Wspólna własność kodu - dotyczy to par programistycznych, które po zakończeniu poszczególnych etapów projektu, mogą zamienić się partnerami w celu dokładnego poznania innych fragmentów systemu co rozbuduje w programistach dobre pojęcie na temat całego oprogramowania.
- Ciągła iteracja - zapewnia na szybkie wykrycie błędów co znacznie zwiększa szybkość procesu naprawczego, dzięki temu między innymi unika się nakładaniu się błędów.
- Czterdziestogodzinny tydzień pracy - zasada ta mówi o tym, że wszelkie nadgodziny powinny być wyeliminowane w celu zwiększenia wydajności programisty, czas pracy powinien być dogodny dla samego pracownika jednak nie zapominając o standardowym trybie pracy w biurze.
- Udział klienta w zespole - na każdym etapie tworzenia projektu, pojawia się możliwość konsultacji z klientem, ma to na celu sprawne rozwiązywanie ewentualnych niejasności, które mogłyby spowodować niepotrzebne postoje.
- Standard kodowania - zasada ta polega na przyjęciu jednolitych standardów kodowania, które znacznie pomagają programistom łatwiejsze zrozumienie się w trakcie tworzenia kodu.
Każda z zasad wymienionych powyżej związana jest z innymi aspektami tworzenia kodu. W związku z różnym wykorzystaniem, możemy podzielić je na cztery kroki: planowanie, projektowanie, implementacja i testowanie. Kolejność ich jest zupełnie przypadkowa.