Kryzys wartości - odsłona trzecia i ostatnia

Ciąg dalszy dywagacji (powiadają, że straszliwych) na koniec roku.

Przez ostatni tydzień nie zostałem przekonany o błędności poprzednich wywodów, pozwolę sobie zatem uznać wątpliwości co do uczciwości mojego zawodu za uzasadnione. Jednak mimo wszystko jest to zawód, który uprawiam od lat i jest to sposób, w jaki opłacam karmę dla naszych kotów... W takiej sytuacji widzę dwa wyjścia:

  • zwariować — przy aktualnej kondycji świata i przy tym, co opowiadają w wiadomościach, wydaje się, że ta opcja została już dawno wykorzystana,
  • znaleźć rozsądne usprawiedliwienie i samorozgrzeszenie.

usprawiedliwienie numer jeden — ja tu tylko sprzątam

W komentarzu do poprzedniego wpisu Stronger napisał:

W pracy jestem robotnikiem. Tam produkuję kod, tworzę zaś niewiele. Czemu? Produkuję w oparciu o niekiedy kiepski projekt, ograniczające założenia, zgodnie z praktykami, które utrzymywane są tylko i wyłącznie dla zachowania konsekwencji, bywa, że głupiej.

Nie mam jednak wyrzutów sumienia gdy user zmuszony zostaje przez "górę" do korzystania z tego softu. [...] Ja robię swoją robotę możliwie najlepiej balansując pomiędzy harmonogramem, spodziewaną funkcjonalnością i zdrowym rozsądkiem.

Pięknie... Tylko, że taką wymówką może się zasłaniać programista w roli kodera — pracownika fizycznego, nawet nie najemnika, bo najemnik jest niejako z definicji specjalistą o „załatwiania spraw”[1]. Rola „robotnika” jest w tej sytuacji najwygodniejsza, oczywiście, ale również najmniej odpowiedzialna, najbardziej zastępowalna i generalnie najkrótsza. A co zrobić w sytuacji kiedy samemu jest się odpowiedzialnym za ten „kiepski projekt” i „głupią konsekwencję” lub (współ)odpowiedzialnym za harmonogram taki, jaki on jest?

Generalnie to jest właśnie najtrudniejsze — świadoma produkcja oprogramowania, to znaczy taka sytuacja, w której wiesz czego, jak i po co potrzebuje Klient, oraz wiesz co, jak i na kiedy może wytworzyć Zespół. I wiesz, że to nie jest to samo. Oczywiście, że masz mnóstwo wymówek — masz szefa, który jest politykiem i myśli na zupełnie innym poziomie, handlowiec sprzedał Twój system zanim w ogóle o nim usłyszałeś i nie ma dnia by nie potwierdziły się słowa klasyka:

death-march projects occur because senior managers are Machiavellian bastards and/or because our users are naive and unrealistic.

A jednak te wszystkie wymówki są łagodnie mówiąc słabe, ponieważ ta praca polega właśnie na funkcjonowaniu w takim a nie innym środowisku. „Jestem robotnikiem” to przypadek wręcz komfortowo banalny.

modne rozwiązanie, które rozwiązaniem nie jest

Temat Open Source i Wolnego Oprogramowania przy okazji rozważań analogicznych do powyższych pojawia się niemal automatycznie. Abstrahując od faktu, że pojęcia te są nadzwyczaj często źle rozumiane, nie rozumiane w ogóle lub przynajmniej mylone, nie stanowią one wcale rozwiązania wspomnianych problemów.

Są to co prawda idealne rozwiązania dla idealnego świata, ale podstawą moich wątpliwości jest właśnie fakt prowadzenia działalności polegającej na sprzedawaniu oprogramowania jako produkt i zapewnieniu klientowi ciągłości i poprawności obsługi jego biznesu. Klienta nie interesuje fakt, że może dany program zmienić, dostosować i używać dowolnie, ponieważ zmieniać ani dostosowywać nie umie, ani nie chce. Związane z tym zmniejszenie odpowiedzialności producenta nie interesuje go tym bardziej — klient płaci, klient wymaga. A zatem przejście na Wolne Oprogramowanie oznacza profilaktykę ekstremalną na pograniczu eutanazji. To tak jakby zrezygnować z operacji rannego pacjenta w celu uniknięcia powikłań pooperacyjnych...

Reasumując ... Nie, wniosków nie będzie... Bowiem

programowanie jest [...] smolistym grzęzawiskiem [...] daje radość, ale sprawia ból.

Jest. I tyle.

[1]I'm Winston Wolf, I solve problems.;-)

Komentarze

#1 | 2004.12.31 15:53 | Braun

