Ekstremalus programavimas yra vienas iš naujausių programinės įrangos kūrimo metodų. Juo siekiama patobulinti tradicinius programinės įrangos kūrimo metodus, pabrėžiant verslo vertę ir kokybę. Šiuo programavimo metodu bandoma tiekti išbaigtą ir be klaidų programinę įrangą, atitinkančią verslo poreikius, per kelias savaites.
Tradiciniu programinės įrangos kūrimo būdu projektas trunka daug mėnesių ar metų. Analitikų komanda stengiasi gauti visus vartotojų reikalavimus. Tada dizainerių rinkinys sukuria plačią sistemos struktūrą. Po to programuotojai užkoduoja sistemą toje struktūroje. Tada bandytojai užtikrina, kad kodas būtų be klaidų ir atitiktų reikalavimus.
Pagrindinė tradicinės kūrimo problema yra ta, kad patys vartotojai ne visada aiškiai supranta savo reikalavimus, o reikalavimai dažnai keičiasi per ilgesnį laiką, per kurį programinė įranga sukuriama. Skirtingi žmonės dalyvauja skirtinguose etapuose, o dokumentacija beveik niekada nėra baigta, todėl vėlesniuose etapuose žmonės negali suprasti ankstesnių etapų žmonių mąstymo proceso. Tai lemia žemos kokybės programinę įrangą ir mažą verslo vertę.
Paprastai ekstremalus programavimas apima dažną programinės įrangos pristatymą per kelias savaites. Motyvacija yra pateikti visiškai veikiančią programinę įrangą, kuri patenkintų kai kuriuos esminius verslo poreikius. Reikalavimų pasikeitimas įtraukiamas į kitą pristatymą.
Ekstremalus programavimas arba sutrumpintai XP pabrėžia kokybę rašydamas testus prieš programavimą. Kai programinė įranga rašoma, kodas peržiūrimas ir išbandomas daug kartų per dieną. Visa programinė įranga surenkama ir išbandoma vieną ar net kelis kartus per dieną. Tai daroma siekiant užtikrinti, kad nė viena programinės įrangos dalis nesugadintų sistemos.
Vienas iš gerai žinomų ekstremalaus programavimo aspektų yra porinis programavimas, kai du programuotojai dirba kartu viename kompiuteryje. Dėl šio požiūrio programinės įrangos kūrimo procesas, projektavimas ir kodavimas yra tikrinami nedelsiant. Atsakomybė už bet kokios programinės įrangos kūrimą pasidalijama.
Taikant šį kūrimo metodą, programinė įranga pradedama nuo paprasto dizaino ir tobulėja taip, kad patenkintų papildomus verslo poreikius. Funkcijų kūrimo vengiama tol, kol jos iš tikrųjų tampa svarbiu prioritetu. Pagrindinis dėmesys skiriamas komandiniam darbui kuriant išbaigtas sistemas, todėl kiekvienas komandos narys kasdien atlieka analitiko, dizainerio, programuotojo ir testuotojo vaidmenį. Programavimo komandoje vyksta intensyvus bendravimas, taip pat tarp programuotojų ir vartotojų, kuriems pristatoma programinė įranga.
Taikant šį programavimo metodą, labai pabrėžiama pertvarkymo sąvoka. Pertvarkymas yra vidinis kodo tobulinimas, siekiant suteikti kodui gerą struktūrą ir palengvinti jo supratimą nepaveikiant išvesties. Tikimasi, kad visas darbas, susijęs su ekstremaliu programavimu, bus atliktas tvariu tempu, be vėlyvų naktų ir savaitgalių. Tai padidina moralę ir sumažina klaidų tikimybę.
Ekstremalus programavimas gavo savo pavadinimą iš idėjos, kad teigiami gerų programuotojų darbo aspektai yra perkeliami į kraštutinumus, kad būtų galima išnaudoti naudą. Šis kūrimo būdas buvo gana veiksmingas daugelyje programinės įrangos sistemų. Kadangi tai vis dar nauja metodika, jos praktika nuolat tobulinama.