Czy musisz być kimś wyjątkowym?
Czasami zdarza nam się podziwiać kogoś wykonującego jakąś skomplikowaną pracę, o której my sami nie mamy zielonego pojęcia. Np. jakiś wielki artysta plastyk albo genialny konstruktor, czy naukowiec. Zakładamy sobie wtedy, jakie to unikalne umiejętności i wrodzone predyspozycje musi ten ktoś posiadać. Przecież normalny i przeciętny człowiek nie byłby w stanie dokonać tego, co oni.
W podobny sposób możemy spojrzeć na samych siebie, kiedy przymierzamy się, aby zacząć robić coś dla nas nowego. Wtedy również zaczynamy analizować – czy ja się do tego nadaję?!
Popatrzmy z boku na osobę wykonującą zawód programisty. Pisanie algorytmów, rozwiązywanie zawiłych problemów logicznych, projektowanie i budowanie systemów informatycznych. Kto normalny potrafi coś takiego? 🙂 Na pewno trzeba mieć do tego jakieś niezwykłe predyspozycje. Być może. Jeżeli ktoś chce być w tym nadzwyczajny. Tylko czy podczas codziennej pracy programiści wykonują rzeczy nadzwyczajne? Niestety, większość projektów i aplikacji nie ma na celu zmienić świata. Przeważnie nawet nie rozwiązują żadnych skomplikowanych problemów. Dlatego też nie pracują nad nimi najtęższe umysły, bo zwyczajnie takowych by zabrakło. To, że rynek IT rośnie w takim tempie, nie jest przypadkiem. Nie oszukujmy się, większość projektów nad którymi, być może, przyjdzie Ci pracować, nie są wielce skomplikowane czy wyrafinowane. To w dużej mierze aplikacje komercyjne, kolejne klony facebook’a czy sklepy internetowe. I właśnie z tego powodu, że są relatywnie proste, jest ich tak wiele.
Jak żyć? Jakim być?
Dlatego też nie ma sensu, abyś specjalnie mocno analizował czy posiadasz jakieś wyjątkowe cechy predysponujące Cię do pracy jako programista. Wiele z nich możesz odkryć w sobie wraz ze zdobywanym doświadczeniem. Powinniśmy raczej skupić się tutaj na dwóch, moim zdaniem podstawowych cechach. Podstawowych, ponieważ bardzo ważnych już na początkowym etapie nauki, jak i później w pracy.
Samodzielność
Dlaczego uważam to za najważniejszą cechę? Ponieważ tak naprawdę będzie Ci potrzebna zarówno na początku nauki, jak i cały czas podczas późniejszej pracy. O jednym z powodów mogłeś przeczytać we wpisie o faktach i mitach. Aby nauczyć się programowania, nie musisz iść na studia ani zapisywać się na żadne kursy. Cała wiedza, jakiej potrzebujesz, jest dostępna za darmo w internecie. Im wcześniej zrozumiesz, że samodzielna nauka i praca to jedyne co zapewni Ci szybki progres, tym lepiej dla Ciebie. Programując, często i szybko natrafisz na jakiś błąd lub informację, której nie rozumiesz. To, jakie decyzje podejmiesz w tym momencie, zdefiniuje moim zdaniem to, czy odnajdziesz się w pracy jako programista. Jeżeli Twoim pierwszym odruchem będzie szukanie pomocy u innych, to prawdopodobnie niewiele z tego wyjdzie.
W nauce
Zaczynając naukę, od samego początku zostaniesz zalany wieloma zagadnieniami, których nie zrozumiesz. Pisząc kod, co chwila będziesz informowany o błędach z których, prawdopodobnie, większości również nie będziesz rozumiał. Jeżeli masz pod ręką nauczyciela, to odruchowo będziesz szukał pomocy u niego. To bardzo logiczne, bo po co marnować czas, jeżeli mogę szybko usunąć problem i ruszyć dalej. Gorzej, jeżeli takiego nauczyciela nie masz, lub masz do niego ograniczony dostęp (np. przy okazji jakiegoś internetowego kursu). Co wtedy? Możesz napisać do kogoś mądrzejszego, np. jakiegoś kolegi programisty, lub na jakimś forum i czekać na odpowiedź. Jest to bardzo zły odruch, szczególnie na etapie nauki.
Proponuję, żebyś już na starcie zawarł sam ze sobą pewien układ. Niepisaną umowę, że będziesz próbował wszystko zrobić samodzielnie i zminimalizujesz odruch natychmiastowego szukania pomocy kogoś innego. Dlaczego? Ponieważ, przez, na oko, jakieś 80% czasu zawodowego będziesz musiał pracować sam. Oczywiście we wszystkim trzeba znaleźć balans i tkwienie samemu ze sobą i swoim problemem w nieskończoność nie ma sensu. Należy znaleźć balans we wszystkim.
Musimy tu jeszcze wziąć pod uwagę wiele możliwości i sposobów nauki. Jeżeli uczestniczysz w ograniczonym czasowo kursie, głupotą jest tkwienie w miejscu na siłę, aby samemu rozwiązać jakiś problem. Zwłaszcza jeśli prowadzący i grupa idą w tym czasie do przodu z materiałem. Wtedy zdecydowanie lepiej jest poprosić o pomoc i zanotować sobie wszystkie problematyczne zagadnienia, aby wrócić do nich na spokojnie później. Będziesz mógł je wtedy przeanalizować, zrozumieć i zapamiętać. Kiedy natomiast pojawią się na Twojej drodze ponownie, szybko się z nimi rozprawisz.
I w pracy
Wyżej wymieniona postawa przełoży się na Twoją pracę zawodową, jeżeli takowa się wydarzy. Gdy będziesz biegał co chwilę po biurze i szukał pomocy, bo “(…)coś mi tu nie działa, możesz zobaczyć?”, Twoi koledzy z pracy zaczną przed Tobą uciekać 🙂 Fakty są takie, że większość problemów na jakie możesz trafić programując, przydarzyła się już wielu osobom wcześniej. Dlatego też ich rozwiązania lub wskazówki, możesz bez problemu znaleźć w internecie. Co więcej, sama umiejętność znajdowania odpowiedzi na swoje pytania w sieci, jest bardzo ważna i powinieneś ją rozwijać jak najwcześniej. Tak więc, zanim ruszysz na pielgrzymkę konsultacyjną, upewnij się, najlepiej jak możesz, że nie zmarnujesz czyjegoś i swojego własnego czasu.
Zupełnie osobną kwestią jest zasięganie opinii mądrzejszych od siebie programistów przy bardziej złożonych problemach. Świetną, ale również straszną rzeczą w programowaniu jest to, że każdy problem możesz zazwyczaj rozwiązać na kilka/naście/dziesiąt sposobów. I niestety to, że coś działa, wcale nie oznacza, że zostało dobrze zrobione (lub źle :)). Jeżeli na początku swojej pracy będziesz musiał mierzyć się z bardziej złożonymi problemami, których rozwiązanie nie jest oczywiste, gorąco zachęcam Cię, abyś wtedy konsultował się z kimś o większym doświadczeniu. Pomijając fakt, że pomoże Ci to uniknąć wielu pułapek, o których nawet byś nie pomyślał, to taka rozmowa stanowi ogromną dawkę wiedzy. Prawie jak prywatny, zupełnie darmowy nauczyciel.
Umiejętność uczenia się
Zaczynając programować, powinieneś sobie uświadomić jedną bardzo ważną rzecz. Wiedza w świecie programowania dezaktualizuje się niesamowicie szybko. To trochę jak w świecie telefonów komórkowych, gdzie dany model po 2 latach jest w już właściwie antykiem. Analogicznie w świecie IT. Nowe technologie pojawiają się w zastraszającym tempie. Jeżeli więc zakładałeś, że na roku czy dwóch nauki będziesz mógł ciągnąć sobie przez pięć kolejnych lat, to niestety muszę Cię rozczarować. Na dobrą sprawę nauka w tym zawodzie nie kończy się nigdy.
O ile Twoją motywacją do tej pracy nie są same pieniądze i ciepła, spokojna i bezstresowa posadka, to powinna być to dla Ciebie świetna wiadomość! Jeżeli nie jesteś leniwy i nie masz problemu z nauką i rozwijaniem się, będziesz miał z tego tytułu ogromne korzyści. Przede wszystkim większość nowych technologii i rozwiązań powstaje po to, aby usprawnić i ulepszyć coś, co istnieje obecnie. Czyli m.in. usprawnić i ułatwić też Twoją pracę. Pierwsza korzyść. Po co kopać dół łyżką, kiedy możesz koparką?
Kolejna, jest już bardziej wymierna finansowo. Jeżeli będziesz miał zawsze najświeższą wiedzę o nowych rozwiązaniach, które mogą pomóc rozwijać się Twojej firmie i do tego będziesz aktywnie je wprowadzał, Twoja pozycja i szansa na awans lub podwyżkę diametralnie wzrośnie.
Trzecią i chyba najważniejszą z korzyści jest to, że to po prostu świetna zabawa! Jeżeli zafiksujesz się na te wszystkie nowinki, to zobaczysz, że to wszystko jest naprawdę bardzo fajne i ciekawe. Trochę jakbyś co chwila dostawał jakieś nowe elektroniczne zabawki. Albo budował fantastyczne konstrukcje z lego i dostawał do tego nowe klocki o jakichś unikalnych właściwościach, których wcześniej nie miałeś 🙂
Tak naprawdę, jeżeli miałbym wskazać jedną cechę charakteryzującą dobrego i doświadczonego programistę, byłaby to właśnie umiejętność szybkiego uczenia się potrzebnych technologii/rozwiązań etc. Nie ogromna wiedza bazowa, tylko szybkość zdobywania nowej wiedzy i tym samym dopasowanie się do tempa zmian w świecie IT.
Podsumowanie
Jeżeli odnajdujesz w sobie powyższe cechy, moim zdaniem możesz być pewien, że jesteś w stanie nauczyć się programować na przyzwoitym poziomie. Wszystkie inne cechy predysponujące do programowanie będą raczej wynikały z tych dwóch lub będą bardzo specyficzne dla różnych technologii. Jednak niezależnie od specyfiki języka programowania, czy technologii, trudno mi sobie wyobrazić dobrego programistę-pracownika, który jest niesamodzielny i nie potrafi zdobywać i przyswajać nowej wiedzy i umiejętności na własną rękę.
Grafika w kooperacji z moim zdolnym kolegą Adam albo nie dam 🙂
Brak komentarzy