Jakie cechy charakteru, cenione są u programisty?

Bez zbędnego wstępu zajmijmy się dziś cechami, które moim zdaniem powinien posiadać każdy programista.

Cierpliwość – to dzięki niej jesteśmy w stanie poszukiwać działających rozwiązań, szukać przyczyn występowania błędów oraz nie poddawać się w tym, co robimy.

Dokładność – jest to jedna z najważniejszych, moim zdaniem, cech. Dzięki niej jesteśmy w stanie stwierdzić, czy ktoś będzie dobrym programistą, czy też nie. Jeżeli jesteśmy niedokładni w małych rzeczach, popełniamy masę nawet drobnych błędów, to nigdy nie sprawdzimy się przy projektach. I nikt nie obdarzy nas zaufaniem i nie pozwoli nam na samodzielność w pracy.

Analityczne myślenie – samo rozwiązanie problemu, czy też napisanie kodu, to nie wszystko. Ważne jest również nieszablonowe myślenie, umiejętność przygotowywania rozwiązania, które będzie najbardziej optymalne i niezawodne.

  • Czy nowo dodany kod, będzie mieć jakieś niepożądane działanie w systemie?
  • Czy będziemy w łatwy sposób rozszerzać fragment tej funkcjonalności, kiedy zajdzie taka potrzeba?
  • Czy jesteśmy w stanie wdrożyć, takie rozwiązanie, jakiego oczekuje klient?
  • Czy nasze rozwiązanie jest optymalne?

Zaradność – czasami się zdarza, że czegoś nie wiemy lub nie jesteśmy w stanie od razu tego wykonać. Ważny jest sposób w jaki poradzimy sobie w takiej sytuacji. Dla osoby zaradnej, nie ma rzeczy niemożliwych.

  • Czy na podstawie dostarczonych informacji i zdobytej wiedzy, jestem w stanie zaplanować sobie pracę, przygotować rozwiązanie i zdobyć wszelkie potrzebne mi informacje?
  • Czy też będę się pytał współpracowników, o każdą małą rzecz?
  • Czy przed zapytaniem bardziej doświadczonych osób, sprawdziłem wszelkie możliwe źródła?
  • Czy moja wiedza na temat dziedziny, w której pracuję, jest wystarczająca do poradzenia sobie z drobnymi problemami w kodzie / środowisku / serwerze / gicie / linuxie / przeglądarce?

Chęć doskonalenia swoich umiejętności – wykonywanie ciągle tych samych zadań jest bardzo monotonne i nie prowadzi do rozwoju. Warto stawiać sobie wysoko poprzeczkę i dużo od siebie wymagać. W branży IT technologia, która jest aktualna teraz, za dwa lata może nie być już użyteczna. Nie można sobie pozwolić, na zaprzestanie rozwoju, nawet we własnym zakresie.

  • Czy jestem otwarty na nowe wyzwania?
  • Zdobywam wiedzę z różnych źródeł?
  • Zdobywam od najbliższych pracowników feedback, co mogę poprawić?
  • Czy wiem dokąd zmierzam i czego muszę się nauczyć, aby zrealizować swoje cele?
  • Czy moja obecna praca, daje mi okazję do wykazania się i zdobycia nowej wiedzy, czy też w kółko wykonuję te same zadania?

Wyciąganie wniosków z błędów – każdy popełnia błędy, tak samo jak każdy kłamie. Najlepsi potrafią się do nich przyznać i szukać rozwiązań / procedur, które nigdy więcej do tego nie doprowadzą.

  • Czy jesteś jedną z takich osób?
  • Czy wyciągasz wnioski z popełnionych błędów i już więcej ich nie powtarzasz?
  • Czy jeżeli masz jakiś problem, analizujesz z czego może on wynikać i szukasz rozwiązania?
  • Czy skutecznie zapobiegasz powstawaniu kolejnych błędów?
  • Czy wdrażasz procedury, które mogą cię przed nimi uchronić?

Umiejętność rozwiązywania problemów – bierze się głównie z doświadczenia. Im więcej mamy kontaktu z kodem i problemami, tym bardziej jesteśmy doświadczeni i rozwiązywanie problemów idzie nam łatwiej. Warto pomagać innym na serwisach typu stackoverflow. Dzięki temu, jesteśmy na bieżąco z problemami, z jakimi spotykają się deweloperzy, a także poznajemy rozwiązania, które mogą przydać nam się w przyszłości.

  • Czy wmawiam sobie, że jest to jakaś magia, czy jestem realistą i zdaję sobie sprawę, że to tylko kod?
  • Czy jestem w stanie zaproponować rozwiązanie, które poprawi obecną pracę?
  • Czy odpowiednio podchodzę do problemu i szukam faktycznie tam, gdzie może występować?
  • Czy z każdym napotkanym problemem, idzie mi coraz lepiej, a wynika to ze zdobytego doświadczenia?

