Czym Jest Szkoła Dobrego Kodu?

W Jednym Zdaniu:
Jest to miejsce, w którym pomogę Ci nauczyć się myśleć jak dojrzały inżynier programowania.

Niezależnie od tego, czy jesteś junior developerem, stażystą, studentem, chcesz zmienić branżę. Niezależnie od tego, czy dopiero wczoraj dowiedziałeś się, czym jest instrukcja warunkowa if, czy może już stawiasz swoje mikroserwisy opakowane w dockera (chociaż jeśli to robisz, to raczej jesteś już samodzielny, chyba że jesteś jedną z tych osób, które ganiają za trendami, nie rozumiejąc kontraktu equals hashcode).

Także, jeśli zależy Ci na tym, by stać się w pełni samodzielnym programistą, to jest miejsce dla Ciebie!


Zdefiniujmy Sobie Określenie Samodzielny Programista.

Definicji można stworzyć kilka, my przyjmiemy dwie:

  • Ktoś pracujący na etacie, kto podpisał umowę jako mid/regular developer (junior zdecydowanie nie jest samodzielny xd.)
  • Ktoś, kto jest w stanie samodzielnie zaprojektować i zaprogramować aplikację, którą można sprzedać. Kalkulatory z tutoriali się nie liczą, przykro mi. Do tego potrafi ją wdrożyć na jakiś serwer lub w przypadku stanadlone przygotować instalacje / zipa typu portable.

Samodzielny, zdecydowanie nie musi oznaczać, że pracujesz sam. Oznacza, że jeśli szef/klient powierzy Ci zadanie to, będziesz je w stanie w zadowalający sposób rozwiązać, często konsultując pomysły z kolegami z zespołu.

W jaki sposób możesz stać się samodzielnym programista?

Po pierwsze i najważniejsze, jeśli jeszcze nie pracujesz jak programista, zamień swój cel z:

Chcę zostać junior X developerem – gdzie X to nazwa technologii

na:

Zostanę samodzielnym inżynierem oprogramowania

Różnice między programistą a inżynierem oprogramowania kiedyś sobie omówimy :). Kluczowa jest jednak zamiana junior na samodzielny. Myśl o tym, że chcesz być w stanie dostarczyć aplikacje, a nie by załapać się psim swędem na etat. Samo to nastawienie wiele zmieni na rozmowie rekrutacyjnej – zaufaj mi :).

Jeśli chcesz długiej i wyczerpującej odpowiedzi, dlaczego warto podążać taką drogą, to webinar otwierający projekt Szkoły Dobrego Kodu jest idealną odpowiedzią.

Jedyny Skuteczny Sposób Na Naukę Programowania – nagranie

Polecam zobaczyć, zanim przejdziesz się do czytania dalszej części.

Czy będzie trudno?

Oj tak! Będzie zajebiście trudno! Zrozumienie czegoś tak „trywialnego” jak hermetyzacja lub zdania „Przedkładaj kompozycje nad dziedziczenie”, jest znacznie trudniejsze niż nauczenie się korzystania ze springa lub angulara (mowa o poziomie pozwalającym na stworzenie małej apki). Problem pojawia się co gdy coś jest troszkę inaczej niż w tutorialu, prawda? To zdanie może wydawać Ci się nieprawdziwe, ale jeśli tak jest, to nie rozumiesz, czym jest hermetyzacja, czy dlaczego powinno się wręcz unikać dziedziczenia. Przykłady można mnożyć, ale o tym w przyszłości.

Jestem tutaj by Ci pomóc. Pamiętaj jednak, że wszystko zależy od Ciebie. Ja jestem tu tylko po to, by pokazać Ci drogę i ewentualnie potrzymać latarkę, byś nie skończył w jakieś dziurze.

Jakimi wartościami kieruje się Szkoła Dobrego Kodu?

W zasadzie są trzy:

  • Ucz się poprzez praktykę, ćwicz, testuj, poprawiaj. Gdy już coś wiesz, ustrukturyzuj wiedzę, czytając książki, dokumentacje. Oglądając jakiś tutorial, miej w głowie myśl: „W jaki sposób wiedzę z tego odcinka mogę wykorzystać w swojej aplikacji referencyjnej”.
  • Ucz się małymi etapami. Nie musisz od razu robić potężnej aplikacji webowej. Każdy problem można podzielić na wiele małych problemów. Rozwiązuj je po kolei! Jeśli chcesz zrobić sklep internetowy, w pierwszej kolejności zrób to w wersji desktop. Skup się jednak na tym, by model był poprawny…
  • Pierdol wszystkie buzzWordy, przestań marnować czas na poznawanie każdej nowości. Zainwestuj w ponadczasowe wartości, które nie zmieniły się od dziesiątek lat: Testowanie jednostkowe, odpowiednia jakość kodu, wzorce projektowe, modelowanie, SOLID itd… Zrozum, co jest prawdziwym trzonem tego wszystkiego, zamiast przełączać się z tygodnia na tydzień na nowości. NA POZNANIE MNÓSTWA TECHNOLOGI JESZCZE PRZYJDZIE CZAS! Bądź minimalistą w doborze narzędzi i technologii. To tak jakbyś brał się za jazdę motocyklem, nie umiejąc jeździć rowerem…

