#12 Jak zostać programistą: Co jest potrzebne, oprócz samego programowania?

3 lat temu

Czy nauczenie się języka programowania i Frameworka do niego wystarczy, aby zostać programistą?

Tak jak wspomniałem we wpisie na temat narzędzi i technologii dla programisty, sama znajomość języka programowania i Frameworka w dzisiejszych czasach nie wystarczy aby dostać pierwszą pracę. Tak jak w tamtym wpisie opisywałem część bardziej techniczną, tak w tym będę chciał się skupić na aspektach bardziej ogólnych.

W tym wpisie postaram się odpowiedzieć na kilkanaście pytań związanych z aspektami bardziej ogólnymi:

  • Angielski
  • Studia
  • Matematyka
  • Aspekty miękkie
  • Metodyka zwinne
  • Umiejętność szukania informacji

Ale jak to nie wystarczy umieć programować?

Co jest potrzebne, oprócz samego programowania? Niestety jest tak, iż samo programowanie nie wystarczy, aby dostać pierwszą pracę jako programistą. Często rozmowa kwalifikacyjna składa się z dwóch części. Jedna dotyczmy rzeczy związanych z technologią (i tutaj mamy np. znajomość programowania) i druga, która dotyczy bardziej ogólnych kompetencji. Podczas rozmowy są sprawdzane m.in. znajomość angielskiego, logiczne myślenie czy aspekty miękkie.

Co z tym angielskim?

Język angielski jest w tej chwili standardem nie tylko w świecie programowania, ale w całym IT. w tej chwili całą aplikację, jaką piszesz jest właśnie w języku angielskim. Klasy, metody, zmienne wszystko piszemy po angielsku. Dlaczego? Żeby był właśnie jakiś standard. Pracując w międzynarodowym środowisku jakby każdy pisał w języku jaki zna to praca i utrzymanie aplikacji mogłoby być naprawdę trudne. choćby pracując w polskim zespole może dojść do sytuacji, gdzie przyjdzie do nas kolega z zagranicy i nie będzie biegle mówił po polsku. Albo inna sytuacja. Dostajemy projekt z zagranicy i pracujemy w nim jako wsparcie. Wyobrażasz sobie go dostać w jakimś języku, którego nie znasz? Niemiecki, Rosyjski czy Hiszpański? Dlatego standard jest tak ważny. Dlatego wszyscy programiści stosują się do jednej konwencji jaką jest właśnie język angielski.

A teraz odpowiadając na pytanie: Czy trzeba znać angielski, aby dostać pracę jako programista? Możemy odpowiedzieć krótko: TAK. Ale teraz przyjrzyjmy się co to znaczy znać angielski. Z ofert, na które patrzyłem czy z rozmów na których byłem znajomość angielskiego można podzielić na 3 części:

  • Znajomość angielskiego pozwalającym na pisanie aplikacji – MUSISZ ZNAĆ
  • Angielski na poziome pozwalającym na swobodne czytanie dokumentacji – MUSISZ ZNAĆ
  • Znajomość angielskiego pozwalającą na swobodną komunikację – TO ZALEŻY. jeżeli aplikujesz do firmy zagranicznej lub firmy, która ma międzynarodowe środowisko albo będziesz musiał rozmawiać z klientem z zagranicy to wiadomo, iż będzie trzeba znać biegle ten język. Natomiast są stanowiska/firmy, które nie mają takich wytycznych i nie trzeba umieć się biegle komunikować z innymi.

Podsumowując, jak nie umiesz dobrze angielskiego to najlepiej wybrać firmę, która w ofercie będzie mieć coś w stylu „Znajomość angielskiego pozwalającą na swobodne czytanie dokumentacji„. Wtedy istnieje jakieś tam prawdopodobieństwo, iż ominie Cię rozmowa po angielsku i będziesz mógł dostać pracę, mimo braku komunikatywnej znajomości angielskiego. Oczywiście bardzo polecam się go nauczyć. Wtedy będziesz miał większe możliwości co do wyboru firmy.

