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.
Oceń artykuł
Komentarze (1)
W sumie, to powinno się tworzyć oprogramowanie, które działa i jest poprawne. Na pocz±tek wystarczy. Problem jako¶ci i innych warto¶ci dodanych nie zniknie nigdy o ile (zakładaj±c, że sama jako¶ć edukacji jest już dobra) nie zostanie zasypana przepa¶ć pomiędzy teri± informatyki a porażaj±cymi praktykami w naszej rzeczywisto¶ci. Gdzie "szybciej" zwycięża "lepiej", "taniej" pokonuje "dokładnie", "nowe" zabija "dobre" a z wszystkiego innego ¶mieje się marketing i polityka tam nie ma miejsca na jako¶ć i rzetelne wytwarzanie oprogramowania. Tego nie uczy się się na uczelni a to moim zdaniem najpoważniejszy bł±d. Pozdrawiam,
Najpopularniejsze
- Ministerstwo Cyfryzacji ma już swoją...
- Microsoft: Kinect dla Windows jeszcze w tym...
- Jakie skutki będzie miało wprowadzenie ACTA
- 5 zmian, które mogą zaważyć na...
- Boni powołał członków Rady Informatyzacji
- Koniec ery nieograniczonego dostępu do...
- Kolejne aresztowania w związku z aferą w...
- ATCA zostało wdrożone w sieci 3G Polkomtela...
- Rejestr Usług Medycznych, czyli największa...
- Nokia w trzy miesiące straciła miliard euro
Rekomendacje
Serwisy IDG - Warunki obsługi - Kontakt - Redakcja - Regulamin - O nas - Polityka prywatności - Serwis zgodny z ASME
Reklama - Licencjonowanie treści
Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.
© Copyright 2012 International Data Group Poland S.A. 04-204 Warszawa ul. Jordanowska 12 tel.(+4822)321-78-00 fax(+4822)321-78-88





