Kiedy czysty kod nie ma sensu

Kiedy czysty kod nie ma sensu

Czysty kod, wzorce projektowe, dobre praktyki – wszyscy to znamy. Blogi programistyczne prześcigają się w przedstawianiu kolejnych wzorców które mają nam ułatwić życie, cytują fragmenty “Clean code’u”, a w komentarzach użytkownicy dyskutują o nazewnictwie zmiennych. Czy w 2018r., na progu m.in. rewolucji związanej ze sztuczną inteligencją, nie warto byłoby nabrać nieco dystansu do całego tego konkursu piękności i skupić się na umiejętnościach które nam, programistom, przedłużą datę ważności?

Błędne koło perfekcjonistów

Kiedy czysty kod jest dostatecznie czysty? Dla wielu – nigdy. Istnieją perfekcjoniści których nie interesuje dowiezie na czas, dowiezienie wg zlecenia, a dowiezienie kodu tak czystego żeby mogli spać spokojnie. Takie osoby mogłyby spędzać godziny dyskutując o nazwach zmiennych, funkcji, czy klas – czystość kodu to dla nich jednoznaczny wyznacznik jakości i programistycznego skilla.

Problem w tym, że kiedyś efekty swojej pracy należy opublikować – wydać, wdrożyć, przedstawić światu. Programistyczni idealiści nie mogą się często pogodzić z tym, że nad ich projektem stoją “daty wdrożenia” albo “daty końcowe”, ponieważ w ich rozumieniu są to przeszkody do tego, żeby swój zawód wykonywać z dostateczną dbałością o detale. Project manager to idiota bo wymaga dowożenia na czas, a proces w którym pracujemy nie jest dostatecznie zwinny, bo nie możemy w nieskończoność poprawiać tego co robimy.

Niestety, jak świat światem, tak na rynku liczyły się tylko osoby które potrafiły dowozić i dostarczać. Wszyscy artyści których znamy nie zasłynęli z niesamowitego procesu i przywiązania do detali, a z dzieł które publikowali. Zawsze liczył się efekt końcowy – wartość dostarczona. Czasami z ubytkami, czasami zbyt szybko, ale dostarczona.

Programistyczni perfekcjoniści wpadają często w błędne koło pogoni za jakością, nie zwracając uwagi na kontekst i wydarzenia wokół nich. Będę uważany za dobrego programistę, kiedy odpowiednio dopracuję kod. Niestety dzisiaj jeszcze nie pokażę wam tego co robię, bo nie jest wystarczająco dobre. No tak, właściwie nie dostarczę, ale dajcie mi jeszcze trochę czasu…

Podejście perfekcjonistów przynosi skutki odwrotne do zamierzonych. Pisanie kodu idealnego to idea szczytna, ale w dzisiejszym, tak bardzo konkurencyjnym świecie – praktycznie niemożliwa do stosowania. Po pierwsze – dowozić.

Czysty kod w epoce AI

Jakiś czas temu na każdą wiadomość dotyczącą sztucznej inteligencji reagowaliśmy pobłażliwym uśmiechem. Dzisiaj, kiedy co kilka dni czytamy artykuły o kolejnych ekspertach wybranych dziedzin pokonywanych przez algorytmy i maszyny, takie podejście jest świadomym ignorowaniem tego co czeka nas za kilka lat.

Do niedawna jednym z wielu argumentów dotyczących zastąpienia nas, programistów, przez maszyny był ten o jakości kodu dostarczanego przez taką czarną skrzynkę. Kojarzyliśmy to z wszelkiego typu edytorami typu WYSIWYG gdzie owszem, każdy z nas mógł poukładać obrazki na stronie, ale to co działo się pod spodem wołało o pomstę do nieba. Nie chcielibyśmy pracować z takim kodem – to jasne. Umiejętność pisania czystego kodu jednoznacznie wiązała się z “czynnikiem ludzkim” i była głównym wyróżnikiem który miał robić z nas niemożliwych do zastąpienia przez roboty.

Dzisiaj, w czasach projektów takich jak https://github.com/tonybeltramelli/pix2code wielu front-end developerów może się zastanawiać czy ich zawód nie stoi czasami nad przepaścią (conajmniej ja się zastanawiam). Co z tego, że tworzę możliwy do utrzymania, czysty kod, skoro maszyna w ciągu jednej minuty może wygenerować stronę internetową gotową do wdrożenia na serwerze? Jakość takich rozwiązań na dzień pisania tego posta nie jest jeszcze zagrożeniem, ale czy mamy gwarancję, że zagrożeniem nie będzie jutro?

Wszelkie artykułu związane z AI, sieciami neuronowymi i deep learningiem są solidnym znakiem ostrzegawczym dla wszelkich bojowników czystego kodu. Jeśli najważniejszą umiejętnością w twoim CV jest tworzenie kodu który jest “ładny”, to spokojnie – jest jeszcze sporo czasu na zmianę zainteresowań.

No tak, ale mówili, że…

Mówili, że czysty kod to twoja wizytówka. Mówili, że droga na skróty zawsze drogo kosztuje. Mówili, że zaciąganie długu technicznego to zła praktyka. Mówili, że tylko nieodpowiedzialni decydują się na pisanie kodu w taki sposób. Mówili, że zawsze w dłuższej perspektywie wygra podejście oparte o jakość…

A o kontekście wspominali?

  • Co jeśli projekt który realizujesz odniesie sukces tylko kiedy opublikujesz go w konkretnym okienku czasowym które za tydzień będzie już zamknięte?
  • Co jeśli projekt który realizujesz tydzień po dacie końcowej wyląduje w koszu, a najważniejszy jest czas?
  • Co jeśli razem z projektem który realizujesz tworzysz równolegle coś o wiele ważniejszego, na co musisz poświęcić więcej uwagi?
  • Co jeśli jesteś na tyle odpowiedzialny, że świadome wprowadzenie długu technicznego przyniesie ci więcej korzyści niż ślepie skupianie się na nazewnictwie zmiennych?
  • Co jeśli projekt który tworzysz ma przydać się w trakcie trwających tydzień targów gdzie prezentuje się twoja firma, wywołać wrażenie, a następnie może być zapomnianym bo zadanie wykonane?

Ktoś mądry kiedyś powiedział, że jedynym pewnikiem w świecie programowania jest zmiana. Jeśli to prawda, to umiejętność akceptacji kodu “dostatecznie dobrego” powinna być czymś, na co poświęcimy tyle samo uwagi co na naukę pisania kodu idealnego.

Niestety, tematem nr 1 dla wielu programistów wciąż pozostaje życie w zgodności z “Clean code’m”.

 

Powiązane

Ten niedobry JavaScript – odc. 2543 Opinii na temat wad JavaScriptu i rzekomej trudności utrzymania kodu opartego o ten język naczytałem się już tyle, że każdy kolejny post komentują...
10 powodów przez które język JavaScript jest tak p... Zastanawiasz się o co chodzi z całym tym hałasem dotyczącym języka JavaScript? Czemu powstają o nim dziesiątki memów i żartów? Dlaczego ludzi poświęca...
books#13 – “So good they can’t i... W trakcie naszej przygody z programowaniem zetknęliśmy się z książkami poruszającymi najróżniejszetematy. Programowanie, branża IT, biznes, nowe t...
SonarQube, statyczna analiza i wysoka jakość kodu... O kod trzeba dbać - z tym raczej wszyscy się zgodzimy. Wysoka jakość kodu ma nam pomóc między innymi w rozwoju i utrzymaniu projektów. Oczywiście ...