5 miękkich umiejętności, o których każdy programista powinien pamiętać

Co widzi przeciętna osoba, kiedy wyobraża sobie programistę? Prawdopodobnie stereotypowy obraz: posępny człowiek siedzący przy klawiaturze, wpatrzony w monitor i maniakalnie przebierający palcami po klawiaturze. Mamrocze coś do siebie, klnie na komputer, po jego biurku walają się puste kartony po pizzy oraz puszki Red Bull’a. Nikt nigdy nie widział, aby “programista” przeprowadził z kimś rozmowę dłuższą niż 5 minut, a i wtedy wyraźnie widać było cierpienie na jego twarzy. Na firmowych imprezach świątecznych stoi w kącie i rozmawia tylko z innymi pracownikami działu IT, używając słów niezrozumiałych dla przeciętnego człowieka.

Jednym słowem, większość ludzi ocenia umiejętności komunikacyjno-społeczne (owe sławne “soft skills”) programistów skali od 1 do 100 gdzieś na poziomie -10. Wchodząc w interakcję ze specjalistą IT często wychodzą właśnie z takiego założenia. Stereotyp opisany powyżej jest oczywiście przerysowany, jednak dość powszechne jest przekonanie, że od programistów trudno wymagać więcej niż umiejętności pisania kodu. Powodów takiego podejścia jest tyle, że można by poświęcić im osobny wpis, niemniej jednak prawdą jest stwierdzenie, że praca w tym zawodzie polega w dużej mierze na wykonywaniu indywidualnych zadań i wymaga ogromnego skupienia oraz uwagi. Dlatego też programiści mogą wydawać się trochę “odrealnieni”.

Ustaliliśmy już, że pracują głownie z komputerem i piszą kod, więc w gruncie rzeczy interakcje z innymi ludźmi nie są takie ważne…prawda? Otóż nie do końca.

Umiejętności związane z funkcjonowaniem w grupie oraz efektywną komunikacją nazywane są “umiejętnościami miękkimi”, czyli po angielsku “soft skills”. Pojęcie jest powszechnie znane (chociażby z ogłoszeń o pracę), a także bardzo szerokie.

Czym tak naprawdę są “umiejętności miękkie”?

Wszelkiego rodzaju kompetencje można podzielić na 2 kategorie: twarde oraz miękkie. “Hard skills” odnoszą się do umiejętności mierzalnych, takich, które można potwierdzić posiadaną wiedzą lub odpowiednimi certyfikatami. Idąc tym tropem w zawodzie programisty będzie to znajomości języków programowania, odpowiednich narzędzi, a także znajomości języków obcych.

O ile konkretne “twarde umiejętności” jest nam łatwo zdefiniować schody zaczynają się przy umiejętnościach miękkich. Popularna definicja jest taka, że “soft skills” odnoszą się przede wszystkim do cech związanych z funkcjonowaniem w społeczeństwie, takich jak komunikacja, praca w grupie, kreatywność, asertywność, zarządzanie czasem. Rynek zdaje sobie z tego sprawę, dlatego też we wszystkich ogłoszeniach o pracę tuż obok oczekiwań odnoszących się do wiedzy i doświadczenia kandydata, wymienione są cechy związane z praca w grupie i komunikacja. Warto wiedzieć, że nie są to tylko puste slogany: każdy proces rekrutacyjny wiąże się z rozmową z działem HR, w czasie której sprawdza się właśnie te kompetencje.
Ale wracając do naszego głównego tematu: ktoś mógłby wzruszyć ramionami i zapytać co komunikacja i praca w grupie mają do pracy programisty. Przecież pisanie kodu to nie praca grupowa? Dobre pytanie.

Warto zdać sobie sprawę z tego, że sporo rzeczy musi się zadziać zanim programista napisze chociażby jedną linijkę programu. Tylko około 50% czasu pracy programisty polega na kodowaniu. Pozostała połowa poświęcona jest na spotkania zespołu, planowanie projektu, analizę potrzeb użytkowników, code review, testy, tworzenie dokumentacji…sporo rzeczy, a znaczna część związana jest z pracą, no właśnie, z innymi ludźmi!

Rosnąca popularność zwinnych metodyk prowadzenia projektów IT (polecam poszukać w Google “Agile” oraz “Scrum”) niejako wymusza pracę grupową. W skład Scrum’a wchodzą bowiem codzienne spotkania tzw. “daily”, dłuższe spotkania raz na kilka tygodni, spotkania podsumowujące po zakończeniu projektu (retrospektywa)… przykłady można mnożyć, ale wniosek może być tylko jeden: pisanie dobrego kodu nie wystarczy, aby stać się pełnoprawnym uczestnikiem projektu. Potrzebne jest kilka innych elementów.

Komunikatywność

Chyba najpowszechniej wymagana “miękka umiejętność,” i w gruncie rzeczy, najważniejsza. Komunikacja w pracy programisty jest ważna przede wszystkim na etapie planowania projektu, kiedy przydzielane są główne zadania i ustalane priorytety. Brak jasnej i sprawnej komunikacji w takim momencie może bardzo prosto prowadzić do pretensji na późniejszym etapie i wpływać na jakość wykonywanej pracy. Często zapomina się, że umiejętność ta odnosi się nie tylko do mówienia, ale też wysłuchania drugiej osoby. Jest to ważne na każdym etapie pracy zespołowej, kiedy pojawia się potrzeba wprowadzania zmian i poprawek; jeśli programista nie jest w stanie naprawdę wysłuchać tej drugiej osoby, jego praca będzie bardziej sztuką dla sztuki niż odpowiedzią na realne potrzeby użytkowników.

