5 wskazówek dla początkujących programistów: jak wybrać specjalizację

7 października
Yury Yurchenko
5 wskazówek dla początkujących programistów: jak wybrać specjalizację

Yury Yurchenko, Global People Development Leader w DataArt, pracuje w IT od ponad 30 lat. Jego doświadczenie zawodowe obejmuje dobór, rozwój i zarządzanie zespołami, a także nauczanie technologii i bezpieczeństwa informacji. Teraz pomaga specjalistom w DataArt w ich rozwoju zawodowym - ustanawiając procesy, które mogą pomóc im w budowaniu planu kariery, doskonaleniu umiejętności lub zmianie technologii na bardziej obiecującą. Poprosiliśmy go, aby podzielił się swoimi wskazówkami, na co należy zwrócić uwagę przy wyborze swojej pierwszej specjalizacji w zawodzie programisty. Yury w tekście wskazuje, czy powinieneś kierować się intuicją, czy możesz odgadnąć, które technologie staną się popularne w przyszłości i dlaczego będziesz musiał uczyć się angielskiego, a wszystko to na podstawie przykładów z jego własnego doświadczenia.

1. Wskazówka pierwsza: rozważ informatykę teoretyczną ale także sprawdź swoją wiedzę w praktyce

Jeżeli zdecydowałeś się na ścieżkę klasyczną, czyli rozpocząłeś karierę w informatyce od studiów na uczelni, to proponuję potraktować informatykę jako dyscyplinę akademicką. Nie jestem pewien, czy wystarczający odsetek osób, które mogłyby dalej rozwijać informatykę, w ogóle o tym myśli. Niektóre osoby, które ze mną studiowały, robią naprawdę interesujące rzeczy w informatyce. Kariera informatyka nie jest dla wszystkich: od zawsze trudno było mi zrozumieć, jakie praktyczne zastosowania znajdują czysto teoretyczne informacje, które otrzymujemy na wykładach. Ale jeśli dla ciebie związek między dość abstrakcyjnymi obliczeniami a rzeczywistym rozwojem jest oczywisty, być może twój sposób myślenia zapewni ci poważny sukces.

Dla tych, którzy (tak jak ja) nie są zainteresowani zastanawianiem się, jak konstrukcje wymyślone przez teoretyków są faktycznie wdrażane w praktyce, dobrym pomysłem jest jak najszybsze zaangażowanie się w prawdziwe projekty. Na pierwszym roku nadal nie rozumiałem zbyt dobrze, czego się uczyłem i kim będę w przyszłości. Kiedy byliśmy studentami, niektórym z moich znajomych udało się dostać równoległą pracę jako konduktor kolejowy, motorniczy tramwaju lub taksówkarz. Miałem szczęście dostać się do centrum komputerowego Akademii Obrony Powietrznej. Technologie wojskowe były wówczas niesamowicie atrakcyjne i szybko zorientowałem się, co programiści robią w praktyce. Moi koledzy z Akademii zajmowali się wirtualizacją i modelowaniem nalotów oraz projektowaniem stacji radarowych. Wszystko to było niesamowicie interesujące, więc praktycznie mieszkałem w pracy.

Prawdopodobnie najlepszym sposobem, aby zrozumieć, jak bardzo lubisz daną rzecz, jest dotknięcie jej od śroka. Niezależnie od tego, który z dwóch scenariuszy wybierzesz, czy będą to kursy po pracy i samokształcenie, czy klasyczna edukacja z pięcioletnią nauką na uniwersytecie, nie musisz czekać na ukończenie studiów, aby rozpocząć pracę w swojej dziedzinie. Dzisiaj ludzie mają możliwość wcześniejszego wejścia do produktywnego środowiska. Możesz poszukać staży lub spróbować napisać coś własnego ze znajomymi. Najważniejsze jest, aby twoja praca sprawiała ci przyjemność.

2. Wskazówka druga: zaufaj sobie i przeanalizuj swoje emocje

