Programista jako tester

Myślenie systemowe pozwala całościowo spojrzeć na proces wytwarzania oprogramowania. Dzięki zrozumieniu zależności pomiędzy jego częściami i określeniu wpływu zmian w jednej z nich na inne udaje się udoskonalić proces.

Każdy proces wytwarzania oprogramowania cechuje występowanie określonych ról, które mogą pełnić członkowie zespołu. Rola nie jest tożsama ze stanowiskiem. Popularne dziś metodyki zwinne zachęcają, aby każdy członek zespołu był multiinstrumentalistą: dziś napisze fragment kodu, jutro będzie scrum masterem, a pojutrze zajmie się tworzeniem testów.

Ogromne tempo rozwoju technologii wymusza na informatykach to, co Czerwona Królowa powiedziała Alicji w książce „Alicja z Krainy Czarów”: „Trzeba biec tak szybko, jak się potrafi, żeby zostać w tym samym miejscu. Jeżeli chce się znaleźć w innym miejscu, trzeba biec co najmniej dwa razy szybciej!”. Jeśli ktoś chce być dobrym programistą C++, musi wciąż przyswajać nową wiedzę. Średnio co trzy lata pojawia się nowy standard tego języka. Do tego dochodzą nowe biblioteki, technologie, frameworki...

Zobacz również:

Specjalizacja wymusza podział ról. Zwykle w silnych zespołach każdy jego członek jest wysokiej klasy specjalistą, ale w ściśle określonym obszarze. Czasem każdy staje się ekspertem na własnym podwórku i przestaje całościowo dostrzegać proces wytwarzania oprogramowania.

Problem polega na tym, że współczesny proces wytwarzania oprogramowania jest bardzo skomplikowany. Występuje w nim wiele zależności i prowadzony jest przez wielu ludzi. Aby z sukcesem zrealizować projekt, członkowie zespołu muszą się ze sobą komunikować. Nie wystarczy skończyć projekt o czasie i w budżecie. On musi cechować się również odpowiednią jakością.

Programista jako tester

Myślenie systemowe

Tu dochodzimy do sedna problemu: jakość jest pochodną czynności wykonywanych przez poszczególnych członków zespołu. Czasami wymaga to interdyscyplinarnej wiedzy lub szczególnych umiejętności. Jeśli w świecie IT panuje wysoko rozwinięta specjalizacja, nie zawsze jesteśmy w stanie wykonać perfekcyjnie naszą pracę. Czasem potrzebujemy pomocy kogoś bardziej doświadczonego.

Co więcej, ze względu na stopień skomplikowania współczesnych procesów wytwarzania oprogramowania trudno dostrzec zalety współpracy. Typ myślenia potrafiący uchwycić widok z lotu ptaka na cały projekt Peter Senge w książce „Piąta dyscyplina” nazywa myśleniem systemowym. Dzięki myśleniu systemowemu możemy zrozumieć, jak działania w jednym obszarze projektu wpłyną na inny obszar lub jak przełożą się na końcową jakość produktu.

Programista jako tester

Przeanalizujmy problem na przykładzie pracy programisty. Wiemy, że jest granica pomiędzy programistą a testerem. Programiści zwykle nie wtrącają się do pracy testerów i na odwrót. Wykorzystajmy spojrzenie systemowe, aby przeanalizować zależności pomiędzy dwiema rolami. Zobaczymy, że programista może wpłynąć na końcową jakość produktu, i to wykorzystując swój podstawowy, twardy skill, czyli umiejętność programowania.

Gdyby zapytać programistę o zakres jego obowiązków, zapewne opisałby coś, co przedstawia rysunek 1. Tylko dlaczego większość znanych nam projektów ma problemy z jakością? Dlaczego nie potrafimy jakości ulepszyć, skoro nasz zespół składa się wyłącznie z najlepszych specjalistów? Właśnie dlatego, że nie potrafimy myśleć systemowo. Myślenie systemowe jest kluczem do sukcesu. Pozwala zrozumieć kluczową zasadę metodyki TQM, którą tak trudno zwykle wcielić w życie: wspólną odpowiedzialność za jakość. Ważne, aby każdy członek zespołu zrozumiał, że jest odpowiedzialny za końcową jakość produktu, tak samo jak pozostali uczestnicy projektu.

Analiza oparta na spojrzeniu systemowym pozwala również w łatwy sposób pokazać ludziom, jak tę abstrakcyjną wspólną odpowiedzialność przekuć na konkretne działania oraz przekonać ich, że podjęcie owych działań przyniesie wymierne korzyści. Dokonajmy takiej analizy z punktu widzenia pracy programisty.

Programista jako tester

TOP 200