Odpowiedzialność – to ona sprawia, że przełożeni i współpracownicy darzą nas zaufaniem. Jeżeli mówimy, że coś jest przetestowane i działa, to tak być powinno. Niestety, bardzo często, te słowa mają się nijak do rzeczywistości. Bierzmy odpowiedzialność, za to co robimy, sprawmy, że inni będą mogli na nas polegać.

  • Czy biorę odpowiedzialność za powstały kod i można mi ufać?
  • Czy odpowiednio komunikuję, że nie jestem czegoś pewny i proszę o sprawdzenie osób bardziej doświadczonych?
  • Czy gdy pojawiają się problemy, biorę to “na klatę”, czy też zganiam na innych i mówię, że to nie mój kod?
  • Czy informuję o problemach zagrażających terminowi i eskaluje to wyżej?

Samodzielność w rozwiązywaniu problemów – na podstawie dostępnych informacji, powinniśmy być w stanie przygotowywać gotowe rozwiązania, spełniające wszelkie normy jakościowego kodu. Najlepsi, wiedzą o tym, że czasami zapytanie kogoś o radę, może zaoszczędzić X godzin pracy i nie ma w tym nic złego.

  • Czy przed zadaniem pytania, upewniłem się we wszelkich dostępnych źródłach i przetestowałem wszelkie możliwe sposoby, które przychodziły mi do głowy?
  • Czy rzeczy, o które pytam, wynikają ze specyfiki projektu i mogę ich nie wiedzieć, czy też z mojego niedouczenia w danej dziedzinie?

Umiejętność pracy w grupie – jest to bardzo ważna cecha, ponieważ przy dużych projektach, czasami przez lata można nie poznać działania całego systemu. Są jednak osoby, które mogą znać działanie danego fragmentu, a wspólnie tworzą całość. Umiejętność porozumiewania się z osobami w grupie i szukania odpowiednich informacji, jest niezastąpiona. Trzeba też pamiętać, że pracując w grupie, tworzycie drużynę, która zmierza do tej samej bramki. Jeżeli masz z czymś problem, to w interesie całego zespołu jest, żebyś jak najszybciej znalazł rozwiązanie. Nie bój się prosić o pomoc i rozmawiać z innymi.

  • Czy efektywnie przekazuję informację w grupie?
  • Czy jestem w stanie współpracować z innymi i wspólnie coś tworzyć / testować?
  • Czy zdaję sobie sprawę, że gramy do jednej bramki i nie ma głupich pytań?
  • Czy skrywam się z problemami i nie informuję o nich grupy, bojąc się, co o mnie pomyślą?

Umiejętność przekazywania informacji, w zależności od rozmówcy – nie każda osoba z którą rozmawiamy, musi znać wszelkie techniczne aspekty zadania, nad którym pracujemy. Powinniśmy być w stanie, dopasować się do naszego rozmówcy. Inaczej przekażemy informację leadowi projektu / project managerowi / klientowi, a jeszcze w zupełnie inny sposób opowiemy o tym przedszkolakowi. To, co jest dla ciebie proste i zrozumiałe, niekoniecznie musi być takie dla twojego odbiorcy, nie zapominaj o tym.

  • Czy zdaję sobie sprawę, że nie wszystkich muszą interesować szczegóły i potrafię przedstawić problem / rozwiązanie w języku zrozumiałym dla osób nietechnicznych?

Każdego dnia się uczę i zdobywam cenne doświadczenie. Poniżej zamieszczam kilka pytań, na których odpowiedź, może pobudzić Was do rozwoju i działania:

  • czy pracuję mądrze i optymalnie, czy też będę uparty i szukał rozwiązania samodzielnie, wiedząc że osoba X jest w stanie naprowadzić mnie na rozwiązanie i zaoszczędzić Y czasu?
  • czy tworzę case study i analizuję, z czego mógł wynikać dany problem?
  • czy zapisuję sobie każdą rzecz, z którą miałem problem, żeby później to przeanalizować i znaleźć rozwiązanie?
  • czy planuję sobie działanie, przed przystąpieniem do pracy?
  • czy zapisałem się na newslettery, w interesującej mnie dziedzinie?
  • czy znam swoje mocne i słabe strony i wiem, jak mogę je naprawić?
  • czy nie boję zapytać się o feedback i rzeczy do poprawy?
  • czy osoby, którymi się otaczam, są mądrzejsze ode mnie?
  • czy osoby, z którymi współpracuję, darzę autorytetem?
  • czy miejsce, w którym jestem, daje mi możliwość rozwoju?

Czy dodałbyś jeszcze jakieś pytanie do tej listy? Jeżeli tak, to jakie?

Facebook
LinkedIn