Praca w grupie

Obecnie bardzo rzadko oprogramowanie rozwijane jest przez jedną osobę. Dzieje się tak tylko w przypadku freelancerów. We wszystkich firmach, większych i mniejszych, specjaliści IT to grupa osób, które muszą współpracować ze sobą, aby osiągnąć cel. Co gwarantuje, że zespół będzie pracować efektywnie? Przede wszystkim wzajemny szacunek i jasne komunikowanie oczekiwań. Warto też pamiętać, że zwykle w projekcie IT biorą udział nie tylko osoby z “działki” IT, ale też z innych działów firmy, często bez wiedzy technicznej. To na ich potrzeby tworzona jest konkretna aplikacja, więc umiejętność efektywnej współpracy z nimi często przesądza o powodzeniu lub porażce projektu.

Umiejętność dzielenia się wiedzą

Doświadczeni programiści stanowią serce i duszę każdej firmy, która choć trochę związana jest z branżą IT, ale często nie mają oni czasu, aby wykonać wszystkie zadania. Dlatego też wiele firm zdaje sobie sprawę z konieczności zatrudniania i efektywnego szkolenia “juniorów” – młodszych programistów, którzy wspierają swoich starszych i bardziej doświadczonych kolegów. Junior nie będzie jednak żadną pomocą jeśli nie otrzyma wsparcia od innych członków zespołu. Kluczowa tu nie tylko umiejętność dobierania zadań odpowiednich do wiedzy danej osoby, ale też codzienne wsparcie.

Kreatywność

Owo sławne “thinking outside the box”, czyli znajdowanie nieoczywistych rozwiązań problemów. Niezwykle ważna cecha każdego programisty, który ma ambicje być kimś więcej niż tylko “klepaczem kodu”. Na większość wyzwań, na które wpadają programiści nie ma gotowych rozwiązań i aby przezwyciężyć problem należy wyjść poza utarte schematy i zaryzykować. Kreatywność jest blisko związana z komunikacją. Często to przyjęcie unikalnej perspektywy drugiej osoby pozwala na znalezienie nieortodoksyjnego rozwiązania.

Umiejętność przyjmowania krytyki

Programista jest stale narażony na krytykę swojej pracy, a wszystko to przez wysokie standardy branży IT. Powszechną praktyką jest “code review”, czyli ewaluacja napisanego fragmentu kodu przez innego programistę, aby mieć pewność, że kod jest maksymalnie zoptymalizowany i efektywny. Nie raz nie dwa zdarzy się, że dany fragment zostanie odesłany “do poprawki”. Ważne jest, aby programista był w stanie taką krytykę przyjąć i wyciągnąć z niej wnioski. “Strojenie focha” jest najgorszą możliwą strategią, bowiem nie uczy absolutnie niczego.

Zakres umiejętności miękkich, które omówiłam to tak naprawdę tylko czubek góry lodowej, ale stanowią one dobry punkt startowy. Nie twierdzę oczywiście, że programiści powinni porzucić doskonalenie swoich umiejętności technicznych na rzecz intensywnego treningu interpersonalnego. Ale być może przed przystąpieniem do nauki kolejnego framework’a warto zadać sobie pytanie, czy większych korzyści nie przyniesie skupienie się nad trochę innym rodzajem kompetencji.

  • Robert Banaś

    Warto pomyśleć o treningu interpersonalnym. Osoby pracujące przy komputerze często mają problemy z komunikacją. Widzą zupełnie inaczej to jak są odbierane, a trening interpersonalny potrafi to skorygować i dodać pewności siebie w relacjach z innymi.


    Rob
    http://corelszkolenia.pl

Site Footer

Sliding Sidebar

Dowiedz się więcej

Zostaw nam swój e-mail i daj znać, które miasto Cię interesuje.
Prześlemy Ci informator, w którym znajdziesz szczegóły naszych kursów, tego jak uczymy i jak zapisać się na kurs.

Administratorem danych osobowych jest Akademia IT Sp. z o.o. Dane zbierane są w celu wysyłki informacji marketingowych. Osoba, której dane dotyczą ma prawo dostępu do treści swoich danych oraz ich poprawiania. Podanie danych jest dobrowolne. Wyrażam zgodę na przetwarzanie przez Akademia IT Sp. z o.o. moich danych osobowych dla celów marketingowych. Oświadczam, że zostałem poinformowany/zostałam poinformowana o tym, iż administratorem danych osobowych jest Akademia IT Sp. z o.o. z siedzibąw Warszawie, a także o dobrowolności podania danych i przysługujących mi prawach, w szczególności o prawie dostępu do treści danych i ich poprawiania.

Dowiedz się więcej

Zostaw nam swój e-mail i daj znać, które miasto Cię interesuje.
Prześlemy Ci informator, w którym znajdziesz szczegóły naszych kursów, tego jak uczymy i jak zapisać się na kurs.

Administratorem danych osobowych jest Akademia IT Sp. z o.o. Dane zbierane są w celu wysyłki informacji marketingowych. Osoba, której dane dotyczą ma prawo dostępu do treści swoich danych oraz ich poprawiania. Podanie danych jest dobrowolne. Wyrażam zgodę na przetwarzanie przez Akademia IT Sp. z o.o. moich danych osobowych dla celów marketingowych. Oświadczam, że zostałem poinformowany/zostałam poinformowana o tym, iż administratorem danych osobowych jest Akademia IT Sp. z o.o. z siedzibąw Warszawie, a także o dobrowolności podania danych i przysługujących mi prawach, w szczególności o prawie dostępu do treści danych i ich poprawiania.