Blog (65)
Komentarze (803)
Recenzje (0)

Programowanie ekstremalne

@tflProgramowanie ekstremalne17.09.2011 11:30

Gdy czasem czytam blogi, które ukazują się na dobrychprogramach, dochodzę do wniosku, że w dalszym ciągu na uczelniach zbyt wiele czasu poświęca się nauce teorii, miast porządnie przygotować do pracy programistów. A potem jest niestety tak, że student bez praktyki, po prostu nie może się odnaleźć na rynku pracy. To natomiast napędza wszystkich frustratów do wypłakiwania się na forach o złych pracodawcach oczekujących nie wiadomo czego od pracownika.

Sądzę, że to głównie dlatego, iż uczelnie uczą programowania idealnego. Co to dla mnie znaczy? Programowanie idealne polega na tym, by stworzyć program idealny. By przewidzieć wszystkie możliwości, zaplanować reakcje na nie, stworzyć obszerną, doskonałą dokumentacje, idealnie sformatować kod i zachować jak największą lekkość kodu. Tymczasem w przyrodzie nie występuje nic "idealnego" i "doskonałego". Są natomiast rozwiązania, które mimo swoich oczywistych niedoskonałości działają. W procesie tworzenia aplikacji jest jeszcze jeden ważny czynnik. Klient. Klient to pojęcie z teorii metodyk programowania i oznacza każdą osobę, która ma wpływ na kształt programu (czyli np. funkcjonalność, funkcyjność itd), ale nie jest programistą. Takich osób, drodzy studenci na swojej drodze spotkacie dziesiątki w jednej tylko firmie. I to niezależnie od tego, czy programujecie front- czy back-end aplikacji. A zmiany dokonywane będą w sposób chaotyczny, nieskonkretyzowany, często wykluczający się wzajemnie.

I napisz tu, jeden z drugim, do tego dokumentację.

Programowanie ekstremalne

Ludzie piszą swoje programy od wielu lat, od wielu lat również piszą je komercyjnie. Dlatego wielu z nich wpadło już na ten pomysł, że tworzenie dokumentacji do rozwijanej aplikacji jest często stratą czasu. O ile jeszcze warto metodę opisać trzema parametrami (co przyjmuje, co zwraca, co w ogóle robi), o tyle rozpisywanie się na temat zasad działania to strata zasobów. Dlatego Enterprise Architect i UML powoli zostaje wyparty przez Planning Poker i Scrum.

Czym w ogóle jest programowanie ekstremalne? To rodzaj metodyki pracy przy którym tworzone są aplikacje "wysokiego ryzyka". To wysokie ryzyko pochodzi stąd, że tworzony kod nie jest do końca jasny i zaplanowany, jednak przyjmuje on i zwraca oczekiwane wyniki. Bardzo często fragment kodu pochodzi z innej aplikacji lub jest emulowany na inny język programowania. Te fragmenty kodu oraz kod, który powstaje w czasie programowania nie jest dokumentowany. Jedynie weryfikowany przez testy jednostkowe.

Programowanie ekstremalne jest jednak tylko jedną z metodologii zaliczanej do tak zwanego Agile Programming i jest (jak nazwa wskazuje) ekstremalna metodą. Omówię trochę bardziej Scrum.

Scrum

Scrum to jedna z metod zwinnego programowania, nastawiona na realne tworzenie produktu. Realne, a więc stałe jego rozwijanie. Metodyka ta zakłada pracę w oparciu o tzw. sprinty. A dokładniej wygląda to tak:

Spotkanie z klientem - grupa projektowa (nie tylko sami programiści, ale także analitycy, często graficy, scrum master) spotyka się z klientami, którzy określają zakres oczekiwanych rozszerzeń aplikacji. Na tym etapie bardzo często klient popuszcza wodzę wyobraźni, ale to nic nie szkodzi. Im więcej się dowiemy, tym lepiej będziemy znać oczekiwania klienta. Te rozszerzenia powinny być konkretne, ale sformułowane ogólnie. Czyli na przykład "dodanie możliwości zakupu na raty", ale nie "dodanie nowych możliwości zakupów".

Planowanie sprinta - Często nazywa się ten etap estymacją sprinta, czyli nadawaniem odpowiedniego priorytetu dla każdego z oczekiwanych rozszerzeń aplikacji. Tutaj przydaję się wzmiankowany planning poker. Jest to po prostu talia kart, ponumerowana, która rozdaje się wśród grupy projektowej. Każde z rozszerzeń jest oceniane przez pracownika przez wartość karty. Osoby, które ocenią je najwyżej oraz najniżej muszą swój wybór uzasadnić i przekonać innych do swoich racji. Karty pokazuje się tyle razy, aż nie nastąpi pełna zgoda. Następnie określa się ilość zasobów (czyli osobogodzin, ale zasób brzmi ładniej) dla konkretnego zadania. Po wyczerpaniu zasobów estymacja kończy się, a rozszerzenia, które nie weszły do sprinta przechodzą do następnego.

Sprint - sam sprint to okres pracy zespołu projektowego nad zadaniami. Jego okres jest różny (znam firmy, gdzie okres ten trwa 3 miesiące, znam takie, gdzie trwa trzy tygodnie). Zadaniem zespołu jest wykonanie wszystkich zadań, które sobie założył. Dobrą praktyką jest stosowanie tej samej długości sprintów (dzięki temu lepiej rozplanowuje się czas) oraz organizacja tzw. daily meetingów, czyli codziennych spotkań (najlepiej porannych), w których omawia się problemy dnia poprzedniego. W tym momencie klient już nie może nic zmienić w swoich rozszerzeniach, a scrum master dba o to, by zespół projektowy mógł pracować niezależnie.

Prezentacja sprinta - Po zakończeniu sprinta prezentowane są wyniki prac zespołu projektowego. Zawsze powinno być tak, że pokazywane są "namacalne" zmiany. Każdy zamieszany w projekt może brać udział w prezentacji i zabrać głos. Często zdarza się, że w takich momentach zespołu projektowy zwraca uwagę klientowi na brak logiki w zgłaszanych rozszerzeniach.

A teraz loop, czyli wszystko się powtarza. Dzięki takiej metodyce prac w końcu w kliencie i zespole projektowym wyrabia się nić porozumienia, projekt staje się solidny i rozbudowany.

Oczywiście są wady również takiego rozwiązania (i w ogóle programowania zwinnego). Przede wszystkim mała ilość dokumentacji kodu powoduje, że bardzo ciężko zmienia się zespół projektowy. Ogromna ilość wiedzy na temat kodu i jego działania znajduje się po prostu w głowach programistów, dlatego bywają sytuacje, gdy rozbudowa kodu o nowe rozszerzenie jest bardzo czasochłonna.

Podsumowanie

W zasadzie to wszystko, co chciałem napisać w tym temacie. Niestety moja natura zmusza mnie do dodania złośliwej uwagi - drogi czytelniku! Jeśli uważasz, że po zaliczeniu na pierwszym roku programowania w C zostaniesz przyjęty do pracy z otwartymi ramionami, jeśli uważasz, że Twoje porfolio aplikacji można rozszerzyć grafami klas, jeśli uważasz, że dla Twojego klienta ma większe znaczenie, czy kod jest optymalny czy oddany w terminie - uważaj! Możesz zostać niemile zaskoczony.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.