Share on Facebook Tweet it

Sprzężenie zwrotne

Sprzężenie zwrotne jest mechanizmem samoregulującym, dzięki któremu system otrzymuje informacje dotyczące efektów własnego działania. Sprzężenie zwrotne może mieć charakter dodatni lub ujemny, odpowiednio osłabiający lub wzmacniający działanie wymuszające.

Przykładem dodatniego sprzężenia zwrotnego jest proces zanikania pokrywy lodowcowej. Coraz mniejsza powierzchnia pokrywy powoduje, że ilość światła słonecznego odbijana od ziemi jest coraz mniejsza, co powoduje podniesienie temperatury i jeszcze szybszy zanik pokrywy.

Z ujemnym sprzężeniem zwrotnym mamy do czynienia np. w urzędzie, gdy początkowy animusz petenta jest systematycznie tłamszony kolejkami i odprawami sprzed kolejnych okienek aż do osiągnięcia punktu równowagi, który w optymistycznym przypadku może okazać się wystarczający do pomyślnego załatwienia sprawy.

Czy sprzężenie zwrotne ma zastosowanie w programowaniu?

Otóż, zwinne zespoły otaczają się mechanizmami sprzężenia zwrotnego, często nie zdając sobie z tego nawet sprawy.  Deweloperzy szukają, mniej lub bardziej świadomie, mechanizmów zarówno hamujących jak i pobudzających. Mechanizmy te możemy podzielić na automatyczne i nieautomatyczne.

Mechanizmy automatyczne:

IDE – informacja zwrotna na temat stosowanej składni jak i podpowiedź składni; sprzężenie zwrotne zarówno dodatnie jak i ujemne; czas reakcji: do kilku sekund

Kompilacja – informacja zwrotna odnośnie błędów kompilacji; sprzężenie zwrotne ujemne; czas reakcji: do kilkunastu minut

Testy jednostkowe – informacja zwrotna odnośnie tego czy najmniejsze funkcjonalne jednostki kodu spełniają swoją funkcją; sprzężenie zwrotne ujemne; czas reakcji: do kilkudziesięciu sekund

Testy integracyjne – informacja zwrotna odnośnie tego czy grupy modułów funkcjonują zgodnie ze specyfikacją przy różnych wymuszeniach; sprzężenie zwrotne ujemne, czas reakcji: do kilkunastu minut

Ciągła integracja – umożliwia otrzymanie informacji zwrotnej przy każdej zmianie kodu; sprzężenie zwrotne ujemne

Dashboard – duży zielony bądź czerwony ekran sygnalizujący błędy wykrywane przez proces ciągłej integracji w możliwie najkrótszym czasie, sprzężenie zwrotne ujemne,

Testy akceptacyjne – informacja zwrotna odnośnie tego czy powstająca funkcjonalność jest zgodna z wymaganiami, testy akceptacyjne mogą same w sobie stanowić wymaganie; sprzężenie zwrotne zarówno dodatnie jak i ujemne,

Mechanizmy nieautomatyczne:

Programowanie w parach – koryguje zmiany wprowadzane przez programistów jeszcze przed ich wprowadzeniem do kodu źródłowego, umożliwia pisanie obiektywnych testów, informacja zwrotna na temat techniki pisania kodu; sprzężenie zwrotne zarówno dodatnie jak i ujemne, czas reakcji: natychmiastowy

Przegląd kodu – koryguje zmiany wprowadzane przez programistów po ich wprowadzeniu, wymaga przygotowania; sprzężenie zwrotne zarówno dodatnie jak i ujemne, czas reakcji: do kilku tygodni

Codzienny scrum – informacja zwrotna dla zespołu na temat postępu i problemów poszczególnych jego członków; sprzężenie zwrotne zarówno dodatnie jak i ujemne, czas reakcji: dzień

Demo – informacja zwrotna odnośnie zgodności implementacji funkcjonalności z wizją Product Ownera; sprzężenie zwrotne zarówno dodatnie jak i ujemne, czas reakcji: iteracja

Retrospekcja – informacja zwrotna odnośnie sposobu działania zespołu; sprzężenie zwrotne zarówno dodatnie jak i ujemne; czas reakcji: iteracja

Przegląd sprintu – informacja zwrotna na temat kompletności zrealizowanych funkcjonalności; sprzężenie zwrotne zarówno dodatnie jak i ujemne; czas reakcji: iteracja

Zastosowanie każdego z poniższych mechanizmów niesie ze sobą konkretne korzyści. Z kolei pominięcie któregoś z nich skutkuje wydłużeniem procesu reagowania zespołu na zmiany różnych aspektów systemu.

Informacje przekazywane przez ludzi mają częściej charakter stymulujący niż informacje automatyczne. Sprzężenie zwrotne dodatnie wyprowadza system z równowagi. Dlatego warto sobie zadać pytanie: Jak przekazywać informację zwrotną dobrze?

  • Po uzyskaniu zezwolenia osoby, której informacja dotyczy
  • W sposób precyzyjny
  • Możliwie wcześniej
  • W formie dialogu
  • Sam na sam

Ważny jest również sposób przyjmowania informacji zwrotnej:

  • Otwartość na krytykę
  • Podziękowanie za opinię
  • Wypracowanie rozwiązania
  • Podjęcie działania

 

Szybka i skuteczne informacja zwrotna wpływa pozytywnie na rozwijany system. Co równie istotne przyspiesza proces uczenia się zespołu. Zespół działający w środowisku naszpikowanym sygnałami zwrotnymi działa z większa pewnością, gdyż ma świadomość istnienia różnorodnych mechanizmów stymulująco-korygujących. Jednoznaczna, obiektywna i częsta ocena działania daje zespołowi większą satysfakcję z pracy i pomaga uniknąć kosztownych błędów i bolesnych rozczarowań.


Tags:

Profile photo of liber

About liber

Jestem zdeklarowanym zwolennikiem zwinnych praktyk. Większość mojego doświadczenia z agile stanowi praca z zespołami scrumowymi zarówno jako Scrum Master jak i jako Scrum Coach. Nie stronie jednak od innych podejść. Ostatnio, na przykład, miałem przyjemność bycia członkiem zespołu kanbanowego. Po klikuletniej pracy w londyńskim City obecnie związany jestem z firmą Espeo Software.

Comments are closed.