Najczęstsze błędy w nauce programowania

Wiesz już jak i skąd uczyć się programowania. Jeżeli nie, to zachęcam do przeczytania artykułu Jak i skąd uczyć się programowania? Prawdopodobnie jednak nie zdajesz sobie sprawy na jakie pułapki/przeszkody możesz natrafić podczas nauki. Jakie błędy możesz popełnić. Podobno uczenie się na błędach to najskuteczniejszy sposób, żeby zdobyć wiedzę. To prawda, ale z drugiej strony, lepiej uczyć się na błędach cudzych niż własnych. Wiadomo, że nauka programowania wymaga czasu, natomiast głupie błędy potrafią nie tylko znacznie wydłużyć edukację, ale również skutecznie w niej przeszkadzają. W tym artykule postaram się przestawić najczęstsze błędy w nauce programowania.

Brak cierpliwości i systematyczności

Cierpliwość jest kluczowa w procesie uczenia się bez względu na to, jakie umiejętności chcemy zdobyć. Niestety, niejedna osoba, która marzy o tym, żeby nauczyć się programować, ma duży kłopot z cierpliwością. Sam w przeszłości wielokrotnie rozpoczynałem naukę jednego języka programowania, aby za chwilę porzucić go dla innego, wmawiając sobie, że teraz to już na pewno dam radę. To samo z nauką technologii. Wiele razy porzucałem poznawanie jednej technologii dla drugiej, sądząc, że po zmianie nauka pójdzie mi zdecydowanie sprawniej. Skuteczne uczenie się, to również odnajdywanie w sobie odpowiedniej motywacji do przyswajania wiedzy, również, a może szczególnie wtedy, gdy minie pierwszy entuzjazm. Gdy już nie będzie się chciało tak, jak na początku. Gdy brakuje nam motywacji i determinacji, zaczynamy się miotać i zadawać pytania, które budzą w nas wątpliwości. Czy nauka programowania ma sens? Czy to jest, aby na pewno dla mnie? Czy aby tylko nie marnuję czasu? Czy w ogóle mam szansę zostać programistą? W rezultacie bardzo często zaprzestajemy nauki. Trzeba zdać sobie sprawę z tego, że nauka programowania wymaga czasu. Potrzebna jest także systematyczna praca nad rozwijaniem umiejętności programowania, a nie kodowanie od przypadku do przypadku, raz na jakiś czas.

Brak praktyki

Programowania najlepiej nauczysz się programując. Prawda stara jak świat. Opis zagadnienia przydaje się jako wstęp, wprowadzenie w temat, ale trzeba jak najwięcej robić praktycznych zadań, a z czasem własne projekty. Nie wierz w to, że nauczysz się kodować, wyłącznie czytając lub oglądając, jak ktoś inny programuje. Na początku na pewno będzie ciężko, ale wynika to po prostu z braku wprawy. Pisanie własnych aplikacji (od początku do końca) z wykorzystaniem zdobytej wiedzy, to zdecydowanie najlepszy sposób na naukę programowania. Nie tylko skutecznie uczysz w ten sposób kodowania, ale także zdobywasz cenne doświadczenie programistyczne.

Za długie siedzenie nad problemem

Nie poświęcaj zbyt wiele czasu na siedzenie nad jednym problemem. Jeżeli przez kilka godzin próbujesz uporać się z jakimś zadaniem i nic się nie ruszyło, to albo zrób sobie przerwę, albo skonsultuj się z osobą bardziej doświadczoną, albo po prostu zadaj pytanie na forum. Szukanie pomocy nie jest oznaką słabości czy braku kompetencji. Jest raczej bardzo ważną umiejętnością, która pozwala wielokrotnie zaoszczędzić mnóstwo czasu. Czasem wystarczy zrelaksować się, zająć umysł czymś innym, odejść na chwilę od problemu. Po pewnym czasie wracamy do problemu i prawdopodobnie „na świeżo” znajdziemy rozwiązanie. Nauka programowania to także nauka racjonalnego gospodarowania czasem. Takie podejście bardzo się przyda później, gdy zaczniesz pracować komercyjnie przy rozbudowanych projektach.

Uczenie się na pamięć

Gdy zaczynałem uczyć się programowania, to zastanawiałem się, jakim cudem ludzie są w stanie to wszystko zapamiętać i pisać kod z palca. Po jakimś czasie jednak zauważyłem, że są rzeczy, które sam zacząłem pisać bez zaglądania w materiały. Przekonałem się, że nie trzeba uczyć się całej dokumentacji jakiegoś języka/frameworka/technologii na pamięć. Trzeba tylko wiedzieć, kiedy i jak z niej umiejętnie korzystać. Warto zdać sobie sprawę z tego, że implementacja obszernego systemu, bez zaglądania do dokumentacji i na fora programistyczne, nie jest możliwa. Nauczenie się wszystkiego na pamięć jest nierealne i nie warto tego nawet próbować, bo to strata czasu.