Jak wygląda sprawa ze studiami?

Jeśli chodzi o studia i pracę jako programista to każdy będzie miał pewnie subiektywną opinię. Z mojej perspektywy wygląda to tak, że studia nie są potrzebne, aby zostać programistą, natomiast bardzo ułatwiają zdobycie pierwszej pracy. No i teraz pytanie dlaczego. Głównie chodzi o to, iż dużo firm oferuję często staże dla studentów, które nie wymagają żadnego doświadczenia komercyjnego. Pozwala to łatwiej się dostać do danej firmy, umiejąc dużo mniej, niż osoba, która chce się dostać do tej samej firmy na stanowisko Juniora. Wiadomo, wiąże się to z mniejszymi zarobkami na początek, ale nie to się najbardziej liczy. Najważniejsze jest zdobycie pierwsze komercyjnego doświadczenia jako programista. Potem dużo prościej będzie szukać kolejnej pracy. W końcu firmy wolą ludzi z doświadczeniem i prędzej zaproszą na rozmową właśnie taką osobę.

No i co z tą matematyką?

Dużo osób, które zaczynają przygodę z programowaniem, jednym z najczęstszych pytań jest o matematykę: Czy znajomość matematyki jest potrzebna żeby zostać programistą? Odpowiedź na to pytanie brzmi NIE. To czy będziesz znał matematyka czy nie, w ogóle się nie przekłada na to czy będziesz lepszym/gorszym programistą.

Jedyną sytuacją, w której matematyka jest bardziej przydatna to jest branża gier. Głównie rzeczy związane z fizyką itp. Jednak przez cały czas powinna wystarczyć Ci wiedza zdobyta w etapie szkolnym.

Najważniejsze w programowaniu jest zdolność logicznego myślenia i umiejętność rozwiązywania problemów. Natomiast to przychodzi z czasem. Z pracą nad każdym kolejnym projektem i rozwiązywaniem każdego kolejnego zadania umiejętności te powinny się poprawiać.

A może jakieś konkretne aspekty miękkie są wymagane?

Często osoby początkujące zastanawiają się czy są jakieś konkretne aspekty miękkie potrzebne w pracy. Częściowo jest to kwestia indywidualna. Dużo zależy od firmy, zespołu czy choćby projektu, w którym się uczestniczy. Natomiast można wyróżnić pewien zestaw cech i umiejętności, którymi cechuje się dobry programista.

  • Umiejętność pracy w grupie. Programista nie jest osobą, która pracuje sama (no chyba, iż freelancer). Z reguły pracuje się w zespole. Aby projekt odniósł sukces potrzebna jest dobra komunikacja pomiędzy członkami grupy i wspólne ustalanie celów i rozwiązywanie problemów.
  • Stała chęć do nauki i rozwoju własnych umiejętności. Programowanie jest jednym z tych rynków, który dynamicznie się rozwija. Ucząc się do pewnego poziomu i bazując na tym kolejne X lat raczej nie wchodzi w grę. Technologia zbyt gwałtownie się zmienia i dlatego tak ważna jest samodyscyplina i ciągła chęć poznawania nowych rzeczy.
  • Przyjmowanie i przekazywanie krytyki. W tak jak poprzednim punkcie napisałem, programista musi być osobą, która powinna stale się rozwijać. I jedną z formy nauki jest przyjmowanie i przekazywanie krytyki. Nie zawsze jest tak, iż napiszemy czysty kod lub wszystko będzie bezbłędnie działać. Ktoś może nam to wytknąć osobiście lub np. podczas sprawdzania pull requesta. Wtedy nie powinniśmy się obrażać, tylko przyjąć krytykę i następnym razem poprawić to co zrobiliśmy źle. I oczywiście w drugą stroną. jeżeli mamy komuś przekazać, iż coś źle zrobił to oczywiście trzeba to zrobić w odpowiedni sposób.
  • Analityczne myślenie i samodzielne rozwiązywanie problemów. Chodzi o to, żebyśmy nie byli osobami, które muszą mieć całe rozwiązanie „podane na tacy” lub pytali się co sekundę kogoś o jakieś rozwiązanie, tylko sami próbowali dojść do tego lub jak oprócz samego rozwiązania problemu, też dodać jakieś dodatkowe ulepszenia (oczywiście po wcześniejszej konsultacji). Też nie chce żebyś mnie źle zrozumiał. Nie chodzi o to, żebyś męczył się z rozwiązaniem problemu tydzień, aż Ci się w końcu uda, lub nie, je rozwiązywać. Chodzi bardziej o to, żebyś chociaż podjął tą próbę, a jeżeli stwierdzisz, iż jednak naprawdę nie jesteś wstanie sobie poradzić, dopiero spytać się o pomoc. Ważne jest tutaj nauczenie się tej granicy.

