Początkujący programista i jego błędy.

Seneka Starszy, słynny rzymski retor, którego zapewne zatrudniłby niejeden współczesny polityk, mawiał Errare humanum est, co znaczy mniej więcej tyle, że Błądzić jest rzeczą ludzką. Zgoda, - wtórował mu św. Augustyn i szybko dodawał – ale dobrowolne trwanie w błędzie to rzecz diabelska. Kilka wieków później swoje „trzy grosze” dorzucił jak zawsze przenikliwy Leonardo da Vinci: Kto mało myśli, dużo błądzi. Jak widać, kwestia błędów i błądzenia poruszała emocje od wielu wieków, a niekiedy wywoływała bardzo poważne konflikty zbrojne i religijne.

Co to ma jednak wspólnego z programowaniem? Więcej niż mogłoby się wydawać na pierwszy rzut oka. Błędy lub, jak kto woli, bugi, to coś, co bardzo irytuje programistów szczególnie, gdy trudno je zidentyfikować. Ale niestety, błędy się zdarzają i pewnie zdarzać się będą. Dlaczego? Odsyłam raz jeszcze do sentencji Seneki Starszego. Pół biedy, jeśli bugi nie wpływają na bezpieczeństwo czy życie ludzi. Nie zawsze jednak tak się zdarza, o czym pisaliśmy już w artykule Upiorne bugi. Małe błędy - wielkie katastrofy. Tym razem rozprawiamy się z błędami początkujących programistów, które często wynikają z niewiedzy, zbyt dużej pewności siebie, a czasami po prostu z lenistwa. Oto krótki spis błędów i zaniechań świeżaków. Mnie to nie dotyczy – myślicie sobie – przecież przeczytałem pięć razy podręcznik do C++, Java, Python lub coś tam jeszcze. Naprawdę? Gratulacje! Więc w przerwach pomiędzy pochłanianiem kolejnej książki o programowaniu, przeczytajcie naszą listą ku przestrodze.

Niekończące się planowanie lub jego brak

Szybki quiz. Z czym kojarzy Wam się początkujący programista?

  1. Z kimś takim, kto zaczyna układać listę wymagań wobec pracodawcy.

  2. Z osobą na początku drogi z przeszkodami.

  3. Z kolesiem, który czyha na czyjeś stanowisko.

  4. Z sympatyczną osobą, która często wpada w skrajności.

My stawiamy na ostatnią odpowiedź. Skrajność to tak naprawdę słowo-klucz w przypadku początkującego programisty. Przykładem takiej skrajności jest niekończące się planowanie projektu, bo przecież w internecie nieustannie wbijają do głowy, że planowanie jest ważne. A zatem młody koder siedzi i rozmyśla, kombinuje, przygotowuje różne warianty projektu, zmienia, wykreśla i przywraca z powrotem. Aż pewanego dnia okazuje się, że minęło już 20 lat na tym planowaniu. Co z projektem? Nie było, nie ma i zapewne już go nie będzie. Drugą skrajnością jest brak jakiegokolwiek etapu przygotowań. Jakoś to będzie! Programista siada od razu do kodowania, a spod jego palców lecą linijki kodu niczym z rękawa, jakby same się pisały. Przynajmniej w wyobraźni, ponieważ prędzej czy później taki niedoświadczony koder potknie się o swoje „jakoś to będzie”.

Kopiowanie fragmentów kodu

Największy przyjaciel początkującego programisty? Pan Kopiuj/Wklej. Nic tak szybko nie rozwiązuje problemu z kodem, jak jego skopiowanie. Wystarczy odpalić Stack Overflow lub poszukać na innych portalach, a na pewno znajdzie się odpowiedni fragment kodu. Potem wystarczy już tylko wkleić go w środek programu i po sprawie. A jak to działa? Skąd mam wiedzieć? Działa i już! I tak wkleja się jeden fragment za drugim, nie rozumiejąc, że praca programisty to jednak kreatywne zajęcie, a nie odtwórcze wlepianie fragmentów znalezionych w internecie. Gorzej, gdy później coś się zepsuje. Jak to naprawić? Nie wiem, ja tu tylko wklejam!

Rezygnowanie z komentarzy

Do czego ten cholerny komentarz, skoro widać od razu, jak to działa i o co chodzi w moim kodzie! Szkoda, że tego zdania nie podzielają koledzy/koleżanki, którzy potem muszą pracować nad tym projektem i całą energię zużywają na rozgryzienie tego „krystalicznie przejrzystego kodu”. To stara szkoła! Dyletanci! – macha ręką świeżak-programista. I puszy się z dumy. Dopóki rok czy 2 lata później nie dostanie swojego idealnego kodu do przerobienia. Wiecie, jak to się najczęściej kończy? O co, do diabła, chodziło mi w tym fragmencie!

Brak formatowania kodu

O co takie halo? Że nie ma wcięcia? Brak formatowania? Wielkie bloki kodu was przerażają! Tak, przerażają! Jeśli świeżak nie nauczy się od razu standardu formatowania w danym języku, będzie mu bardzo trudno pozbyć się złych nawyków. Nie będzie pamiętał, że na przykład w Pythonie konieczne są 4 spacje przy wcięciu, a dajmy na to w Ruby – 2 spacje. W rezultacie taki koder będzie „produkował” nieczytelny kod, w którym każda modyfikacja będzie przyprawiała o ból głowy, a znajdowanie błędu stanie się operacją równie trudną i ryzykowną, jak lądowanie aliantów na plaży „Omaha” w 1944 roku pod ogniem hitlerowskich karabinów.

Ograniczanie się do polskojęzycznego internetu

Ludzie, internet jest tylko jeden! Niby tak, a jednak… Niejeden początkujący programista zaczyna od polskojęzycznych stron i forów. Nie ma w tym nic złego. Problem pojawia się wtedy, gdy koderzy pozostają w tym polskojęzycznym internecie i nie korzystają z ogólnoświatowych zasobów. Anglojęzyczne strony, chociażby ze względu na ogromną ilość w skali globu, dostarczają więcej informacji i często szybciej niż nasze, rodzime serwisy. Problem dotyczy czasami także dokumentacji. Tutaj również nie można ograniczać się tylko do jej polskiej wersji tym bardziej, że nie zawsze taka istnieje. Tak, tak, rozumiemy – Polacy nie gęsi itd. Jednak informacje z pierwszej ręki warto posiadać!

Przedwczesna optymalizacja

Dobra, optymalizuję! Skończyłeś pisać? Nie, ale i tak zoptymalizuję. W jakim celu? No właśnie, przedwczesna optymalizacja kodu przed jego ukończeniem to prawdziwa plaga wśród świeżków-koderów. Wielu z nich nie może zrozumieć, że to po prostu strata czasu. Jeśli nie ma ku temu istotnych przesłanek, regułą jest, że optymalizacja to ostatni etap tworzenia kodu. Donald Knuth, autor Sztuki Programowania, o którym już pisaliśmy w naszym portalu, mawiał, że przedwczesna optymalizacja jest źródłem wszelkiego zła. Trudno się z nim nie zgodzić.

Jakie błędy popełnialiście na początku waszej kariery programistycznej? Odważycie się do nich przyznać? Czekamy na Wasze wspomnienia.