9 lipca 2009

Co to znaczy "dobrze wykonać projekt"?

Inspirowany co nieco konferencją na której ostatnio zdarzyło mi się gościć, a właściwie tym co tam usłyszałem, zamyśliłem się co nieco nad tym, co to właściwie znaczy „dobrze wykonać projekt”. Widziałem na konferencji świetną prezentację o programowaniu sterowanym testami – brawa dla prelegenta; na innej prelekcji z kolei słyszałem uszczypliwe żarty ze strony publiki wykpiwającej praktyki wykonywania poprawek (tzn. bug-fixów) bezpośrednio na systemie produkcyjnym. Ktoś tam jeszcze mówił o ciągłej integracji (na tej prelekcji nie byłem), ktoś inny w jeszcze inny sposób promował techniki i sposoby tworzenia „dobrego” oprogramowania. Mam wrażenie, że wszyscy jako aksjomat przyjmują, że aplikacja powinna być zrobiona przede wszystkim „dobrze”, możliwie kompleksowo przetestowana, możliwie jak najprzyzwoiciej wdrożona. Tymczasem ja mam wrażenie, że w rzeczywistości rzadko chodzi o osiągnięcie właśnie tych celów. Właściwie wymienione powyżej to raczej środki do pewnego celu a nie same cele, tylko czy rzeczywiście zastanawiamy się nad tym, co jest prawdziwym celem? Oczywiście wszyscy mamy potrzebę odczuwania zadowolenia z wykonywanej przez siebie pracy – a satysfakcję mamy przeważnie z pracy wykonanej dobrze – tyle tylko, że może nie do końca potrafimy sobie zdefiniować, co to „dobrze” oznacza. A może dobrze w pewnej konkretnej sytuacji oznacza przede wszystkim szybko? Może firma która zleca nam wykonanie jakiegoś rozwiązania ma w planach zakup albo wykonanie poważnego systemu w przyszłości a póki co chcą tylko czegoś taniego i wykonanego szybko, po to by móc dodać do swej oferty możliwie szybko nowy produkt; po to by pomóc sobie samemu zdefiniować wymagania funkcjonalne dla aplikacji docelowej? A może są jeszcze jakieś inne powody? A może nie powinniśmy się zastanawiać dlaczego? Może po prostu powinniśmy słuchać i starać się odpowiadać na rzeczywiste zapotrzebowania, zgłaszane przez tego, który za implementację nowego rozwiązania zapłaci? To co staram się powiedzieć można de facto wyrazić w jednym zdaniu – dopasowujmy sposób pracy (sposób wykonywania i wdrażania rozwiązań) do faktycznych celów i istniejących założeń, nie do aksjomatów narzuconych nam nie wiadomo jak, kiedy i przez kogo. Pamiętajmy przy tym aby nie popadać ze skrajności w skrajność. Gdybyśmy rzeczywiście zechcieli kiedyś pokusić się o dostarczenie rozwiązania-prowizorki, nie zapominajmy, że prowizorki często są najtrwalsze. A jeśli już zdecydujemy się na wypuszczenie naprędce upichconego gniota, to liczmy się z tym, że ktoś kiedyś – nie rozumiejąc okoliczności – zapyta… „kto tą aplikację (…) wykonał”? No ale sztuka kreowania wizerunku i zabezpieczania się przed potencjalnymi atakami to już inny temat.

1 komentarz:

Unknown pisze...

Merytorycznie post bardzo dobry:)

Jedna uwaga- można prosić o dodanie podziału na paragrafy? Ciężko się czyta tekst bez ani jednego wcięcia.