Co to znaczy myśleć jak programista?

Pierwsze Kroki

readTime

10 min

Co to znaczy myśleć jak programista?

Kiedy po raz pierwszy uczysz się programowania i stawiasz swoje pierwsze kroki, łatwo jest poczuć się jak dziecko we mgle. Wszystko jest nieznane, nie wiesz gdzie iść i co robić. To jak nauka gry na nowym instrumencie lub nauka języka obcego.

Całkowicie to rozumiem bo sam przez to przechodziłem. Kiedy zaczynałem programować, nie miałem żadnego doświadczenia komercyjnego, nie ukończyłem też studiów informatycznych i postanowiłem samodzielnie nauczyć się programowania.

Niezależnie od tego, co chcesz robić i w którym kierunku podążasz, pierwszym krokiem do zostania programistą jest myślenie jak programista.

▶️

Co to jest mentalność programisty?

Powszechnym błędnym przekonaniem na temat programistów jest to, że wiedzą oni wszystko. W rzeczywistości jednak tak nie jest. Programiści mają unikalne podejście do rozwiązywania problemów, które bardzo dobrze sprawdza się również w życiu codziennym.

Pomyślmy przez chwilę o programowaniu jak o mówieniu. Kiedy mówisz, starasz się skutecznie komunikować z ludźmi wokół ciebie. Kiedy programujesz, starasz się komunikować z maszyną. W obu przypadkach nie musisz znać każdego słowa lub elementu języka, wystarczy, że wiesz wystarczająco dużo, aby przekazać swoje pomysły tak, aby zostały zrozumiane.

Kiedy używasz kodu do rozwiązywania problemów, wówczas nie chodzi o uczenie się kodu na pamięć, jak wierszyka w podstawówce. Chodzi raczej o poznanie podstaw, różnych koncepcji itd. i zastosowanie ich w praktyce. Kiedy zrozumiesz, jak podzielić problem na mniejsze części i zastosować zasady programowania, nie musisz uczyć się wszystkiego na pamięć. Po prostu uczysz się, jak podejść do rozwiązania problemu i jest to umiejętność, którą doskonalisz wraz z doświadczeniem i z każdym kolejnym razem będziesz po prostu w tym efektywniejszy.

Trzy rzeczy, o których należy pamiętać podczas tworzenia oprogramowania

  1. Wypróbuj rozwiązanie.
  2. Jeśli to nie zadziała, spróbuj innego.
  3. Jeśli to nie zadziała, powtarzaj krok 2 aż do uzyskania rozwiązania.

Pamiętaj, że jako programista będziesz napotykać problemy przez większość czasu w Twojej pracy. Jeśli dopiero zaczynasz, będziesz odczuwał mniejsze zainteresowanie rozwiązywaniem błędów/problemów, ponieważ zajmie to więcej czasu. Aczkolwiek musisz uzbroić się w cierpliwość i przejść przez ten pierwszy i najtrudniejszy etap zamiast poddawać się i zrezygnować z nauki programowania.

Co dokładnie oznacza myśleć jak programista? 

Kiedy napotkasz problem, zatrzymaj się na chwilę i postaraj się zrozumieć go uważnie. Następnie określ co chcesz osiągnąć i jaki jest oczekiwany rezultat. W kolejnym etapie zastanów się, jakie są niezbędne kroki do rozwiązania tego problemu.

Oprzyj się pokusie ślepego próbowania i od razu pisania kodu na zasadzie a może się uda. Zamiast tego cofnij się i zastanów nad tym, co robisz. Powolni programiści są zawsze lepszymi programistami, dlaczego...? ponieważ zamiast szybko wskoczyć do rozwiązania i użyć metody prób i błędów, zastanawiają się nad tym, co należy zrobić, a następnie to robią. Dzięki temu zazwyczaj nie tracą czasu tylko od początku przybliżają się do rozwiązania problemu.

Przyjrzyjmy się prostemu przykładowi, w jaki sposób podzielić problem na elementy składowe, tak jak programista podchodzi do problemu.