Są zawody, których przedstawiciele w każdym kraju żyją odrobinę we własnym świecie. Mają swój styl komunikacji, specyficzny język i osobliwe żarty. Umieściłbym pracowników medycznych na szczycie tej listy, a zaraz za nimi programistów, a za nimi wojsko, strażaków i funkcjonariuszy organów ścigania. Jestem przekonany, że specyfika zawodowa, którą można dostrzec w ich zachowaniu, wiąże się ze sposobem myślenia, którego wymaga ich specjalizacja.

Język programowania to przede wszystkim język komunikacji - nie tylko z maszyną, ale także między sobą. Z jednej strony jest to pierwszy powód, aby zastanowić się, czy wybrany zawód naprawdę ci odpowiada. Z drugiej strony (i to jest bardzo dobra wiadomość), jeśli z radością akceptujesz te zasady myślenia, to jesteś na właściwej drodze. Gdy poznasz podstawy programowania, znacznie łatwiej będzie opanować ci dowolną z używanych technologii. Oznacza to, że każdy język może stać się twoim wstępem do zawodu. Jeśli - na przykład - Python jest obecnie modnym językiem, to dlaczego go nie wybrać?

W jednej z moich pierwszych prac powiedziano mi, że programiści nie muszą w ogóle otrzymywać wynagrodzenia, ponieważ „już kochają swoją pracę”. Dobre samopoczucie i poczucie inspiracji podczas pisania programu są bardzo ważne. Ponadto możesz znaleźć specjalizację, do której masz naturalną skłonność. Na przykład, szczególne zainteresowanie projektowaniem systemów może stanowić doskonałą podstawę do kariery w dziedzinie bezpieczeństwa informacji lub testowania.

Oto jak jedna z moich znajomych, początkująca programistka, opisuje proces swojej pracy: „Najpierw pojawia się pomysł - jesteś podekscytowany, potem piszesz kod, ale nie działa, więc sprawdzasz, a potem sprawdzasz ponownie, i voilà, znalazłeś błąd! Ale nie, wydawało ci się tylko, że znalazłeś błąd... Masz ochotę umrzeć, a potem - bum! Olśnienie! To niesamowite uczucie.". Myślę, że opisała to doskonale.

Słyszałem, że wiele osób z niewielkim doświadczeniem w prawdziwych projektach myśli że ci, którzy pracują w QA, po prostu nie są w stanie samodzielnie pisać programów - jeśli chcesz przejść do IT, ale nie nauczyłeś się na czas być programistą, po prostu zostań testerem. Ale w rzeczywistości najlepsi testerzy to ci, którzy lubią doskonalić swoje aplikacje.

Wciąż mam w głowie tę zabawną scenę: specjaliści właśnie spędzili dwa miesiące na doskonaleniu nowego interfejsu systemu płatności. Zaprosili wszystkich do obejrzenia go, pokazali na dużym ekranie i rozpoczęli sesję od chwalenia się. Ale potem ktoś wpadł na pomysł, aby pokazać program testerowi, który właśnie przechodził obok. Po prostu powiedział: "Zróbmy to.". I właśnie w tym momencie demo musiało się zakończyć: stack overflow i wszyscy po prostu wyszli...

3. Wskazówka trzecia: nie bój się błędów i zmian

Jeśli potrafisz programować, robisz to dobrze i z przyjemnością, wystarczy, że będziesz gotowy do nauki nowych technologii. Musisz być otwarty na nowe technologie, a ponadto nie możesz wykluczyć, że będziesz musiał zmienić język programowania. Co więcej, nikt nie gwarantuje, że któregoś dnia nie pomyślisz, że popełniłeś błąd przy wyborze zawodu. W tej chwili najważniejszą rzeczą, jaką musisz zrobić, jest zdecydowana ocena tego, czego dokładnie nie lubisz. Najprawdopodobniej przyczyną twojego dyskomfortu będzie nieciekawy projekt, nieprzyjemny szef, a nawet fakt, że twoi współpracownicy nie są tak fajni, jak się początkowo wydawało. Ale jeśli podoba ci się proces tworzenia programu, testowania go lub, powiedzmy, organizowania procesów programistycznych - wtedy stosunkowo łatwo jest zmienić całe otoczenie. Rynek IT jest dynamiczny i szybko wychodzi z kryzysu. Firmy zawsze konkurują o specjalistów, zwłaszcza tych, których praca jest pasją. Jeśli jesteś otwarty na nowe rzeczy, na pewno znajdziesz odpowiednią ofertę.

