Profesjonalizm, czysty kod i techniczna perfekcja | KISS digital

Adam Kubiczek

Współzałożyciel KISS digital.

26 May 2017

Profesjonalizm, czysty kod i techniczna perfekcja

postMainImage

Czytam obecnie książkę "Software Craftsman - Profesjonalizm, czysty kod i techniczna perfekcja" autorstwa Sandro Mancuso. Pomimo klarownego tytułu, po zapoznaniu się z nią nie jest łatwo powiedzieć do kogo tak naprawdę jest kierowana - autor porusza w niej tematy ważne zarówno dla deweloperów, jak i, powiedzmy, kadry zarządzającej. Pomimo tego, a może właśnie z tego powodu, jest to pozycja zdecydowanie warta polecenia obu tym grupom. Na zachętę przytaczam kilka cytatów - na pierwszy ogień tych, które są związane z analizą aktualnego obrazu branży IT.

Nowa rzeczywistość

Czasy, w których deweloperzy są specjalistami w wąskiej dziedzinie, zdecydowanie się kończą. [..] Firmy starają się być sprawniejsze, spłaszczają swoje hierarchie i zastępują profesjonalistów wyspecjalizowanych w jednej dziedzinie, zawodowcami o wielu umiejętnościach. [S. Mancuso "Software Craftsman, 30]

Klienci chcą otrzymywać więcej i szybciej, a firmy stają się coraz agresywniejsze w swoich ofertach. Umiejętność szybkiego modyfikowania programów z zachowaniem ich wysokiej jakości [..] są bardzo ważnymi czynnikami konkurencyjności. [S. Mancuso "Software Craftsman, 31]

Projekt programistyczny nie może się udać bez współpracy z dobrymi programistami, którzy nie tylko potrafią tworzyć dobrej jakości oprogramowanie, ale również są w stanie pomóc biznesowi w osiągnięciu tego, co ten chce osiągnąć, oferując mu odpowiednie opcje, informacje zwrotne i konstruktywną krytykę. [S. Mancuso "Software Craftsman, 43]

Kac agilowy

W ramach wielu projektów agilowych nadal produkowany jest, systematycznie i powtarzalnie, kod kiepskiej jakości. [S. Mancuso "Software Craftsman, 38]

Wiele firm szuka magicznych rozwiązań w postaci gotowych recept, które dałoby się łatwo zrealizować i które pozwoliłyby szybko uzyskać pozytywny efekt. Ideałem wydaje im się Scrum i niczego już więcej nie szukają. Przynajmniej do czasu, gdy sobie uświadomią, że jednak muszą więcej uwagi przywiązywać do tego, jak ich oprogramowanie jest tworzone. [S. Mancuso "Software Craftsman, 111]

Czysty i łatwy w utrzymaniu kod pozwala deweloperom na szybszą pracę i zmniejsza prawdopodobieństwo powstawania nowych błędów. Jest to wartość biznesowa. [S. Mancuso "Software Craftsman, 119]

Jakość oprogramowania

Dobrze napisany kod jest prosty, krótki, testowalny, łatwy do zrozumienia i, co najważniejsze, prawidłowo wykonuje swoje zadanie. Kod bywa też największym siedliskiem błędów i główną udręką deweloperów. Im mniej go piszemy, tym lepiej. Zdaniem Mancuso:

Panuje ogólne przekonanie [w domyśle mylne - przyp. mój], że jakość wymaga czasu. Zarządy i deweloperzy uważają, że zawsze trzeba wybierać między kodem dobrym, ale czasochłonnym i drogim, a łatwym do napisania i tanim, ale za to gorszej jakości. [S. Mancuso "Software Craftsman" 217]

Największym problemem jest fałszywe założenie, że tani i przeciętnej jakości kod jest wystarczający [..] W firmie, która zazwyczaj wybiera przeciętność, wcześniej czy później dochodzi do znacznego obniżenia jakości. [S. Mancuso "Software Craftsman" 217]

[..] tak samo myślą menedżerowie i klienci płacący za oprogramowanie. Mogą głośno mówić, że im mniej zależy na jakości, a bardziej na czasie i niskich kosztach, lecz podświadomie zawsze oczekują należytej jakości i są niezadowoleni, jeśli jej nie otrzymują. [S. Mancuso "Software Craftsman" 219]

Kierownicy świetnie rozumieją kwestie organizacyjne, ale nie potrafią dostrzec korzyści, jakie mogą wynikać z tego, że developerzy będą się zajmowali czymś więcej niż pisaniem kodu. Nie widzą także potrzeby przywiązywania wagi do jakości kodu tworzonego przez deweloperów. Jeśli działa, są zadowoleni. [S. Mancuso "Software Craftsman" 114]

Dobrze napisany kod jest prosty, krótki, testowalny, łatwy do zrozumienia i, co najważniejsze, prawidłowo wykonuje swoje zadanie. Kod bywa też największym siedliskiem błędów i główną udręką deweloperów. Im mniej go piszemy, tym lepiej. [S. Mancuso "Software craftsman" 227]

[..] Dobre praktyki i procesy są dobre tak długo, jak długo nie znajdujemy lepszych. [S. Mancuso "Software Craftsman" 222]

O czym każdy developer pamiętać powinien

Każdy deweloper może napisać działający program. To, co odróżnia wybitnego dewelopera od przeciętnego, sprowadza się do tego, jak każdy z nich osiąga swój cel. Wybitni deweloperzy piszą prosty kod spełniający wymagania klientów i nawet mniej doświadczeniu programiści są w stanie taki kod zrozumieć.

Jeśli mamy przed sobą kod zastany, to zamiast narzekać i denerwować się, powinniśmy się starać go zrozumieć i zgodnie z harcerską zasadą pozostawić w stanie lepszym niż ten, w jaki go zastaliśmy. Zrozumienie i ulepszenie starego kodu może być bardzo satysfakcjonujące. [S. Mancuso "Software craftsman" 106]

Refaktoryzacja bez pragmatyzmu może być niebezpieczna. Profesjonalizm polega między innymi na rozumieniu konieczności podejmowania decyzji kompromisowych. [S. Mancuso "Software craftsman" 119]

Dobrze napisany kod jest prosty, krótki, testowalny, łatwy do zrozumienia i, co najważniejsze, prawidłowo wykonuje swoje zadanie. Kod bywa też największym siedliskiem błędów i główną udręką deweloperów. Im mniej go piszemy, tym lepiej. [S. Mancuso "Software craftsman" 227]

Metodyki zwinne polegają na akceptowaniu zmian, a nie walce z nimi. [S. Mancuso "Software craftsman" 109]

Każdy deweloper może napisać działający program. To, co odróżnia wybitnego dewelopera od przeciętnego, sprowadza się do tego, jak każdy z nich osiąga swój cel. Wybitni deweloperzy piszą prosty kod spełniający wymagania klientów i nawet mniej doświadczeniu programiści są w stanie taki kod zrozumieć. [S. Mancuso "Software craftsman" 226]

Dobrzy deweloperzy nie wybierają złych deweloperów. Raczej starają się znaleźć nawet lepszych od siebie, gdyż wiedzą, jak ważne jest posiadanie dobrego zespołu - dla dobra nie tylko firmy, ale również ich własnego. Wiemy o tym także w KISS digital. A jeśli myślisz podobnie, może prześlesz nam swoje CV?

Adam Kubiczek

A co-founder and managing partner of KISS digital. Has a long-term experience as a software developer and a team leader.