Gdybyś miał opisać, jak otworzyć słoik, nie mógłbyś po prostu powiedzieć "otwórz słoik". Musisz to wyjaśnić w odpowiednim języku, zrozumiałym dla tej osoby lub maszyny, której chcesz to wyjaśnić, jakie kroki są wymagane do otwarcia tego słoika. Na przykład, możesz zaoferować następujący zestaw instrukcji:

  1. Podnieś słoik lewą ręką
  2. Umieść prawą rękę nad pokrywą
  3. Zaciśnij obie ręce
  4. Obróć prawą rękę w kierunku przeciwnym do ruchu wskazówek zegara, a lewą w kierunku zgodnym z ruchem wskazówek zegara.
  5. Obracaj, aż pokrywka oddzieli się od dolnej części słoika
  6. Uwolniij napięcie w obu dłoniach

Jak programista podchodzi do rozwiązania problemu?

▶️

1. Zrozum problem

Dlaczego problemy są trudne? , ponieważ ich nie rozumiesz.

Skąd wiadomo, że rozumie się problem? Gdy potrafisz wyjaśnić go prostymi słowami. Pamiętasz, jak utknąłeś nad jakimś problemem, zacząłeś go wyjaśniać i natychmiast dostrzegłeś dziury w logice, których wcześniej nie widziałeś?

Większość programistów zna to uczucie. Dlatego właśnie powinieneś zapisać swój problem, narysować diagram lub opowiedzieć o nim na głos (niektórzy używają gumowej kaczki).

"Jeśli nie potrafisz wyjaśnić czegoś w prosty sposób, to znaczy, że tego nie rozumiesz". - Richard Feynman

2. Planuj

Nie rzucaj się od razu w wir rozwiązywania problemów bez planu ( z nadzieją, że uda ci się przez to przebrnąć).

Zamiast tego, zaplanuj swoje rozwiązanie!

Jeśli nie możesz zapisać dokładnych kroków, to znaczy że jeszcze nie do końca jesteś w stanie rozwiązać ten problem i będziesz improwizować.

W programowaniu oznacza to, że nie należy od razu zaczynać od pisania kodu. Daj swojemu mózgowi czas na przeanalizowanie problemu i przetworzenie informacji.

Aby uzyskać dobry plan, odpowiedz na to pytanie: „Biorąc pod uwagę dane wejściowe X, jakie kroki są niezbędne do zwrócenia danych wyjściowych Y?”.

Porada: programiści mają świetne narzędzie, które im w tym pomaga… Komentarze!

3. Podziel duże zadanie na mniejsze etapy

To najważniejszy krok ze wszystkich. Nie próbuj rozwiązywać jednego dużego problemu bo zazwyczaj nie zakończy się to sukcesem i na koniec będzie smuteczek.

Zamiast tego podziel je na podproblemy. Takie podproblemy są znacznie łatwiejsze do rozwiązania.

Następnie rozwiąż każdy podproblem jeden po drugim. Zacznij od najprostszego. Najprostsze oznacza, że znasz odpowiedź już teraz (lub jesteś bliżej niż dalej od tej odpowiedzi).

Po rozwiązaniu każdego podproblemu połącz kropki.

Połączenie wszystkich pod-rozwiązań da Ci rozwiązanie pierwotnego problemu.

Ta technika jest kamieniem węgielnym rozwiązywania problemów. Zapamiętaj ją. Jest to technika “zmniejszania problemu”

Załóżmy na przykład, że jesteś świeżakiem i masz napisać program, który odczyta dziesięć liczb i obliczy, która liczba jest trzecią najwyższą. Dla zupełnie początkującego programisty może to być trudne zadanie, nawet jeśli wymaga tylko podstawowej składni.

Jeśli utkniesz w martwym punkcie, powinieneś zredukować problem do czegoś prostszego. Zamiast trzeciej największej liczby, co powiesz na znalezienie najwyższej liczby całkowitej? Wciąż za trudne? A co ze znalezieniem największej z trzech liczb? Albo większej z dwóch?

