Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Temat: Programowanie jako budowanie teorii
Ostatnio spotkałem się z dosyć ciekawym podejściem do programowania. Otóż podstawowym zadaniem programisty nie jest zbudowanie programu, systemu czy ogólnie mówiąc produktu, ale zbudowanie teorii ze wszystkimi wynikającymi z tego konsekwencjami.Podobnie jak robili to fizycy i chemicy z ostatnich trzech stuleci, programista powinien opisać rzeczywisty świat swoją teorią zmaterializowaną w postaci kodu źródłowego. Jakie są tego konsekwencje? Otóż programista nie opisuje całej rzeczywistości, a jedynie jej wycinek. Programista powinien najpierw zbudować spójny model dla swojej teorii, wypracować zrozumiały język, określić prawa, zależności oraz ograniczenia. Aby tego dokonać powinien posługiwać się nie tylko kodem (analogia z zmaterializowanymi przedmiotami), ale również opisami, rysunkami, dokumentacją, podręcznikiem użytkownika itp.
Jednakże z powodu ułomności opisów słownych i graficznych, oraz fakt budowania modelu opusu rzeczywistości a nie dokładnego opisu rzeczywistości, sam opis programu, opis modelu oraz kod jest daleko niewystarczający, ale konieczny w zakresie umożliwiającym wdrożenie nowego programisty lub przekazania prac nad rozwojem lub mutacją systemu innemu zespołowi.
Tak więc programista, który taką teorie stworzył powinien móc odpowiedzieć na kilka kluczowych pytań:
1. W jakim stopniu teoria opisuje rzeczywistość i pomaga rozwiązać rzeczywiste problemy?
2. Dlaczego konkretna część programu (moduł, klasa, kontroler itp.) jest tym czym jest i do czego służy?
3. Czy proponowana modyfikacja kodu zmienia stary model teoretyczny czy nie? A jeśli zmienia to w jakim zakresie i czy ta modyfikacja powoduje de facto konieczność zbudowania nowej teorii?
Jakie są konsekwencje takiego podejścia?
1. Otóż sam opis systemu jest jedynie uproszczonym opisem uproszczonego modelu rzeczywistości.
2. Sam kod nie opisuje założeń, ograniczeń i modelu teorii. Jest jedynie zmaterializowaną nieprzezroczystą skorupą.
3. Kod i opis systemu nie opisuje teorii. Jest ułomnym opisem rzeczywistości, który doskonale rozumieją osoby, którzy go sporządzili.
4. Wtajemniczenie kolejnych osób wiąże się z koniecznością przeprowadzenia wspólnej rozmowy na podstawie dokumentacji.
5. Utrata kolejnych osób z zespołu może spowodować osiągnięcie stanu, w którym pozostali przestają rozumieć teorię i model.
Na koniec dodam, że nie zgubiłem po drodze analityka, projektanta i architekta. Obecnie powszechnie mamy sytuację, w której jedna osoba (programista) lub zespół programistów jest niewystarczający. Dochodzą wszyscy Ci pozostali. To tak jak kiedyś Newton potrzebował jedynie krzywej wieży w Pizie do sformułowania swojego prawa powszechnego ciążenia i obecne badania w CERN, mające na celu potwierdzenie założeń Modelu Standardowego. Jedna osoba tego nie dokona.