Już w kilku wpisach nawiązuje do „Pragmatycznego programisty” – moim zdaniem najważniejszej książki dla programistów.

Andy Hunt przytacza tam ideę, która pierwotnie była mi obca ale jest tak wyraziście przedstawiona, że nie sposób przejść wobec niej obojętnie. Przyrównuje programowanie do ogrodnictwa.

Pisanie kodu niczym układanie cegieł?

Większość ludzi – jeśli w ogóle – posiada wyobrażenie o tworzeniu oprogramowania jako o procesie budowlanym. W takim procesie światły projektant/architekt kreśli wizję idealnego produktu końcowego. Następnie projekt jest przekazywany do programistów, których zadaniem jest „naklepanie kodu” który projekt zrealizuje. W budownictwie kładli by pustaki, ale tutaj muszą pisać kod. Wiele firm tak myśli. Wiele firm tak przedstawia swoją pracę i wartość. Zwłaszcza firm outsourcingowych.

W tworzeniu oprogramowania to tak nie działa, ta wizja nie jest realistyczna.

Programista = ogrodnik

W praktyce gdy chcesz mieć piękny ogród – najpierw go planujesz. Tworzysz większą ideę, którą później starasz się wdrożyć w życie. Tak więc wybierasz krzewy, przygotowujesz ziemię – sadzisz najpierw duże potem mniejsze roślinki.

Gdy już to wszystko zrobisz ogród wyrasta, rozrasta się nie do końca tak jak to zaplanowałeś. Krzewy wyrastają większe (albo mniejsze), są nierówne. Musisz je przycinać, przesadzać, nawozić, okopywać, kolory roślin są trochę inne niż na obrazku – musisz je więc przesadzać, aby nadal ładnie wyglądały

Nie jest to proces w 100% przewidywalny bo jest determinowany przez wiele czynników. Podobnie jak powstawanie oprogramowania.

Ogród podobnie jak oprogramowanie wymaga maintenance’u – czyli stałej opieki. Trzeba go przycinać, podlewać i nadal nawozić. Nie zmieniamy kształtu i nie przesadzamy krzewów – ale dbamy aby nadal wyglądały tak jak na początku.

Oprogramowanie które nie jest poddawane odpowiedniej opiece również „rozkłada się” lub przestaje odpowiadać aktualnym wymaganiom.