Zmniejsz problem do punktu, w którym wiesz, jak go rozwiązać i napisz rozwiązanie. Następnie nieznacznie rozszerz problem i przepisz rozwiązanie, aby je dopasować, i kontynuuj, aż wrócisz do punktu wyjścia

4. Co zrobić jeśli utknąłeś?

Po pierwsze, weź głęboki oddech. Po drugie, nie martw się, to normalne i zdarza się każdemu.

Różnica polega na tym, że najlepsi programiści są bardziej zaciekawieni błędami niż zirytowani.

Oto trzy rzeczy, które warto wypróbować w obliczu takiej sytuacji:

Debugowanie: Przejdź krok po kroku przez swoje rozwiązanie, próbując znaleźć błąd.

„Sztuka debugowania polega na ustaleniu, co tak naprawdę kazałeś zrobić swojemu programowi, a nie co myślałeś, że mu kazałeś.” – Andrew Singer

Ponowna ocena: Cofnij się o krok. Spójrz na problem z innej perspektywy. Czy jest coś, co można wyabstrahować do bardziej ogólnego podejścia?

Czasami tak bardzo gubimy się w szczegółach problemu, że pomijamy ogólne zasady, które mogłyby rozwiązać problem na bardziej ogólnym poziomie. Sam miewam taki problem, że jak za bardzo się zanurzę to mam klapki na oczach a bardzo często są o wiele prostsze i lepsze rozwiązania

Uwaga dodatkowa: Innym sposobem ponownej oceny jest rozpoczęcie od nowa. Usunięcie wszystkiego i rozpoczęcie od nowa ze świeżym spojrzeniem. Mówię poważnie. Będziesz pod wrażeniem, jak skuteczne jest to rozwiązanie i często to jedyna opcja gdy zbyt bardzo zakopiesz się w problemie.

Szukanie w Internecie: Wujek Google nigdy nie zawodzi i bez względu na to, jaki masz problem, ktoś prawdopodobnie go rozwiązał. Znajdź takie rozwiązanie nawet jeśli sam rozwiązałeś problem! (Możesz się wiele nauczyć z rozwiązań innych ludzi).

Uwaga: Nie szukaj rozwiązania dużego problemu. Szukaj tylko rozwiązań podproblemów. Dlaczego? Ponieważ jeśli nie będziesz walczyć (nawet trochę), niczego się nie nauczysz. Jeśli niczego się nie nauczysz, zmarnujesz swój czas.

Trzy główne kroki, które każdy programista powinien znać podczas tworzenia oprogramowania

▶️

1. Spraw, by działało

Kiedy napotykasz problem, pierwszym krokiem jest sprawienie, by problem został rozwiązany a kod zadziałał. Celem jest jedynie zrozumienie problemu i znalezienie rozwiązania. Nic więcej. Możesz myśleć, że twój program powinien być również poprawny i optymalny, ale przedwczesna optymalizacja jest zawsze głupim pomysłem.

Skończy się to koszmarami związanymi z Twoim kodem. Pamiętaj, że dobre rozwiązanie musi ewoluować i z czasem stawać się coraz lepsze… zacznij od „dowolnego” rozwiązania.

Możesz sprawić, by kod robił to, co powinien, w dowolny brzydki, niechlujny sposób, o ile tylko działa. Mówimy o oprogramowaniu i nie ma kosztów materiałów, więc zamiast próbować znaleźć idealne rozwiązanie w pierwszej próbie, znajdź tylko rozwiązanie, które sprawi, że funkcja będzie działać w twoim oprogramowaniu.

Nie trać czasu na martwienie się o to, czy twoje podejście jest idealne, kod elegancki i doskonały. Jeśli uważasz, że istnieje wiele rozwiązań i nie jesteś w stanie znaleźć najlepszego z nich, wybierz jedno i idź z nim dalej. Po zakończeniu upewnij się, że kod działa i jest stabilny.

