Model kompetencji programisty

Jakie kompetencje i umiejętności są kluczowe dla programisty? W artykule spojrzymy na zagadnienie oczami dewelopera, który ma wykonać określone zadanie. Zastanowimy się, czego potrzebuje, aby efektywnie wykonywać swoją pracę. Zaproponujemy również uporządkowany i powtarzalny proces pracy programisty.

Mówi się, że projekty programistyczne nigdy się nie kończą. Wciąż pojawiają się nowe wymagania od użytkowników dotyczące kolejnych funkcjonalności lub aspektów optymalizacyjnych systemu.

Czasem pojawia się konieczność przepisania systemu w nowej technologii (modne ostatnio migracje do Java EE lub .NET). Nawet w przypadku oprogramowania pudełkowego użytkownicy oczekują ciągłych aktualizacji i nowych wersji aplikacji. Ten samonapędzający się proces wytwarzania oprogramowania stymuluje kształcenie programistów oraz rozwijanie technik i narzędzi pozwalających im jak najefektywniej wykonywać swoją pracę. Skoncentrujmy się na ludzkiej stronie machiny projektowej - na programistach.

Zobacz również:

  • Blockchain premiuje pionierów

Programista w projekcie

Niezależnie od używanej metodyki wytwarzania oprogramowania projekt programistyczny przechodzi przez następujące fazy:

1. zbieranie wymagań;

2. analiza wymagań;

3. projektowanie;

4. implementacja;

5. testowanie;

6. wdrażanie.

W przypadku tradycyjnego podejścia wodospadowego wspomniany proces jest naturalną koleją rzeczy. Jeśli zespół korzysta z popularnych ostatnio metodyk Agile, to projekt sterowany jest wymaganiami implementowanymi w poszczególnych iteracjach. Jednakże każde z wymagań również przechodzi przez powyższe fazy. Zastanówmy się, w jaki sposób w projekcie funkcjonuje programista. Na pierwszy rzut oka wydaje się, że cykl pracy programisty przebiega dokładnie w ten sam sposób jak cykl tworzenia projektu. Co zatem robi pojedynczy programista?

Programista przede wszystkim otrzymuje zadanie do wykonania. W zależności od rodzaju przedsiębiorstwa zadanie to opracowane jest w mniej lub bardziej sformalizowanej formie. W najlepszym razie programista określa, na kiedy zadanie zostanie wykonane lub, co częstsze, dowiaduje się o ustalonej dacie wdrożenia. Potem następuje enigmatyczne "programista wykonuje zadanie". Choć metodykom prowadzenia projektów IT poświęcono ogromną ilość czasu i publikacji, to jednocześnie trudno znaleźć kompleksowe opracowanie odpowiadające na pytania: co dokładnie powinien zrobić programista z zadaniem, które ma wykonać? czy istnieje jakiś usystematyzowany sposób wykonywania zadań? jak radzić sobie z występującymi problemami?

Każdy deweloper ma własny pomysł. Jedni po prostu siadają i zaczynają pisać, inni dyskutują z kolegami na temat danego rozwiązania, jeszcze inni czekają na przypływ twórczego geniuszu. Nie zmienia to faktu, że jeśli chodzi o osobisty warsztat pracy, programiści są zostawieni samym sobie. Poszukują efektywnych sposobów działania i doskonalą swoje sposoby radzenia sobie z zadaniami. Jedni stają się artystami w zawodzie, inni giną w tłumie. Jak zatem można pomóc programistom w pełni rozwinąć ich potencjał?