Jak być lepszym programistą?

Nie od dziś to pytanie krąży w chmurze moich myśli…

Jak być lepszym programistą?

Contents

Od zawsze jedną z odpowiedzi było poprzez własne doświadczenie. Następnie poprzez doświadczenia innych programistów, głównie w pracy. Przydatne może okazać się czerpanie informacji z wielu źródeł oraz z różnymi ludźmi.

Na jakim etapie jestem dzisiaj a na jakim etapie jesteś Ty?

Na to pytanie odpowie wiele różnych testów, mnie zaintereosawała skala w modelu rozwoju kompetencji Dreyfusa, zaproponowany przez braci Stuarta i Huberta Dreyfusów w 1980 roku.

 

5 poziomów kompetencji

Stuart E. Dreyfus i Hubert L. Dreyfus, A Five-Stage Model of the Mental Activities Involved in Directed Skill Acquisition (Washington, DC: Storming Media).

Pracowali oni nad komputerową sztuczną inteligencją. Po zbadaniu specjalistów o wysokich umiejętnościach w różnych dziedzinach (na przykład arcymistrzów szachowych i pilotów) Dreyfusowie zidentyfikowali pięć poziomów kompetencji

Nowicjusz

Całkowity nowicjusz. Początkujący oczekują szybkich efektów, ale nie mają wystarczającego doświadczenia, aby je osiągnąć. Szukają reguł, których mogliby się nauczyć na pamięć, przy czym nie potrafią ocenić, czy konkretne zasady są dobre, czy złe. Stosując się do odpowiednich reguł (lub znajdując właściwe materiały w wyszukiwarce Google), mogą osiągnąć dobre wyniki. Nowicjusze niemają (jeszcze) wiedzy z danej dziedziny.

Zaawansowany początkujący

Na tym poziomie dzięki doświadczeniu dana osoba już się czegoś nauczyła. Może zacząć odchodzić od reguł i próbować samodzielnie wykonywać zadania. Nadal ma jednak ograniczoną percepcję i nie radzi sobie, gdy występują problemy. Osoby na tym etapie lepiej wiedzą, gdzie szukać odpowiedzi (znają na przykład najlepsze źródła informacji o interfejsie API), jednak nadal nie osiągnęły poziomu, który pozwala im zrozumieć ogólny obraz. Zaawansowany początkujący nie potrafi pomijać nieistotnych szczegółów. Wydaje mu się, że wszystko może być ważne w kontekście rozwiązywanego problemu. Osoby na tym poziomie szybko zdobywają wiedzę jawną — informacje, które można łatwo zapisać i objaśnić.

Kompetentny rzemieślnik

Osoba będąca na tym poziomie ma model mentalny dziedziny problemowej. Posiada mapę bazy wiedzy, zaczęła łączyć różne elementy i rozumie względne znaczenie poszczególnych aspektów. Szeroka perspektywa umożliwia radzenie sobie z nieznanymi problemami i planowanie metodycznego rozwiązywania ich, zamiast liczenia na to, że reguły pozwolą uzyskać potrzebny efekt. Osoby z tego poziomu aktywnie szukają nowych zasad, aby opracować plan ataku, a także zaczynają dostrzegać ograniczenia reguł.

Jest to poziom, na którym warto się znaleźć.

Biegły

Biegłe osoby są nie tylko kompetentne, ale też znacznie lepiej rozumieją ogólny obraz i irytują się uproszczeniami potrzebnymi nowicjuszom. Potrafią poprawiać wcześniejsze błędy i wykorzystują doświadczenie do usprawnienia swojej pracy w przyszłości. Osoby z tego poziomu uczą się też na podstawie doświadczeń innych ludzi i asymilują zdobytą w ten sposób wiedzę. Biegłe osoby potrafią interpretować wzorce (a nie tylko proste reguły) i stosować je do problemów. Oznacza to na przykład, że wiedzą, jak i kiedy korzystać z wzorców projektowych. Na tym poziomie łatwo jest identyfikować ważne kwestie i koncentrować się na nich oraz bezpiecznie ignorować niepotrzebne szczegóły. Biegłe osoby posiadają rozbudowaną wiedzę niejawną, którą trudno jest przekazać słowami (można ją zdobyć tylko dzięki doświadczeniu i głębokiemu zrozumieniu danego zagadnienia).

Ekspert

To wierzchołek drzewa poznania. Eksperci są bardzo nieliczni. Są autorytetami z danej dziedziny. Znają ją bardzo dokładnie i potrafią łączyć wiedzę na jej temat z innymi informacjami. Mogą uczyć innych (przy czym często lepiej idzie im uczenie kompetentnych osób niż nowicjuszy, ponieważ łatwiej jest im się porozumieć). Eksperci mają intuicję, dlatego nie potrzebują reguł — w naturalny sposób dostrzegają odpowiedź, nawet jeśli nie potrafią wytłumaczyć, dlaczego jest ona najlepsza.

