Ukryty pod warstwą kodu język pragnie być poznany.

W chwili pisania tego artykułu zapytanie "jakiego języka programowania uczyć się jako pierwszego" daje 517 milionów wyników wyszukiwania. Każda z tych stron będzie zachwalać jeden konkretny język, a 90% z nich ostatecznie poleci Pythona lub JavaScript.
Bez zbędnych wstępów chciałbym oficjalnie zadeklarować, że wszystkie te 517 milionów stron się myli i stwierdzić, że językiem, którego należy uczyć się jako pierwszego — fundamentalna logika.
Po prostu znać, jak kodować, to już nie wystarcza. Rynek jest tak nasycony absolwentami uczelni i kursów, że pozycja juniora praktycznie przestała istnieć*. Aby odnieść sukces w dzisiejszym świecie, musisz zarówno kodować, jak i mieć rozwinięte fundamentalne myślenie logiczne.
* tutaj i dalej, proszę pamiętać, że to tłumaczenie, a sytuacja na rynku pracy u autora i w Twoim kraju może być różna (jak i inne niuanse), co jednak samo w sobie nie czyni oryginalnego artykułu gorszym — uwaga tłumacza.
Moja pierwsza lekcja informatyki
Moje pierwsze spotkanie z informatyką miało miejsce na zajęciach fakultatywnych, które wziąłem w klasie 10. Już pierwszego dnia, wchodząc do sali, byłem zachwycony, widząc przed sobą dużą ilość wiaderek lodów i różnych dodatków. Po tym, jak wszyscy się usiedli, nauczycielka ogłosiła:
„Dziś będziemy degustować samodzielnie przygotowane lody. Ale z jednym warunkiem: musicie sporządzić listę konkretnych instrukcji, jak przygotować deser, a ja będę ich przestrzegać”
„Nie ma sprawy, — pomyślałem — ta lekcja nie potrwa długo”. Gdzieś po minucie naszkicowałem doskonały przepis na lody moich marzeń:
- Wziąć trzy kulki malinowych lodów i wrzucić je do miski
- Otworzyć sos czekoladowy i dodać dwie łyżki do tej samej miski
- Dodać bitą śmietanę do miski
- Posypać to wszystko cukrowymi pałeczkami i położyć wisienkę na wierzchu
Moja nauczycielka — „komputer” w tej uroczej metaforze — odegrała bardziej sarkastyczno-literalne przedstawienie, niż kiedykolwiek widziałem. Zaczęła energicznie wkładać łyżkę do wiaderka z lodami, nawet nie dotykając pokrywki.
„Dobrze, dobrze, ale najpierw muszę to otworzyć!” — zawołałem, próbując jak najszybciej zdobyć przysmak.
„Nie napisałeś tego w instrukcji, a ja nie mogłam przygotować dla ciebie lodów. NASTĘPNY!”
Przewinę czas do próby nr 2
- Otwórz malinowe lody, zdejmując wieczko
- Wziąć trzy kulki malinowych lodów i wrzucić je do miski
- Otworzyć sos czekoladowy i dodać dwie łyżki do tej samej miski
- Dodać bitą śmietanę do miski
- Posyp wszystko cukrowymi pałeczkami i połóż wiśnię na wierzchu
No teraz to na pewno nie powinno być problemów. Nawet na wszelki wypadek upewniłem się, że wszystkie składniki do stworzenia mojego kulinarnego arcydzieła są otwarte.
Nauczycielka zdjęła wieczko, nałożyła trzy gałki lodów do miski. „W końcu mój wspaniały lód zaczął się urzeczywistniać!” Następnie otworzyła sos czekoladowy i dodała dwie łyżki do miski. Nie „dodała czekoladowego sosu z dwóch łyżek” — nie pomyślcie — ona oczywiście włożyła do miski same łyżki. Bez sosu w nich. Znowu nie zatroszczyłem się o dokładne opisywanie wszystkiego. Po tym, jak reszta została zrealizowana w ten sam sposób, otrzymałem miskę z lodami i dwiema łyżkami, ledwo widocznymi pod morzem bitej śmietany. Na wierzchu była para cukrowych pałeczek.
Wydaje mi się, że w tym momencie w końcu dotarło do mnie: komputer — logika w próżni. Nie zna okoliczności i nie robi założeń. Wykonuje tylko ściśle sformułowane instrukcje i podąża za nimi dosłownie.
Mój końcowy wynik był rezultatem długiej, ale niezbędnej serii prób i błędów:
- Otwórz, jeśli jeszcze nie otworzone, każde z następujących opakowań: malinowe lody, sos czekoladowy, bita śmietana, cukrowe pałeczki.
- Wyjmij miskę i postaw przed sobą
- Weź łyżkę do lodów i jeden po drugim umieść trzy gałki malinowych lodów w misce. Odłóż łyżkę do lodów na miejsce.
- Weź słoik sosu czekoladowego, nabierz sos i wylej zawartość łyżki do miski. Powtórz czynność nabierania i wylewania sosu jeszcze raz. Odłóż łyżkę i słoik na miejsce.
- Weź i odwróć do góry nogami opakowanie bitej śmietany i, trzymając je nad miską, polewaj lody przez 3 sekundy, a następnie włóż opakowanie z powrotem na miejsce.
- Weź słoik cukrowych pałeczek, wysyp około czterdziestu pałeczek do miski i odłóż słoik na miejsce.
- Weź jedną wiśnię z miski z wiśniami i połóż ją na wierzchu lodów.
- Przekaż uczniowi miseczkę z gotowym lodami i łyżkę.
Ostatni punkt był szczególnie ważny, ponieważ bez niego nauczycielka po prostu zaczęła jeść moje lody.
Ale to właśnie jest programowanie. Intensywne tworzenie starannie dopasowanego zestawu instrukcji dla komputera. Ostatecznie każdy język programowania sprowadza się do tworzenia instrukcji.
Kariera w programowaniu
Programowanie osiągnęło taki etap, że trudno jest je omawiać jako jedną branżę, tak samo jak trudno jest używać jednego słowa „programista” jako opisu stanowiska. Dwóch programistów może być równie poszukiwanych przez rynek, znając zupełnie różne języki, więc umiejętność tworzenia oprogramowania jest ważniejsza od znajomości konkretnego języka. Uniwersalny atrybut wspólny dla wszystkich udanych programistów – fundamentalna logika.
Najlepszy programista potrafi spojrzeć na kod z nowej perspektywy. I to jest zasadniczo ważne, ponieważ większość produktów programowych to zestaw niedokumentowanych fragmentów złego kodu. Muszą być one stale zbierane razem, załatwiając luki w razie potrzeby. Osoby, które nie potrafią połączyć rozproszonych punktów w jednolitą linię, będą musiały wiecznie pozostawać w drugorzędnej roli.
Wszystko to prowadzi mnie do kolejnej deklaracji, tym razem pogrubioną: fundamentalna wiedza zawsze była i będzie kluczowa dla programisty.
Języki przychodzą i odchodzą. Ramy stają się przestarzałe, a firmy reagują na popyt, zmieniając wykorzystywany stos technologiczny. Czy jest coś, co nigdy się nie zmieni? Tak — fundamentalna wiedza, która dlatego nazywa się fundamentalną, że leży u podstaw wszystkiego!
Jak poprawić fundamentalną wiedzę
Zdjęcie Krzysztofa na
Jeśli szukasz punktu wyjścia do poprawy swego logicznego myślenia, spróbuj zacząć stąd:
Znajomość złożoności swojego programu
Nazywana również Big O „złożonością algorytmu” nazywa się zależność czasu wykonania programu od rozmiaru jego danych wejściowych (n). Trzymanie ręki na pulsie używanych algorytmów to ważny krok.
Znaj swoje struktury danych
Struktury danych są podstawą każdego nowoczesnego programu. Wiedza na temat tego, którą strukturę zastosować w danym przypadku, jest osobną dyscypliną. Struktury danych są bezpośrednio związane z złożonością czasu wykonywania, a wybór niewłaściwej struktury może prowadzić do fundamentalnych problemów z wydajnością. Wyszukiwanie elementu w tablicy równa się O(n), co wskazuje na wysokie koszty używania tablic jako danych wejściowych. Wyszukiwanie w tabeli hashowej to O(1), co oznacza, że w tym przypadku czas wyszukiwania wartości nie zależy od liczby elementów.
Na moje rozmowy kwalifikacyjne przychodzili ludzie, którzy twierdzili, że wyszukiwanie w tablicy jest szybsze niż w tabeli hashowej. Był to nieomylny znak, że nie warto ich zatrudniać — znaj swoje struktury danych.
Czytaj / oglądaj / słuchaj
Takie strony jak , i to doskonały wybór do nauki nowych języków programowania. Jednak do podstaw polecam książki poświęcone ogólnym zasadom, praktykom i stylom kodowania. Najbardziej polecane książki to „Wzorce Projektowe”, „Refaktoryzacja. Udoskonalanie istniejącego kodu”, „Perfekcyjny Kod”, „Czysty Kod” i „Programista Pragmatyk”. Na koniec każdy programista powinien mieć przy sobie kopię „”.
Ćwicz!
Nie zrobisz jajecznicy, nie łamiąc jajek. Takie strony jak , , , i oferują tysiące interesujących zadań do przetestowania wiedzy o strukturach danych i algorytmach. Spróbuj swoich sił w rozwiązaniu interesującego problemu, umieść swoją wersję na GitHubie, a następnie zobacz, jak podeszli do tego inni. To nas prowadzi do ostatniego punktu:
Czytaj cudzy kod
Największym błędem, jaki można popełnić na drodze rozwoju, jest podążanie tą ścieżką w pojedynkę. Rozwój oprogramowania to w dużej mierze praca zespołowa. Razem tworzymy standardy, razem popełniamy błędy i, wbrew wszelkim niepowodzeniom, razem stajemy się lepsi. Czas poświęcony na czytanie cudzego kodu zwróci się wielokrotnie. Tylko upewnij się, że to dobry kod.
Najlepsza rada, jaką mogę dać, to nigdy nie wstydzić się, że czegoś jeszcze nie wiesz. Jak już wspomniano, nasza branża jest ogromna, a liczba technologii nieprzebrana. Potrzeba dużo czasu i wysiłku, aby zbudować ogólny obraz, jeszcze więcej, aby stać się profesjonalistą w czymś konkretnym, a znacznie więcej, aby szlifować swój kunszt w danej dziedzinie. Dam ci znać, gdy sam to osiągnę.
Źródło: habr.com