2. Zrób to dobrze

Od pierwszego kroku masz już działające rozwiązanie swojego problemu i wiesz, że będzie ono nadal działać, gdy będziesz je modyfikować. Teraz należy postępować zgodnie z podstawami refaktoryzacji, aby poprawić jakość kodu. Postępuj zgodnie z dobrymi praktykami, zasadami i wzorcami.

Robiąc to, upewnij się, że Ty lub ktoś inny rozumie i wprowadza zmiany bez większego wysiłku. Utrzymanie kodu stanie się łatwiejsze dla Ciebie i innych programistów.

3. Zrób to szybko

Teraz musisz zmierzyć wydajność swojego kodu, co jest trzecim krokiem…optymalizacji kodu. Cóż, jest to najtrudniejszy krok w programowaniu, ale jeśli istnieją jakieś oczywiste wąskie gardła wydajności z łatwymi rozwiązaniami, należy je wdrożyć teraz.

Wiele firm po prostu wypuszcza na rynek rozwiązanie, które działa na etapie „poprawiania”. Zdecydowanie zaleca się, aby jeśli masz wystarczająco dużo zasobów i czasu, zawsze myśleć o wydajności swojego kodu. Optymalizacja kodu to nie tylko „jak mogę sprawić, by ten kod działał szybciej”. To coś więcej.

Wykonanie Twojego kodu powinno zajmować mniej czasu i zużywać mniej zasobów. Powinieneś myśleć o tym, jak mogę uczynić go bardziej testowalnym, jak mogę uczynić go bardziej rozszerzalnym, jak mogę uczynić ten kod bardziej wartościowym dla użytkownika jak i dla pozostałych programistów.

Naucz się nie poddawać

Gdy już zaczniesz programować, możesz spędzić wiele godzin na szukaniu błędu i poczuć, że jesteś bliski rezygnacji, rzucenia wszystkiego i wyjechania w Bieszczady.

Jak ominąć te typowe problemy w pracy programisty?

Wytrwałość

Najważniejszą rzeczą, niezależnie od sytuacji, jest wytrwałość.

Na początku, gdy szukasz sposobów na rozwiązanie problemów, przekraczaj swoje granice – przynajmniej trochę bardziej niż zwykle.

Kiedy czujesz się wyczerpany, sfrustrowany i gotowy do poddania się, często właśnie wtedy w końcu znajdujesz rozwiązanie. Moment, w którym większość ludzi się poddaje, jest momentem, w którym musisz iść dalej, ponieważ wtedy się doskonalisz. Wszystko, co niewygodne, jest darem, dzięki któremu możemy rozwijać się jako jednostki i wzmacniać nasz charakter.

Pierwsze miesiące są najtrudniejsze. Nie martw się, z doświadczenia wiem, że będzie lepiej. Ciężka praca, którą w to wkładasz, ma znaczenie. Gwarantuję, że z czasem będzie coraz lepiej.

Pamiętaj o swoich celach czyli dlaczego chcesz zostać programistą

Innym sposobem na popychanie się do przodu jest pamiętanie o swoich celach. Dlaczego chcesz nauczyć się programowania? Zachowaj listę swoich celów na komputerze, w notatniku lub przyklej ją do ściany. Lubię tworzyć listy swoich celów, a następnie przypominać sobie o nich z rana. To wyznacza mi intencję na dany dzień i pomaga skupić się na ich osiągnięciu.

Istnieje wiele sposobów na rozpoczęcie nauki. Możesz uczyć się samodzielnie, uczestniczyć w Bootcampie, studiować informatykę lub po prostu uczyć się programowania w dowolny sposób. Ale bez względu na to, jak się uczysz, pamiętaj o swoich celach. To one są powodem, dla którego się uczysz – i to one pomogą ci przetrwać, gdy utkniesz w martwym punkcie.

źródła:

authorImg

Witek Pruchnicki

Z pasją dzielę się wiedzą o programowaniu i nie tylko na różne sposoby