Dlaczego model Dreyfusa jest interesujący?

Ponieważ jest to odsłaniający oczy schemat, który pomaga zrozumieć, jak dobrze opanowałeś dane zagadnienie i gdzie chcesz dotrzeć.

Czy musisz zostać ekspertem?

Większość osób pozostaje na poziomie kompetencji, co jest wystarczające. Zatrudnianie zespołu ekspertów byłoby zdecydowaną przesadą (taka grupa prawdopodobnie nie działałaby sprawnie).

Poprawianie jakości tworzonego oprogramowania realizuję poprzez nastepujace metody

  • zdobywanie wiedzy z książek, magazynów, blogów

  • słuchanie audiobooków, prezentacji, podcastów, kursów online

  • Ogladanie podcastów wideo, programów telewizyjnych, wystąpień

  • Ćwiczenie prostych rozwiązań i rózwój własnych projektów, niekoniecznie złożonych
  • Poprzez praktykę, czyli programowanie z innymi, np pair programming
  • Spotkań grup użytkowników, Słuchanie i rozmawianie w gronie specjalistów na specjalnych wydarzeniach, np meetup.com

Poprawianie jakości nie leży tylko w samej wiedzy na temat programowania, dlatego warto też zastanowić się nad wieloma innymi tematami y tematyki społecznej i psychologicznej.

Informacje wielomodalne

Informacje wielomodalne stymulują części mózgu, zwiększa to skuteczność pracy mózgu. Pomyśl o wykonywaniu różnych czynności (niekoniecznie wielu)

  • Słuchaj muzyki w czasie pracy.
  • Rysuj w trakcie myślenia, spotkania, naprawdę
  • Mów w trakcie pracy, opowiadaj o tym, co robisz lub czego się uczysz; to pomaga w zapamiętywaniu i segregowaniu oraz łaczeniu informacji
  • Znajdź czas na chwile relaksu, przerwy 5-10 Minutowe, nawet wtedy wydaje a zwłaszcza wtedy, gdy go Tobie brakuje, oczyścisz się z szumu, stresu i spokojnie przejdziesz do priorytetyzacji działań. Pomoże Ci to lepiej skoncentrować się i odciąć od rozpraszających bodźców

Dla mnie efektywność, produktywność to tematy związane z samodoskonaleniem, które mają bezpośredni wpływ na wykonywaną pracę jako programista.

Cztery poziomy kompetencji

Możesz nauczyć się nieprawdziwych rzeczy i wierzyć, że są one faktem. W najlepszym razie jest to kompromitujące, a w najgorszym — niebezpieczne. To zagadnienie opisane jest jako cztery fazy kompetencji (tę klasyfikację zaproponował w latach 40. ubiegłego wieku psycholog Abraham Maslow). Oto one:

Świadoma kompetencja

To także dobra sytuacja. Wiesz coś i zdajesz sobie z tego sprawę. Aby wykorzystać daną wiedzę, musisz poczynić świadomy wysiłek i skoncentrować się.

Świadoma niekompetencja

Jesteś świadomy, że nie wiesz danej rzeczy. Jest to stosunkowo bezpieczna sytuacja. Dana rzecz prawdopodobnie nie jest dla Ciebie ważna — nie musisz jej znać. Możliwe też, że brak wiedzy na dany temat jest dla Ciebie źródłem frustracji.

Nieświadoma kompetencja

Ta sytuacja zdarza się, gdy Twoja wiedza na dany temat jest na tyle duża, że już jej nie zauważasz. Nie wiesz już, że korzystasz z własnej wiedzy eksperckiej. Na przykład większość dorosłych ludzi przy chodzeniu i zachowywaniu równowagi wykorzystuje nieświadomą kompetencję. Nie musimy myśleć, aby to robić.

Nieświadoma niekompetencja

To niebezpieczna sytuacja. Nie zdajesz sobie sprawy, że czegoś nie wiesz. Nie jesteś świadom własnej ignorancji lub uważasz, że rozumiesz zagadnienie, przy czym nie zdajesz sobie sprawy, jak bardzo się mylisz.

Wnioski

Jakie są wasze metody na poprawianie jakości programowania?

 

Tom Sapletta
Facebooktwitterredditpinterestlinkedinmail

Author: Tom Sapletta

Łączę doświadczenie z nowymi technologiami. Od 10 roku życia jestem pasjonatem komputerów i programowania. Moim pierwszym (mikro)komputerem był ZX-Spectrum a językiem programowania: Basic. Od 2010 roku programuję zawodowo, objektowo i funkcjonalnie w architekturach monolitycznych i mikro-usługowych. Obecnie tworzę architekturę ekosystemów dla liderów rynku w firmie Softreck.