Metodyki zwinne, a co to?

Być może spotkałeś się ze słowem Agile. jeżeli nie, to ogólnie idea polega na samo organizujących się zespołach. Głównymi założeniami jest odpowiednia komunikacja w zespole i ciągła poprawa. w tej chwili najbardziej znanym podejściem jest Scrum, który jest też najczęściej wykorzystywany w firmach z branży programowania.

Uważam, iż osoba, która przychodzi do pracy jako programista powinna wiedzieć jak zorganizowana jest praca w zespołach programistycznych. Nie musi do końca rozumieć jak to działa, natomiast powinna chociaż kojarzyć podstawowe nazwy z nią związane. Dzięki czemu takiej osobie będzie się łatwiej odnaleźć i wdrożyć w zespole. A dodatkowo będzie też wiedzieć jak wygląda mniej więcej codzienna praca programisty.

Oczywiście nie wszystkie firmy używają metodyk zwinnych, więc nie zawsze przyda się znajomość jej w pracy. Natomiast uważam, iż warto jednak samego Scruma znać albo chociaż kojarzyć co to jest.

Dlaczego umiejętność szukania informacji jest bardzo ważna?

W programowaniu jest tak, iż niemożliwe jest znać i pamiętać wszystko. Dlatego tak ważne jest umiejętność sprawnego szukania informacji. Trzeba wiedzieć dokładnie jak i co należy wpisać w wyszukiwarkę, żeby dostać odpowiednie informację. A następnie z tych parunastu stron wybrać odpowiednią, która rozwiąże twój problem. Na pierwszy rzut oka może wydać się to proste. Ale niestety nie jest. Jak będziesz pisał swój pierwszy duży projekt lub dostaniesz błąd, którego nie będziesz wstanie samemu rozwiązać to zobaczysz jak bardzo ta umiejętność będzie przydatna.

Wystarczy spojrzeć na grupy na Facebooku czy różne fora jak dużym jest problem dla niektórych szukanie informacji. choćby tych podstawowych. I to nie tylko w programowaniu! Gdzie w większości przypadków wystarczy wejść w Google, wpisać frazę i wejść w pierwszy lepszy link. Dlatego warto tej umiejętności się nauczyć, nie tylko ze względu na programowanie, ale ogólnie, do codziennego szukania informacji.

Podsumowanie

Odpowiedziałem Ci dzisiaj na parę najważniejszych pytań jakie dręczą początkujące osoby, które chcą zostać programistą. Myślę, iż teraz chociaż trochę Ci uzmysłowiłem co jest potrzebne, oprócz samego programowania, aby móc dostać swoją pierwszą pracę.

Napisz w komentarzu jeżeli pominąłem jakieś pytania, na które chciałbyś znać odpowiedź.

« Poprzedni wpis
#11 Narzędzia i technologie dla programisty. Część 2/2.
Następny wpis »
#13 Co powinien umieć początkujący programista?

Idź do oryginalnego materiału