Prosto z inkubatora

Wykształcenie programistów nie jest tym samym co hodowla drobiu. Mimo wszystko tworzy się różne inkubatory przedsiębiorczości, w których ma "wygrzewać się" między innymi młoda kadra informatyczna. I podobnie jak drób z naturalnej hodowli jest o niebo lepszy od tego inkubowanego, to tak samo bywa z informatykami.

Wykształcenie programistów nie jest tym samym co hodowla drobiu. Mimo wszystko tworzy się różne inkubatory przedsiębiorczości, w których ma "wygrzewać się" między innymi młoda kadra informatyczna. I podobnie jak drób z naturalnej hodowli jest o niebo lepszy od tego inkubowanego, to tak samo bywa z informatykami.

Od czasu do czasu podejmuję temat jakości pracy programistycznej świadczonej przez studentów bądź świeżo upieczonych absolwentów. Jeśli do tego dochodzi jeszcze wątek zdalnej współpracy, to efekt może być nieraz porażający. Przeglądałem niedawno produkt wykonany w środowisku open source, który został przez klienta instytucjonalnego zakupiony od pewnej grupy studentów, rodem z inkubatora przedsiębiorczości. Można powiedzieć, że w źródłach oprogramowania oraz w strukturach danych zawarta była prawie cała możliwa niewiedza reprezentowana przez zespół autorski. Ponadto, analizując komentarze w kodzie oprogramowania, widziałem jak na dłoni całą historię powstawania tego arcydzieła. Wynikało z tego, że kreacja oprogramowania zaczęła się od jednej osoby, aby potem, wraz z jego rozwojem, objąć zdalnie większą grupę twórców. Komentarze w stylu "k... więcej tego tak nie robić" wyraźnie wskazywały, kto w zespole wiódł rolę przywódczą oraz jakiego autoramentu byli podwykonawcy. Zresztą o umiejętnościach samego lidera grupy świadczy jakość całego produktu.

Można powiedzieć, że kod programu odzwierciedlał w zasadzie wszystko, czego nie powinno się robić. A więc znaleźć w nim można powielane po wielokroć identyczne fragmenty funkcjonalne, które w zasadzie mają realizować to samo tylko w różnych kontekstach. Jest to typowy przykład magii voodoo w programowaniu. Jeślibyśmy porównali to do techniki tworzenia serwisów internetowych (co jest przykładem chyba najbardziej czytelnym dla czytelników nie zajmujących się programowaniem), to wyglądałoby to tak, że każda strona serwisu, oprócz swojej właściwej zawartości, zawierałaby powtórnie przepisaną treść strony macierzystej. Nie dość, że denerwujące przy czytaniu, to zagmatwane przy wprowadzaniu modyfikacji. Do tego dochodził kompletny brak parametryzacji, pętle działające na wartościach bezwzględnych i tak dalej. Powodowało to, że nieraz nawet drobna zmiana kodu, na przykład wartości granicznych pętli, wymagała propagowania tych samych korekt w kilku miejscach i nikt chyba nie był pewien, czy czegoś nie opuścił. Zapis danych w bazie też okazał się dosyć nieregularny, bo ni stąd ni zowąd potrafiło pojawić się kilka rekordów niosących te same informacje. Był to bezpośredni skutek wielokrotnego uruchamiania się tych samych procesów w aplikacji, do czego jako żywo przyczynia się opisany sposób kodowania.

Tłumaczenie, że gdyby nie dostępność kodu źródłowego, to nikt nie dowiedziałby się, jakie śmieci on ukrywa w swoim wnętrzu, nie jest do końca prawdą, gdyż struktura danych w bazie jasno pokazuje z czym mamy do czynienia. Dobry jak i zły projekt poznać można między innymi po jakości tego istotnego elementu. Jeśli brak jest jakichkolwiek logicznych zasad w zaprojektowanych strukturach danych, to trudno spodziewać się czytelności i logiki w kodzie programu współpracującego.

Generalnie system taki sprzedano klientowi, pewnie niejednemu, przez co inkubator się wzbogacił, mogąc kontynuować swą działalność hodowlaną i wypuszczać na rynek coraz więcej takich programistów, projektantów i ich produktów. Czego się czepiam? Przecież ludzie muszą gdzieś nauczyć się fachu. Owszem, tylko że w ten sposób nauczą się, iż można za zły produkt dostać sowite wynagrodzenie. Z drugiej strony, jeśli klient to kupił, to znaczy, że odpowiadała mu funkcjonalność produktu. Po co więc wnikać, jak było to zrobione i jak prezentuje się wewnątrz. W sumie to już sam nie wiem, czy tworzyć oprogramowanie solidnie, czy tylko tak więcej powierzchownie.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200