Czy technologia naprawdę nie ma znaczenia?

Weźmy sobie jakiegoś kierowcę formuły 1, dajmy na to naszego rodaka Roberta Kubicę.
Czy miałbyś z nim szansę w wyścigu, gdybyś wsiadł do najlepszego bolidu?
– szczerze wątpię
Czy miałbyś szansę gdyby z bolidu F1 przesiadł się do czegoś znacznie wolniejszego? Może nie Fiata 126p, ale np. Tesli czy jakiegoś tam Porszaka?
– raczej wciąż dostałbyś baty…

W IT jest dokładnie tak samo.

Musisz nauczyć się prowadzić, czyli z potocznego na nasze rozumieć fundamenty inżynierii oprogramowania.

Alternatywa to nauczyć się jeździć jednym modelem auta (jak to często wygląda na nauce jazdy. Łuk na odpowiednie obroty kierownicy w zależności od rodzaju auta itd…). Wybierz sobie jakiś framework np. angular i naparzaj strony internetowe. Problemy zaczną pojawiać się bardzo szybko. Co jeśli Twoja technologia za dwa, trzy lata zacznie umierać? Patrz Flash po powstaniu HTML 5.

Przemciu, przekonałeś mnie, JAK MAM ZACZĄĆ?!

Tak jak pisałem, jestem tu tylko by wskazać Ci drogę, ale nawet tę musisz wybrać po części samodzielnie. Proces opiszę w pięciu krokach, ale w dwóch to Ty musisz podjąć decyzje. To lecimy:

Your Content Goes Here

  1. Oglądasz webinar otwierający „Jedyny Skuteczny Sposób Na Naukę Programowania”, by dowiedzieć się jaki projekt wybrałem, dlaczego taki, co można dzięki niemu osiągnąć.
  2. Podejmujesz pierwszą ważną decyzję:
    1. Aplikacja zaproponowana na webinarze.
    2. Własna aplikacja, z którą zwiążesz się emocjonalnie. Z live’a wiesz, dlaczego jest to tak ważne. Jeśli nie masz pomysłu, napisz do mnie. Oferta dotycząca pomocy w wyborze czegoś na start jest zawsze aktualna.
  3. Niezależnie od wybranej drogi oglądasz nagranie „Jak zacząć z Javką” (jeszcze go nie było xd). Mówiłem o tym, jak zbudować sobie stanowisko pracy niezależnie od języka, w którym kodzimy. Java jest po prostu wybranym ekosystemem. Jakiś trzeba wybrać, by działać na konkretach – tak tutaj działamy na konkretach (zawsze!). Na spotkaniu opowiadałem też, co jest Ci potrzebne na start. GIT + Konsola + coś do budowania + coś do testowania itd. Do tego dorzuciłem jeszcze kilka tipów, np. jak zazwyczaj pracuję tj. test -> commit -> implementacja -> commit -> refactoring -> commit.
  4. Wybierasz technologie i budujesz własny mały ekosystem:
    1. Możesz wybrać Javkę. W sumie polecam, wciąż jeden z najpopularniejszych języków na świecie niezmiennie od 20 lat. Wtedy możesz 1:1 stosować rzeczy, które będą tutaj pokazywane.
    2. COKOLWIEK, ważne by było to coś wspierającego OOP. Zdecydowanie najlepsze na start. Myślenie obiektami jest naturalne dla człowieka.
  5. Samodzielnie implementujesz, testujesz, płaczesz, poprawiasz, powtarzasz do momentu, kiedy w Twojej głowie pojawia się zdanie: „Zasady SOLID zostały opracowane przez geniuszy, chciałbym pomyśleć tak jak oni…”

To tyle ode mnie. Pora na Twój ruch!

W zależności gdzie jesteś na tej drodze.

Jeśli masz jakieś pytania, a co ważniejsze wątpliwości – pisz koniecznie. Razem je rozbijemy i weźmiesz się w końcu do roboty! Na nowej drodze będzie ciężko, ale warto. Tak jak mawiał Bruce Lee (podobno)

Łatwy trening ciężka walka, ciężki trening łatwa walka.

POWODZENIA!