Model kompetencji programisty

Model kompetencji programisty
Rysunek przedstawia ideę modelu kompetencji programisty, który systematyzuje kompetencje i umiejętności wykorzystywane przez programistów w trakcie pracy nad projektem. Model jest hierarchiczny i kolejne poziomy kompetencji są budowane i rozwijane na bazie poprzednich. W dalszej części artykułu pokażemy, w jaki sposób kompetencje z poszczególnych poziomów pozwalają tworzyć usystematyzowany proces pracy programisty nad zadaniem.

Narzędzia i technologie

Narzędzia i technologie są dla programisty podstawowym środkiem wyrazu. Dzięki nim potrafi przekładać idee i pomysły na działające oprogramowanie. Z tego powodu tworzą one bazę, bez której nie sposób wykonywać zawodu programisty.

Zobacz również:

  • Mistrzowie sztuki motywacji
  • Relacja z WWDC 2023 - najważniejszej konferencji Apple w roku
  • 9 cech wielkich liderów IT

Do grupy tej zaliczymy znajomość:

• poszczególnych języków programowania;

• IDE;

• konwencji kodowania;

• UML;

• serwerów baz danych i aplikacyjnych;

• rozwiązań technologicznych, np. dotyczących Java EE lub .NET.

Opanowując kompetencje i umiejętności z tego poziomu, dana osoba może wykonywać zawód programisty. Często zdarzać się będą sytuacje, w których opracowanym rozwiązaniom brak będzie finezji i lekkości. Konstrukcje programistyczne będą przesadnie skomplikowane lub niedopracowane.

Techniki programistyczne

Techniki programistyczne to kompetencje, które pozwalają programiście w efektywny sposób korzystać ze znajomości technologii, narzędzi i języków programowania. W tej grupie mieszczą się umiejętności związane z używaniem wzorców projektowych i best practices.

Wymienić tu również można coś, co Kent Beck nazywa wzorcami implementacyjnymi (ang. implementation patterns). Wzorce implementacyjne wypełniają przestrzeń pomiędzy podstawowym (i poprawnym) używaniem języka programowania a wzorcami projektowymi. Pod tą nazwą mieszczą się: sposoby nazewnictwa klas, zmiennych i metod, optymalne korzystanie z mechanizmów języka programowania i wszystko to, co zwiększa czytelność, prostotę i elastyczność kodu źródłowego.

Podsumowując, do technik programistycznych możemy zaliczyć kompetencje związane z:

• wzorcami projektowymi;

• wzorcami implementacyjnymi;

• best practices;

• refaktoryzacją kodu źródłowego;

• test-driven development i pochodnymi.

Organizacja pracy własnej

Chyba każdy programista uczący się nowej techniki programistycznej doświadczył uczucia, gdy wszędzie widział wzorce (sic!), możliwość zastosowania nowej technologii. Programista, który nie opanował umiejętności organizowania własnej pracy, uzbrojony w potężne narzędzia technologii i technik programistycznych może tworzyć rozwiązania nieadekwatne do klasy problemu. Zachowania takie są identyfikowane jako antywzorce: acidental complexity, reinventing the wheel, premature optimization. Na poziomie organizowania pracy własnej programista może rozwijać następujące kompetencje:

• szacowanie czasu wykonania zadania;

• planowanie pracy nad zadaniem;

• opracowywanie złożonych problemów;

• samodyscyplinę;

• motywację.


TOP 200