W świecie technologii, przy obecnym dostępie do informacji i edukacji, najważniejsze jest, aby nie być leniwym i nie bać się nowych doświadczeń. W dzisiejszych czasach istnieje wiele list najpopularniejszych, najlepiej płatnych lub ulubionych przez programistów technologii. Myślę, że warto przyjrzeć się tym listom. Wszelkie informacje mogą okazać się przydatne. Ale nie możesz oczekiwać, że po wybraniu platformy do pracy po prostu będziesz mieć szczęście i będzie to jedyna, jaką kiedykolwiek będziesz musiał opanować. Niedawno wiele osób mówiło, że za rok wszyscy będą programować w Golangu, ale z jakiegoś tak się nie stało. Nie radziłbym więc nikomu zaczynać od przestarzałej technologii tylko dlatego, że można zarobić trochę więcej pieniędzy. W przyszłości będzie to oznaczać utratę pracy, chociaż uzgodniliśmy, że w razie potrzeby możesz zmienić dziedzinę zawodową. Pamiętaj jednak, że specjaliści IT to wrażliwi ludzie (nawet jeśli jeszcze tego nie zauważyłeś). Dlatego nie skazuj się na interakcję z znienawidzoną technologią tylko ze względu na dodatkowe pieniądze. Zapamiętaj wskazówkę numer dwa i pamiętaj, że robienie tego, na czym najbardziej ci zależy, ostatecznie opłaci się najlepiej, ponieważ łatwiej będzie osiągnąć poziom eksperta.

4. Wskazówka czwarta: spójrz, co się dzieje wokół ciebie i naucz się angielskiego

Programowanie nie przypomina klasycznych dyscyplin inżynierskich. Moim zdaniem ma znacznie więcej wspólnego z językoznawstwem. Podam prosty przykład, aby zilustrować, co mam na myśli. Wybierz problem matematyczny i poproś dowolną grupę ludzi o rozwiązanie go na wszystkie możliwe sposoby. W zależności od poziomu przygotowania będą dwa, trzy lub pięć różnych sposobów, ale prawdopodobnie nie więcej. Ogólnie może być na to „kilka sposobów”. Teraz daj grupie programistów zadanie stworzenia aplikacji dla konkretnego projektu: otrzymasz dokładnie tyle różnych programów, ile osób je pisze. Proces tworzenia programu przypomina bardziej pisanie eseju niż rozwiązywanie przykładu. Jeśli w szkole cała klasa otrzyma zadanie napisania eseju o psie, zobaczysz, że każdy esej różni się od wszystkich pozostałych, a i psy też będą się różnić od siebie. Przestrzeń ta daje szerokie możliwości poszukiwań w przyszłości.

Każdy, kto rozpoczął naukę w grupie 120 osób, mając tylko dwa egzemplarze podręcznika do udostępnienia wszystkim, z których oba zostały wydrukowane z dyskietki w dwóch przebiegach na drukarce igłowej w ciągu dwóch tygodni, które następnie zostały wypożyczone na słowo honoru każdego ucznia, z wpisem dziennika o tym, kiedy ma zostać zwrócony, może tylko zazdrościć dzisiejszym studentom. Nie ma też dziś potrzeby samodzielnego trenowania komputera. W poszukiwaniu informacji istnieje wiele społeczności IT i Google, bez których ogólnie trudno sobie wyobrazić życie. Musimy jednak być przygotowani na przyjęcie nowej wiedzy, wraz z terminologią. Niedawno zapoznałem się z dwoma zupełnie nowymi dla mnie tematami podczas burzy mózgów na temat sztucznej inteligencji. Nigdy nie słyszałem o żadnym z nich, po ponad trzech dekadach w IT. Nie mogę powiedzieć, że jestem w nich teraz ekspertem, ale w przyszłości będę mógł kontynuować rozmowę na te tematy z klientem. Oczywiście musiałem uporządkować całą nową wiedzę i trochę pogooglować.

