Myśl i działaj, jak prawdziwy programista
Po pierwsze, pamiętaj, że nie nauczysz się wszystkiego. Istnieje wiele technologii, a nauczenie się wszystkich jest niemożliwe. Znajdź swój idealny stos, czyli coś w sam raz dla Ciebie i zacznij to w pełni wykorzystywać. Na przykład, dobrym połączeniem nowoczesnego tworzenia stron internetowych byłby stos MERN: MongoDB, Express, React i Node.js (świetny, jeśli kochasz JS).
Jest też coś o nazwie MEAN stack. Zamiast Reacta dla frontendu, twórcy MEAN stack preferują Angulara. Możesz także użyć stosów takich jak PHP, MySQL oraz podstawowego HTML i CSS dla frontendu. Ruby i Ruby on Rails są również dobrymi technologiami dla backendu.
Niezależnie od tego, jaki stos wybierzesz, lepiej się go trzymać i dobrze opanować - jak coś jest od wszystkiego, to jest do niczego. Jak będziesz się starał nauczyć wszystkiego, to stracisz tylko czas i energię.
Nie musisz kończyć studiów, żeby być programistą
Odniosłam sukces w dziedzinie programowania jako samouk, łącząc ciężką pracę, dużo cierpliwości, wytrwałości i niezwykłego skupienia. Niepójście na studia nie oznacza, że bez nich będziesz łatwiej. Prawda jest taka, że może być jeszcze ciężej, ale warto iść do przodu i nie zniechęcać się przy małych porażkach, z których każda będzie się wydawała ślepą uliczką. Wszystko to kwestia podążania za pragnieniem.
Jeśli zrezygnujesz, to nic nie osiągniesz. Sekret polega na tym, aby za każdym razem wstawać i iść do przodu. Kiedy czujesz, że już więcej nie możesz, to może być znak, że tak naprawdę jesteś bliżej celu, niż Ci się wydaje. Musisz iść do przodu i widzieć dla siebie szansę w każdej przeszkodzie, którą pokonujesz.
Kiedy porażka Cię przytłoczy, najłatwiejszym i najbardziej logicznym rozwiązaniem jest rezygnacja. To właśnie robi większość ludzi - Three Feet From Gold autorstwa Napoleona Hilla
Tajemna sztuka Google’owania
Wiedz, że gdy zaczęło się programować, to nie za wiele rzeczy ma jeszcze sens. Nie musisz jednak znać odpowiedzi na wszystkie pytania - ważne jest wiedzieć, jak je znaleźć. Programowanie polega na rozwiązywaniu problemów. Jeśli nie wiesz, jak coś rozwiązać, to musisz znaleźć na to sposób. Wyszukaj dany problem w Google lub znajdź kogoś, kto wie, jak go rozwiązać i wyciągnij wnioski - to najlepszy sposób na naukę.
Dobra rada: wszystkie problemy, z którymi się mierzysz, zostały prawdopodobnie już przez kogoś rozwiązane. Nie staraj się odkrywać na nowo Ameryki.
Rzadko da się wywiązać z deadline’u
Nie jest tak łatwo coś oszacować, bez względu na to, jak dobry masz plan. Istnieje kilka sposobów lub strategii stosowanych przez firmy w zakresie zarządzania projektami. Najbardziej popularny jest chyba Agile. Bez względu na to, jak szczegółowo opisany jest proces developmentu, to na drodze pojawią się przeszkody. Bez względu na to, jak świetny jest każdy członek zespołu, to deadline będzie niedokładny i pojawi się opóźnienie.
Deadline nigdy nie jest dokładny, a w przypadku budowania aplikacji korporacyjnych, może nawet nastąpić kilkumiesięczne opóźnienie, co jest OK. W przypadku małych projektów jednak właściciele małych firm są bardziej surowi. Jeśli planujesz robić projekty poboczne, jednym z najczęściej zadawanych pytań lub żądań będzie „jaka jest przewidywana data produkcji?” Niektórzy ludzie biznesu nie dbają o procedurę, bo ważny jest dla nich deadline.
Uważaj zatem. Zwykle trzymają się sztywno tego, co im podasz, zatem lepiej wydłużyć trochę deadline i dać sobie więcej czasu i przestrzeni na identyfikację problemów i debugowanie. Lepiej ich zaskoczyć niż rozczarować. Upewnij się, że wyznaczasz standardy, ponieważ tak Cię będą traktować.
60% debugowania i 40% kodowania
To najtrafniejsza rada, jaką kiedykolwiek otrzymałam.
Większość czasu spędziłam na debugowaniu. Najnowszym projektem, który tworzyliśmy, była aplikacja mobilna na Androida dla klienta z branży opieki zdrowotnej. Użyliśmy React Native, a ja byłam programistką front endu. Powiedzmy, że zbudowanie interfejsu zajęło około dziesięciu dni. Resztę dni spędziłam na debugowaniu wszystkich błędów spowodowanych przez zależności, numerację wersji i pakiety, które nie pasowały do bieżących wersji innych pakietów.
To był mój pierwszy projekt na Androida. Spędziłam tygodnie na debugowaniu niektórych z jego właściwości, upewniając się, że wszystkie pasują do poprawnych wersji, w tym do programów innych firm, z których korzystałam. Część kompilacyjna jest najbardziej rozrywkowa, podczas gdy debugowanie wiąże się z całym stresem. To część pracy, którą trzeba wykonać, ale jest ona bardzo czasochłonna.
Moja rada jest taka: gdy męczysz się z tym samym problemem lub błędem przez godzinę, postaraj się zrobić sobie przerwę. Zrób coś innego i uwolnij swój umysł, ponieważ czasami sami sobie robimy pod górkę.
Będziesz dużo udawać, że coś rozumiesz
Sama tak robiłam i robię to nawet dzisiaj. Mam kilku kolegów i koleżanki, którzy lubią rozmawiać o innych technologiach, z których korzystają lub o nowych technologiach, którymi są zainteresowani. Były chwile, w których po prostu machałam głową i udawałam, że rozumiem. To jest OK. Co więcej, nie tylko Ty się tak czujesz.
Na świecie istnieje zbyt wiele technologii, żeby się ich wszystkich nauczyć.
Nie kuj na pamięć, lepiej zrozum, jak coś działa
Cały czas podkreślam znaczenie uczenia się i opanowywania podstaw programowania. Zaczniesz od kopiowania i wklejania kodu z samouczków, repozytoriów itp. Jest to OK, dopóki rozumiesz kod, który kopiujesz, bo jeśli nie, to niczego się nie nauczysz.
Po kilku miesiącach powinieneś być w stanie zrozumieć niektóre z nich. Powinieneś móc zapoznać się z częścią składni i zrozumieć niektóre zasady programowania. Spróbuj rozwiązywać problemy bez kopiowania ich. Zamiast tego, buduj własny blok kodu. Użyj własnego podejścia, stylu i rozwiązuj problemy na własny sposób. Chodzi o to, aby nie spędzać zbyt wiele czasu na etapie kopiowania pracy innych.
Nie bój się rozwiązywać problemów na swój własny sposób. O wiele więcej nauczysz się metodą prób i błędów. Nie ma lepszego podejścia niż to. Krzywa uczenia się zajmie trochę czasu, ale o to chodzi w programowaniu.
Dokumentacja Cię uratuje
Twoje przyszłe ja będzie Ci za to wdzięczne. Kiedy zaczniesz, będziesz się zajmować małą liczbą projektów. Potem dojdą inne i tak będą dochodzić, aż stracisz rachubę.
Wyobraź sobie taką sytuację. Aktualnie pracujesz nad swoim projektem numer 11 i nagle Twój szef pyta Cię o projekt numer 2. Chce, żebyś kontynuował pracę nad tym projektem. Co więcej, jest to teraz najwyższy priorytet. Ten projekt numer 2, nad którym pracowałeś rok temu, był wcześniej mniej priorytetowy i został odłożony na bok.
Ponieważ nikt Ci jednak nie powiedział, że tak się stanie, nie pomyślałeś o tworzeniu dokumentacji dla tego projektu. Więc kiedy wrócisz do kodu, istnieje duże prawdopodobieństwo, że o niektórych taskach po prostu zapomniałeś. Zapomniałeś o niektórych pakietach, wersjach, wymaganiach, powodach, dla których coś wybrałeś itd. Ale to nie jest najgorsze. Najgorsze jest to, że projekt numer 2 został ukończony w 60%, jak wcześniej powiedziałeś swojemu szefowi, a szef daje Ci dwa tygodnie na jego ukończenie.
Wnioski wyciągnięte. Następnym razem znajdź czas na utworzenie dokumentacji dla każdego projektu, który budujesz. Dokumentacja Cię uratuje.
Zawsze możesz się nauczyć czegoś nowego
To bardzo istotne.
Nie możesz osiąść na laurach, tylko dlatego, że opanowałeś jakiś stos technologii lub kilka języków. Jest tyle rzeczy, których się możesz nauczyć. Technologia postępuje wraz z Tobą: nie myśl, że Twoja obecna wiedza pomoże Ci za 10 lat. Ucz się czegoś cały czas, ponieważ web development to ciągła nauka. Jest to dzięki temu bardziej ekscytujące, bo nigdy nie stoisz w miejscu i zawsze masz coś do odkrycia.
Możliwości przychodzą i odchodzą. Jedna nadejdzie za sekundę, a stracisz ją w mgnieniu oka. Musisz być w gotowości. Zachowaj tyle narzędzi, ile możesz, więc gdy nadejdzie okazja, bądź gotowy.
Oryginał tekstu w języku angielskim przeczytasz tutaj.