Sytuacja kobiet w IT w 2024 roku
1.02.20194 min
Yegor Bugayenko

Yegor BugayenkoCEOZerocracy

Umiejętności miękkie programisty

Sprawdź, jakie umiejętności miękkie powinien mieć dobry programista i w czym one pomagają.

Umiejętności miękkie programisty

Są umiejętności twarde i miękkie. Wie to każdy programista. Te twarde dotyczą znajomości algorytmów, klas, obiektów i wszystkiego innego, czego nauczą nas w szkole i na studiach. Umiejętności miękkie to zupełnie inna para kaloszy. Czego dotyczą dokładnie? Ciężko odpowiedzieć w prosty sposób. Spróbuję to doprecyzować.

Oto lista umiejętności miękkich, które udało mi się znaleźć w internecie: empatia, otwartość, chęć uczenia się, efektywna komunikacja, praca zespołowa, przystępność, chęć niesienia pomocy, umiejętność słuchania, cierpliwość, odpowiedzialność, krytyczne myślenie, rozwiązywanie problemów, mentoring, dopasowywanie się do okoliczności, bycie klarownym, ciekawość, strategizowanie, uczenie się długofalowe, myślenie biznesowe, etyczne zachowanie w pracy, osądzanie, zarządzanie ego, zaangażowanie, odpowiedzialność, kreatywność, zdolności adaptacyjne, myślenie wielkoformatowe. Uff!

Czy naprawdę rozumiesz, co dokładnie oznaczają wszystkie słowa? Ja niekoniecznie. Proponowałbym, żebyśmy zastąpili je mantrą: rób rzeczy dobrze.

Stworzyłem własną listę. Wierzę również, że umiejętności techniczne są tylko niewielką częścią tego, co czyni dobrego programistę takowym. Jednak bycie empatycznym i gotowym do nauki nadal nie jest tym, co składa się na drugą część. Oczywiście, uśmiechanie się w biurze i nieprzeklinanie głupiego szefa pomaga, ale nie o to finalnie chodzi. Bardziej o naszą zdolność do „wymiany” pewnych rzeczy. Umiejętności techniczne przynoszą rezultaty, a umiejętności miękkie przekształcają je w produkt końcowy, czyli działające oprogramowanie. Oto krótka lista:

Rysowanie

Rozmowa jest idealna, gdy dyskutujesz o swoich wakacjach z partnerem. W zespole programistycznym umiejętność wyjaśnienia swoich myśli za pomocą diagramu znacznie zwiększa użyteczność.

Pisanie

Ponownie, rozmowa jest wspaniała, kiedy Twój chaotyczny zespół jest zarządzany przez histerycznego szefa, który właśnie przeczytał książkę o bezwarunkowej miłości. W bardziej zdyscyplinowanym środowisku Twoja zdolność do przelewania myśli na piśmie ma większe znaczenie dla wspólnego sukcesu.

Raportowanie

Dobry programista wie nie tylko, jak naprawić buga, ale, co ważniejsze, jak raportować to we właściwy sposób. Tak, aby projekt przynosił korzyści. Umiejętność opisania problemu technicznego w prostych słowach jest kluczowa.

Wolontariat

Open source jest ważną częścią każdego deweloperskiego projektu. Musisz wiedzieć, jak pracować ze społecznością open source, dając im coś w zamian za oferowane oprogramowanie. Czasami będziesz musiał zgłaszać im problemy, czasami robić pull requesty, a nawet tworzyć własne projekty open source. Będziesz potrzebował wielu nietechnicznych umiejętności, aby to zrobić.

Inwestowanie

Programiści zarabiają, pieniądze pisząc kod. Bardzo często projekty rozsypują się, ponieważ ważni ludzie rezygnują z powodów finansowych. Nie wiedzą, jak rozwiązać ten problem, jak zarządzać swoimi finansowymi celami, jak poprosić o podwyżkę lub jak zmienić harmonogram płacenia. Osobiście winię za to programistów. My, ludzie techniczni, musimy wiedzieć, jak zarządzać naszą relacją finansową z projektami.

Relaksowanie się

Wiele projektów zawodzi, ponieważ programiści wypalają się. Zdarza się to bardzo często, ponieważ nie wiedzą, jak właściwie zarządzać swoim czasem: kiedy pracować i kiedy się zrelaksować. Ponownie obwiniam za to programistów. Musimy wiedzieć, jak zarządzać naszym własnym spokojem umysłu.

Pytanie

Nie Twoich przyjaciół, ale StackOverflow i innych publicznych źródeł. Świat oprogramowania jest coraz bardziej globalny, a wiedza, którą dysponuje zespół projektowy, to zaledwie niewielka część tego, co ogólnie wiadomo o problemie, który rozwiązujesz. Musisz wiedzieć, jak zapytać o to w szerszym kręgu. To jest miękka umiejętność, której potrzebujesz, aby być dobrym programistą.

Tweetowanie

Tutaj masz możliwość dzielenia się swoimi przemyśleniami i osiągnięciami w sieciach społecznościowych. Jeśli pozostaniesz niemy i z fobią względem Social Mediów, to tak naprawdę nie pomagasz swojemu projektowi. Jest to umiejętność, której nie nauczysz się w kilka dni. Sugeruję, abyś rzucił okiem na moją książkę: 256 bloghacks.

Testowanie

Chodzi mi tutaj nie tylko o zautomatyzowane testy, co jest umiejętnością techniczną, ale także o zdolność komunikacji z testerami, aby upewnić się, że ich opinie poprawią jakość tworzonego oprogramowania. Istnieje dobrze znany konflikt programistów i testerów, z którym potrafią sobie radzić dobrzy programiści.

Rozgałęzianie

Nadal pracujesz w jednej głównej gałęzi? Nadal jesteś amatorem. Musisz nauczyć się korzystać z wielu z nich, jak rozwiązywać konflikty między nimi i jaka jest różnica między merge a rebase. Jest to umiejętność miękka, ponieważ nie ma ona nic wspólnego z jakością twojego kodu, ale poważnie wpływa na twój profesjonalizm jako programisty.

Ponoszenie porażek

Część projektów zawodzi, tak czy inaczej. Jednak to nie awarie techniczne są głównym źródłem naszych problemów. Najczęściej zawodzimy z powodu niekompetencji zarządzania. Dobrzy programiści wiedzą, jak radzić sobie z niepowodzeniami, poprzez prowokowanie (Fail Fast), przewidywanie (Risk Management) i ich akceptację.

Dostarczanie

Continuous Delivery Pipeline, automatyzacja, środowiska staging, green-blue deployment itp. - jeśli uważasz, że wszystkie te kwestie dotyczą tylko działu DevOps, mylisz się. Musisz zrozumieć, w jaki sposób linie kodu docierają do Twoich użytkowników. Im większy produkt, tym dłuższa droga, więcej osób w to zaangażowanych i tym bardziej niezbędne stają się umiejętności miękkie.

Znajomość „intryg”

Każdy projekt jest częścią większej gry politycznej, w taki czy inny sposób. Jeśli odgrodzisz się od tych zależności, twierdząc, że Twoim zadaniem jest pisać kod - nie jesteś bardzo dobrym programistą. Takowy rozumie, skąd pochodzą pieniądze i kim są główni akcjonariusze.

<p>Loading...</p>