16 mar 2009

Manifest Rzemieślnika Oprogramowania


W czasie gdy ja w miarę bezrefleksyjnie oddawałem się swojej drugiej pasji (na obrazku), powstał appendix do manifestu agile. Oryginalny manifest mówił o tym na co w zwinnym podejściu do rozwoju oprogramowania kładziony jest głównie nacisk, a co jest 'tylko' wartościowe. Były to: 
Osoby i Interakcje nad Procesy i Narzędzia
Działające Oprogramowanie nad Szczegółową Dokumentację 
Współpraca z Klientem nad Negocjacjowanie Kontraktu
Odpowiadanie na Zmiany nad Działanie Zgodnie z Planem.

Robert C. Martin już od jakiegoś czasu postulował dodanie jeszcze czegoś, co definiowało by podejście do jakości w projektach/zespołach agile'owych. Sam nazwał to w zeszłym roku 'Craftsmanship over Crap', ale zdaje się, że to jednak nie pasuje (w końcu elementy po prawej miały też przedstawiać jakąś wartość, tyle że mniejszą...) i nie brzmi zbyt poprawnie politycznie. Stąd twórcy appendixu zwanego Manifesto for Software Craftsmanship ubrali różne myśli krążące od pewnego czasu po książkach i blogach agile'owych w ładne słowa i powstało:
Nie tylko Działające Oprogramowanie, ale również Niezła Robota (moje domorosłe tłumaczenie 'well-crafted')
Nie tylko Odpowiadanie na Zmiany, ale również Ciągłe Dodawanie Wartości
Nie tylko Osoby i Interakcje, ale również Społeczność Zawodowców
Nie tylko Współpraca z Klientem, ale również Produktywne Partnerstwa

Manifest mówi, że do osiągnięcia elementów po lewej niezbędne jest istnienie tych po prawej. No więc po kolei:
Żeby oprogramowanie Działało, spełniało swoje zadania i nie wymagało Szczegółowej Dokumentacji, musi być to Niezła Robota - wysokiej jakości oprogramowanie.
Żeby móc odpowiadać na zmiany, trzeba móc ciągle dodawać wartość. A do tego warunkiem sine qua non jest kod łatwo modyfikowalny, o czystej architekturze, zrozumiały.
Osoby odpowiedzialne za projekt tworzą się, kształcą poprzez interakcję z innymi. Z lepszymi od siebie, ale ze słabszymi od siebie również. Do tego niezbędna jest społeczność osób związanych ze sobą zainteresowaniami, pracą, pasją. Stąd potrzeba społeczności profesjonalistów.
W końcu produktywne partnerstwo jako efekt ale i warunek dobrej współpracy. Jeśli firmy szanują się nawzajem, jeśli ufają swojemu profesjonalizmowi i mają jasne, przezroczyste reguły współpracy, takie partnerstwo (czyli równość stron) może być produktywne. Obie firmy mogą osiągnąć swój cel - wzajemne przynoszenie sobie wartości.

Ten manifest, zupełnie jak ten oryginalny, jest idealistyczny. Zakłada dobre chęci, profesjonalizm, budowanie wzajemnego zaufania. To nie środki, ale cel. Coś do czego powinniśmy dążyć całym sobą, ucząc się ciągle i poprawiając. Na początek na naszym małym podwórku jednego projektu, jednego zespołu, jednej aplikacji. Z czasem może uda nam się zarazić tym innych, firmę, społeczność. To dzięki takim właśnie postawom mamy dziś cały ruch agile.

3 komentarze:

Łukasz Lenart pisze...

"Dobra robota" - brzmi jak za czasów realnego socjalizmu :-)

Paweł Lipiński pisze...

Chciałem napisać "Kawał Dobrej Roboty" ale wtedy samo się narzuca "nikomu niepotrzebnej" :)

W ogóle słowo 'craftsmen' na programistów brzmi dość ludycznie, ale ma na celu zniszczenie mitu programisty-artysty, programisty-herosa, programisty-romantyka. Stąd też moja 'niezła robota' :)

Unknown pisze...

Dla mnie bajera - kilka krótkich (równoważników) zdań, a jakie przemawiające do wyobraźni. Aż sobie odnotowałem na boku ku pamięci. Dzięki!

Jacek Laskowski
Notatnik Projektanta Java EE