To prowadzi nas do kolejnej bardzo istotnej kwestii: język angielski. Powiedziałbym, że w dzisiejszych czasach dla programisty znajomość języka angielskiego jest nawet ważniejsza niż znajomość matematyki. I to nie tylko dlatego, że znajomość języka pozwala komunikować się z zagranicznymi klientami, a także ułatwia znalezienie pracy i budowanie kariery. Kluczowe jest to, że zrozumienie języka angielskiego znacznie rozszerza twoje możliwości dalszej edukacji w dowolnej dziedzinie. W rzeczywistości wiele publikacji (szacuję, że prawie 80%) nie jest tłumaczonych na języki narodowe.

5. Wskazówka piąta: sprawdź swoje siły i podejmij ryzyko

Zacznijmy od tego, że moim zdaniem znaczenie silnego wykształcenia szkolnego dla programisty jest przeceniane. Osobiście nauczyłem się informatyki już w 1985 roku od korepetytora, który przygotowywał mnie do egzaminów wstępnych na uniwersytet: przyniósł mi do przeczytania książkę, która, nawiasem mówiąc, była podręcznikiem do matematyki. Nic nie rozumiałem, ale i tak zdecydowałem się zapisać na tę specjalizację, po prostu dlatego, że na egzaminach wstępnych musiałem zdawać tylko matematykę, w dwóch etapach - ustnie i pisemnie. W przeciwieństwie do moich rówieśników po szkołach profilowanych, początkowo udało mi się wykonać około 1% otrzymanych zadań, a z tego tylko połowę tak jak należało. Ale uniemożliwiło mi to zrelaksowanie się na studiach, a nawet spowodowało pewne podekscytowanie procesem uczenia się. W efekcie, mimo braku specjalnego przygotowania szkolnego, dogoniłem przedmioty bezpośrednio związane z programowaniem, które mnie najbardziej interesowały.

Kiedyś programowałem (lub przynajmniej próbowałem programować) w każdym języku, w którym napisano kod i który komputer rozumiał. Były to Assembler, PL, FORTRAN, REXX, LISP, FoxBase, FoxPro, C, C ++ i .NET. Wszystko to było bardzo interesujące, a jednocześnie poszerzyło moje horyzonty i pozwoliło zrozumieć, które języki dobrze mi się sprawdzają, a które - mniej. Po wypróbowaniu swoich sił w programowaniu w Lispie, szybko zdałem sobie sprawę, że nie byłbym w stanie od razu dobrze działać na tym poziomie i że wymagałoby to ode mnie długiego i głębokiego zagłębienia się w temacie. Fajnie jest oczywiście napisać program, który może się modyfikować w czasie wykonywania w zależności od warunków zewnętrznych. Postanowiłem jednak zatrzymać się na poziomie zaznajomienia się z teorią i zachować głęboki podziw dla Lispa. Ale może nie będzie to takie trudne? W każdym razie nie dowiesz się, dopóki nie spróbujesz.

Wreszcie, jeśli w pewnym momencie twoje podekscytowanie związane z zanurzeniem się w nową technologię przestanie być tak silne, zawsze możesz skupić się na pracy zespołowej. W rzeczywistości nie każdy chce być managerem, a dobry specjalista techniczny nie powinien sztucznie popychać się w tym kierunku. Jeśli jednak czujesz potencjał do bycia liderem, szkoda byłoby przegapić tę okazję.

Ale nie musisz być najlepszym programistą na świecie, aby zostać dobrym menedżerem. Z drugiej strony, jeśli stałeś się już profesjonalistą w tworzeniu oprogramowania, znacznie łatwiej zostaniesz zaakceptowany przez współpracowników, którymi masz kierować. W każdym razie na początku. Pamiętaj, umiejętność mówienia z zespołem tym samym językiem jest bardzo ważna.

Podsumowując, wybór specjalizacji to coś, czego nie powinno się odkładać. Wypróbuj interesującą dziedzinę w praktyce, ciesz się swoim zawodem i zmień specjalizację, jeśli stanie się to dla ciebie nudne. Jestem pewien, że ci się uda!