Nie zostaje nic innego, jak robić swoje. Z punktu widzenia optymisty branża w końcu dojrzeje (bo co do tego, że nie jest dojrzała, chyba wszyscy się zgodzimy). Myślę, że będzie podobnie jak z samochodami: kiedyś pewnie nikogo specjalnie nie dziwiła eksplozja silnika czy coś w tym stylu. Dziś parametry są wyśrubowane, firmy konkurują ze sobą głównie stylistyką klamek, a jakość silnika czy bezpieczeństwo jest takim banałem, że nawet się o nich nie wspomina.

Mam wrażenie, że oprogramowanie dopiero wychodzi ze swojego pionierskiego okresu. Mnożą się metodologie i języki programowania, ale to nie będzie trwało wiecznie. Na dodatek klienci często sami nie wiedzą, czego chcą. Nie mówię, że w przyszłości każdy CEO będzie miał w paluszku Javę, C#, czy co tam jeszcze ludzie wymyślą - nie o to chodzi. Ale klienci będą wiedzieć dokładnie, CO program ma robić (a nie JAK). Chodzi mi o świadomość możliwości technologii; jaka ta świadomość jest dziś - każdy widzi.

Możliwości techniczne realizacji i zapewnienia jakości pojawią się z czasem, a może już są. Jeśli dodamy do tego konkurencję (akurat co do tego, czy w przyszłości faktycznie będzie ona istnieć, można już mieć większe wątpliwości), okaże się, że sytuacja jest w miarę zdrowa: klienci będą traktować jakość jako niezbędny składnik programu, a konkurencja przeniesie się na gdzie indziej (wygląd ikonek? :) ).

Gdybym był pesymistą, dodałbym, że zanim się tak stanie, to pisaniem programów już od dawna będzie zajmować się jakiś HAL 9000 ;).

#2 | 2005.01.03 13:26 | str()

Poczułem się wywołany do tablicy. Staję oto i mówię ;-)
Przede wszystkim, to nie mam tak dramatycznego nastawienia do niedomagań moralnych branży. Śródtytuł zamieniłbym zatem z "ja tu tylko sprzątam" na "ja tu sprzątam jak najlepiej potrafię". Zgadzam się, że wyrobnik kodu to wygodne (choć niezbyt prestżowe) stanowisko. Jednak gdy oczekuje się ode mnie generowania kodu właśnie - robię to tak, żeby mi się łatwo testowało, czyli dobrze, najlepiej jak mogę, nie unikając konsultacji a nawet jakiegoś modelowania problemu (tak tak, wiem, że włącza Ci się reality check z komunikatem "harmonogram", ale patrz dalej). Na szczęście mój zespół i jego szeryf jest dość rozsądny i zna koszty rozwiązań dobrych i szybkich. Zdecydowanie woli te pierwsze.
Gdy zaś jestem projektantem lub urządzamy party konsultacyjne staram się swoje (najlepsze jakie potrafię) pomysły przesączyć do projektu. Staram się nie godzić na "głupią konsekwencję" ani "kiepski projekt" (a w żadnym wypadku nie gapić się w desperackim milczeniu), w najgorszym przypadku oferując opakowanie istniejącego rozwiązania w jakiś adapter. Oczywiście zawsze pomysł może przepaść, bądź z uwagi na koszty bądź dlatego, że nie potrafię go do końca wytłumaczyć, ale jestem (uwaga, zbliża się kwintesencja) - po pierwsze primo: w porządku wobec siebie (jestem zdrowy), po drugie primo - w porządku wobec zespołu (jestem potrzebny), po trzecie primo (ale tym razem to już rykoszetem, bo akurat tą część czniam) - przyczyniam się do jakości oprogramowania.
Oczywiście nie mam żadnej styczności ani możliwości wpłysu ani na szefa wszystkich szefów ani na handlowca, ale nie staram się brać na barki odpowiedzialności za głodującą Afrykę środkową. Z resztą próba spasowania każdemu to jest bodaj najprostsza droga na full-featured, old-fashioned, long-term failure.
Drogi MiMaSie,
mogę = mimas->getCoMogęZrobić();
pozostałe = mimas->getPozostałeRzeczy();
mimas->zrób(mogę, NAJLEPIEJ);
mimas->zrób(pozostałe, NAODWALSIĘ);
mimas->zostawPracęWPracy();
mimas->fajrant();
mimas->nakarmKoty();
mimas->używajDnia();
Pozdrawiam, --

#3 | 2005.01.03 13:32 | str()

Autopoprawka ad. trzeciego primo.
Oczywiście czniam nie jakość oprogramowania tylko to, że komuś się będzie się na nim tak lub owak pracowało. Zasadniczo interesuje mnie głównie moje własne user-experience.
To samolubne podejście sprawdza się dlatego, że ja po prostu lubię dobrze działający i (a może nawet przedewszystkim) dobrze napisany soft.

 

Uwaga: Ze względu na bardzo intensywną działalność spambotów komentowanie zostało wyłączone po 60 dniach od opublikowania wpisu. Jeżeli faktycznie chcesz jeszcze skomentować skorzystaj ze strony kontaktowej.