Done is better than perfect

Dążenie do perfekcjonizmu, przez który nigdy nie kończy się żadnego projektu. Należy pamiętać, że nie zawsze uda się rozwiązać zadanie w możliwie najlepszy sposób. Po prostu w niektórych sytuacjach brakuje na to czasu. Czasami programista jest zmuszony oddać kod, z którego nie jest w pełni zadowolony, ale który działa. Chociaż często chce się poświęcić chwilę na refactoring (przeglądanie i poprawianie napisanego już kodu programu w celu jego usprawnienia i poprawienia czytelności), to jednak nie robi się tego, bo np. dana wersja oprogramowania musi zostać jutro opublikowana. Nikt nie jest z tego powodu zadowolony, ale często takie są realia. Ważną umiejętnością jest skupienie się na kwestiach ważnych dla projektu. Odpowiednia priorytetyzacja zadań. Sytuacja wygląda analogicznie podczas tworzenia własnych, niekomercyjnych projektów. Nie zawsze wszystko musi wyglądać idealnie. Szczególnie na początku. Zdecydowanie lepiej jest dokończyć projekt, niż utkwić na ciągłym ulepszaniu kodu, czy nieustannym poprawianiu funkcjonalności w aplikacji.

Just in time learning

I na koniec najważniejsze. Just in time learning. Pewnie zadajesz sobie pytanie, o co tutaj chodzi? Chodzi o efektywne wykorzystanie swojego czas i naukę danego języka/frameworka/technologii/czegokolwiek, dopiero gdy faktycznie musimy to wykorzystać w praktyce. Niby proste i oczywiste. Po co uczyć się na zapas? Niestety, nie do końca tak jest. Często poświęcamy na eksplorowanie np. jakiejś niszowej technologi, po czym okazuje się, że nigdy do niczego nam się to nie przydało. Na samym początku eksperymentowanie jest wręcz nieodłączonym elementem nauki. Musisz przecież sprawdzić, co interesuje Cię bardziej, co mniej, jaka forma edukacji trafia do Ciebie najlepiej. Ogólnie rzecz biorąc, nie ma nic złego w eksperymentowaniu z technologiami. Jednak warto poświęcać większość naszego czasu na osiągnięcie określonego celu. Eksperymenty swoją drogą, ale niech nie zajmują one większości Twojego czasu.

Określenie konkretnego celu jest bardzo ważne. Np. chcę napisać aplikację desktopową, która pozwala na zapisywanie kontaktów w bazie danych oraz wysyłanie wiadomości e-mail. Chciałbym wykorzystać do tego WPF, wzorzec MVVM, protokół SMTP oraz NHibernate. Następnie naucz się jak zastosować WPF, MVVM, SMTP i NHibernate w kontekście Twojej aplikacji. Jaki jest tego efekt? Masz gotowy projekt, którym możesz się pochwalić. Nie musisz od razu doktoryzować się z ww. technologii. Wystarczy poznać je w stopniu umożliwiającym rozwiązanie zadań, nad którymi aktualnie pracujesz.

Podsumowanie

Mam nadzieję, że nie popełnisz błędów opisanych w tym artykule, albo chociaż znacząco zminimalizujesz ich skutki. Pomyłki i błędy są nieodłączną częścią życia i nauki każdej umiejętności. Należy się z tym pogodzić. Prędzej czy później i Ty będziesz musiał poczuć na własnej skórze, na jakie jeszcze przeciwności możesz natrafić podczas nauki programowania.


Bądź na bieżąco!

Dziękuję za przeczytanie tego artykułu i mam nadzieję, że spotkamy się jeszcze na moim blogu. Jednocześnie mam do Ciebie wielką prośbę: jeśli cokolwiek co przeczytasz na tym blogu uznasz za wartościowe, to KONIECZNIE mi o tym napisz (w komentarzu, bądź mailowo). Każdy potrzebuje nieco motywacji i znacznie łatwiej będzie mi usiąść do tworzenia kolejnego materiału wiedząc, że Tobie też się to przydaje. Zachęcam Cię do polubienia strony na Facebooku oraz subskrybowania kanału na YouTube.

Polub stronę na Facebooku

Chcesz otrzymywać powiadomienia o nowych artykułach? W takim razie zapraszam Cię do polubienia strony na Facebooku. Miej pewność, że nie przegapisz kolejnych postów!

Subskrybuj kanał na YouTube

Wkrótce na YouTube pojawią się praktyczne kursy dotyczące programowania aplikacji na platformę .NET.