Programowanie zwinne: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
(to jeszcze trochę się rozbuduje)
 
M (Wycofano ostatnie edycje użytkownika 195.35.80.28, powód: woda trochę, poza tym ma się to nijak do BDD)
Znacznik: rewert
 
(Nie pokazano 20 wersji utworzonych przez 8 użytkowników)
Linia 1: Linia 1:
{{Medal}}
'''Programowanie zwinne''' (ang. ''agile software development'') – początkowo nieznacząca sekta, obecnie najpopularniejsza religia wśród [[Programista|programistów]]. Jej podstawowym założeniem jest bycie fajniejszym (zwinniejszym) od nie-edżajlowych deweloperów.
'''Programowanie zwinne''' (ang. ''agile software development'') – początkowo nieznacząca sekta, obecnie najpopularniejsza religia wśród [[Programista|programistów]]. Jej podstawowym założeniem jest bycie fajniejszym (zwinniejszym) od nie-edżajlowych deweloperów.


== Przykazania ==
== Przykazania ==
Linia 9: Linia 10:
* '''''pisanie ogromnych ilości niezwiązanego wzajemnie ze sobą kodu''' ponad obszerną dokumentację''
* '''''pisanie ogromnych ilości niezwiązanego wzajemnie ze sobą kodu''' ponad obszerną dokumentację''
* '''''targowanie się z klientem''' ponad formalne ustalenia''
* '''''targowanie się z klientem''' ponad formalne ustalenia''
* '''''zmienianie wszystkiego jak popadnie'' ponad podążanie za planem''
* '''''zmienianie wszystkiego jak popadnie''' ponad podążanie za planem''


''Według Manifestu Edżajl, to co wymieniono po prawej stronie jest reliktem przeszłości i każdy kto te rzeczy stosuje jest dinozaurem. Jesteśmy od was zwinniejsi.''
''Według Manifestu Edżajl, to co wymieniono po prawej stronie jest reliktem przeszłości i każdy kto te rzeczy stosuje jest dinozaurem. Jesteśmy od was zwinniejsi.''
Linia 15: Linia 16:
== ''Stand-up meeting'' ==
== ''Stand-up meeting'' ==
[[Plik:Conjunto español 2003 02.png|thumb|180px|Współczesny ''stand-up meeting'']]
[[Plik:Conjunto español 2003 02.png|thumb|180px|Współczesny ''stand-up meeting'']]
Wśród elementów metodyk zwinnych można wymienić ''stand-upy'', czyli zebrania członków zespołu na stojąco. Z założenia niewygoda wynikająca z ciągłego stania ma skutkować krótszymi spotkaniami, niestety wraz ze wzrostem popularności biurek do stania<ref>Kolejny hipsterski wymysł</ref> znacząco zwiększyła się wytrzymołość programistów na stanie. Obecnie wykształciły się różne szkoły rozwiązywania tego problemu, od spotkań stanych na rękach, przez stanie bosymi stopami na rozgrzanych węglach aż po spotkania w egzotycznych pozycjach inspirowanych jogą ekstremalną.
Wśród elementów metodyk zwinnych można wymienić ''stand-upy'', czyli zebrania członków zespołu na stojąco. Z założenia niewygoda wynikająca z ciągłego stania ma skutkować krótszymi spotkaniami, niestety wraz ze wzrostem popularności biurek do stania<ref>Kolejny hipsterski wymysł</ref> znacząco zwiększyła się wytrzymałość programistów na stanie. Obecnie wykształciły się różne szkoły rozwiązywania tego problemu, od spotkań stanych na rękach, przez stanie bosymi stopami na rozgrzanych węglach aż po spotkania w egzotycznych pozycjach inspirowanych jogą ekstremalną.


== Metodyki ''edżajlowe'' ==
== Metodyki ''edżajlowe'' ==
Linia 21: Linia 22:


=== ''Guilt Driven Development'' ===
=== ''Guilt Driven Development'' ===
Jedna z bardziej skutecznych metodyk. Na początku iteracji każdy członek zespołu składa obietnice, które elementy zrealizuje. Wszystkie obietnice zapisywane są w odpowiedniej bazie, a komputer nie przebacza. Jeśli nie dotrzyma się jakiejś obietnicy, odpowiedni program napomina dewelopera i robi mu wyrzuty komentując jego niesłowność i nieodpowiedzialność. Przykładowe wyjście takiego programu:
Jedna z bardziej skutecznych metodyk. Na początku iteracji każdy członek zespołu składa obietnice, które elementy zrealizuje. Wszystkie obietnice zapisywane są w odpowiedniej bazie, a [[komputer]] ''nigdy'' nie zapomina. Jeśli nie dotrzyma się jakiejś obietnicy, odpowiedni program napomina dewelopera i robi mu wyrzuty komentując jego niesłowność i nieodpowiedzialność. Przykładowe wyjście takiego programu:
{{Cytat2|''Obiecałeś do końca iteracji zaimplementować funkcjonalność #4069, a kodu dalej coś nie ma… Zastanów się, co to mówi o Tobie? Czy kiedykolwiek dojrzejesz do bycia odpowiedzialnym dorosłym? Czy Twoja matka byłaby z ciebie dumna? Przysięgałeś na jej właśnie zdrowie, czy rzeczywiście tak nisko cenisz sobie jej zdrowie?''}}
{{Cytat2|''Obiecałeś do końca iteracji zaimplementować funkcjonalność #4069, a kodu dalej coś nie ma… Zastanów się, co to mówi o Tobie? Czy kiedykolwiek dojrzejesz do bycia odpowiedzialnym dorosłym? Czy Twoja matka byłaby z ciebie dumna? Przysięgałeś na zdrowie matki, że to zrobisz, czy rzeczywiście tak nisko cenisz sobie jej zdrowie?''}}


Słowem wyjaśnienia – bardziej zaawansowane programy nękające wymagają wprowadzenia wielu informacji o każdym członku zespołu, jego rodzinie, zdrowiu psychicznym, osiągnięciach w nauce i życiu erotycznym. Następnie programista musi przysiąc na coś, co jest wysoko w jego hierarchii wartości (np. na Boga, matkę, rachunek różniczkowy…) dla maksymalnej skuteczności.
Słowem wyjaśnienia – bardziej zaawansowane programy nękające wymagają wprowadzenia wielu informacji o każdym członku zespołu, jego rodzinie, zdrowiu psychicznym, osiągnięciach w nauce i życiu erotycznym. Następnie programista musi przysiąc na coś, co jest wysoko w jego hierarchii wartości (np. na [[Bóg|Boga]], [[Matka|matkę]], [[rachunek różniczkowy]]…) dla maksymalnej skuteczności. Warto zaznaczyć, że programy nękające działają także w święta, ba, w dni ustawowo wolne od pracy nękają aż trzy razy częściej.


Wśród skutków ubocznych metodyki GDD można wymienić między innymi większą podatność członków zespołu na załamanie nerwowe, depresję i ogólną zwiększoną śmiertelność. Należy ją stosować wraz z agresywnymi technikami poszukiwania pracowników w celu zapewnienia stałej ilości programistów w projekcie.
Wśród skutków ubocznych metodyki GDD można wymienić między innymi większą podatność członków zespołu na załamanie nerwowe, [[Depresja|depresję]] i ogólną zwiększoną śmiertelność. Należy ją stosować wraz z agresywnymi technikami poszukiwania pracowników w celu zapewnienia stałej ilości programistów w projekcie.


[[Plik:Extreme programming in action.jpg|thumb|250px|Lider zespołu SDD musi zadbać o odzież ochronną dla siebie]]
=== ''Shame Driven Development'' ===
=== ''Shame Driven Development'' ===
Metodyka nieco podobna do Guilt Driven Development, ją również można implementować przy pomocy narzędzi automatycznych, ale daje dużo lepsze efekty, gdy robią to ludzie. Podstawowym założeniem jest rezygnacja z jakichkolwiek wymagań przy commitowaniu i merge'owaniu kodu. Tak, żadnych durnych code review, żadnych unit testów, kod nie musi się nawet kompilować, cała odpowiedzialność spoczywa na programiście. Jeśli w kodzie będą jakieś bugi (a będą), należy delikwenta publicznie wyśmiać i zagonić do roboty. Prekursorem tej metodyki jest twórca Linuksa, [[Linus Torvalds]], oto kilka wypowiedzi mistrza:
Metodyka nieco podobna do Guilt Driven Development, ją również można implementować przy pomocy narzędzi automatycznych, ale daje dużo lepsze efekty, gdy robią to ludzie. Podstawowym założeniem jest rezygnacja z jakichkolwiek wymagań przy commitowaniu i [[Scalanie|merge'owaniu]] kodu. Tak, żadnych durnych code review, żadnych unit testów, kod nie musi się nawet kompilować, cała odpowiedzialność spoczywa na programiście. Jeśli w kodzie będą jakieś bugi (a będą), należy delikwenta publicznie wyśmiać i zagonić do roboty. Prekursorem tej metodyki jest twórca Linuksa, [[Linus Torvalds]], oto kilka wypowiedzi mistrza:
<br clear="all" />
{{Cytat2|''Ten gówniany commit został oznaczony jako „stabilny”, ale coś mi się wydaje, że nawet tego nie skompilowałeś!''<ref>[https://lkml.org/lkml/2013/7/13/132 Źródło]</ref>}}
{{Cytat2|''Ten gówniany commit został oznaczony jako „stabilny”, ale coś mi się wydaje, że nawet tego nie skompilowałeś!''<ref>[https://lkml.org/lkml/2013/7/13/132 Źródło]</ref>}}
{{Cytat2|''Oczywiście, sugerowałbym też żeby geniusz który myślał, że czytanie danych BAJT PO J{{cenzura3}}YM BAJCIE to dobry pomysł powinien zostać poddany wstecznej aborcji. Kto k{{cenzura3}}a robi tak idiotyczne rzeczy? Jakim cudem nie umarł jako dziecko, skoro prawdopodobnie był zbyt głupi, by znaleźć cycka do ssania?''<ref>[https://lkml.org/lkml/2012/7/6/495 Źródło]</ref>}}
{{Cytat2|''Oczywiście, sugerowałbym też żeby geniusz który myślał, że czytanie danych BAJT PO J{{cenzura3}}YM BAJCIE to dobry pomysł powinien zostać poddany wstecznej aborcji. Kto k{{cenzura3}}a robi tak idiotyczne rzeczy? Jakim cudem nie umarł jako dziecko, skoro prawdopodobnie był zbyt głupi, by znaleźć cycka do ssania?''<ref>[https://lkml.org/lkml/2012/7/6/495 Źródło]</ref>}}
Linia 37: Linia 40:
Skutki uboczne SDD są w gruncie rzeczy podobne do skutków GDD, więc nie będziemy się powtórnie nad nimi rozwodzić.
Skutki uboczne SDD są w gruncie rzeczy podobne do skutków GDD, więc nie będziemy się powtórnie nad nimi rozwodzić.


=== Bug Driven Development ===
=== ''Bug Driven Development'' ===
Bardzo naturalna metodyka, która głęboko rezonuje z każdym pełnokrwistym programistą. Dobremu deweloperowi nie trzeba jej nawet tłumaczyć, bo jest dlań oczywista i intuicyjna. Podstawowym założeniem jest napisanie jak największej ilości kodu w jak najkrótszym czasie, byle się kompilowało, nic więcej, nie musi nawet za bardzo działać. Następnie należy łatać bugi w kolejnych iteracjach do skutku.
Bardzo naturalna metodyka, która głęboko rezonuje z każdym pełnokrwistym programistą. Dobremu deweloperowi nie trzeba jej nawet tłumaczyć, bo jest dlań oczywista i intuicyjna. Podstawowym założeniem jest napisanie jak największej ilości kodu w jak najkrótszym czasie, byle się kompilowało, nic więcej, nie musi nawet za bardzo działać. Następnie w kolejnych iteracjach należy łatać bugi do skutku.

Technika ''Bug Driven Development'' gwarantuje zakończenie projektu w skończonym czasie i budżecie. Niestety, górnym oszacowaniem czasu potrzebnego na wdrożenie całości jest [[Apokalipsa]], dlatego kluczowym jest zachowanie optymizmu i wytrwałe targowanie się z klientem<ref>''It's not a bug, it's a feature!</ref>.

=== ''Stack Overflow Driven Development'' ===
Awangardowa metodyka uprawiana głównie przez młodych i ambitnych programistów. Wbrew swej nazwie, SODD nie ma żadnego związku ze strukturą stosu ani jej przepełnieniem – nie trzeba nawet wiedzieć co to jest stos! Na dobrą sprawę to w ogóle nie trzeba nic wiedzieć.

Metodyka ''Stack Overflow Driven Development'' została ściśle zdefiniowana następującymi krokami:
# Napisz kawałek kodu i spróbuj go skompilować.
# Oczywiście że się nie skompilowało. Sprawdź jaki błąd wypluł kompilator i skopiuj tekst błędu do schowka.
# Wklej ten błąd w [[Google|wyrocznię]] i przeczytaj, co mądre głowy na Stack Overflow mają do powiedzenia na temat.
# Skopiuj losowo wybrany kod ze Stacka do swojego programu.
# Wróć do punktu 1.

Kroki te należy powtarzać do skutku, czyli do wyklepania koszmarnie zabugowanego i powiązanego sznurkiem od snopowiązałki kodu, albo do załamania nerwowego programisty.


=== Programowanie ekstremalne ===
=== Programowanie ekstremalne ===
Linia 44: Linia 61:
{{Główny artykuł|[[Programowanie ekstremalne]]}}
{{Główny artykuł|[[Programowanie ekstremalne]]}}


== Zobacz też ==
{{Przypisy}}
* [[coaching]]
* [[inżynieria oprogramowania]]
* [[programista]]
* [[język programowania]]


{{Informatyka}}
{{Przypisy}}


{{stopka}}
[[Kategoria:Programowanie]]
[[Kategoria:Inżynieria oprogramowania|Zwinne]]

Aktualna wersja na dzień 20:05, 13 lip 2022

Medal.svg

Programowanie zwinne (ang. agile software development) – początkowo nieznacząca sekta, obecnie najpopularniejsza religia wśród programistów. Jej podstawowym założeniem jest bycie fajniejszym (zwinniejszym) od nie-edżajlowych deweloperów.

Przykazania[edytuj • edytuj kod]

Jeden z proroków prezentuje Agile Manifesto

Podstawą religii Agile jest stworzony w 2001 roku przez siedemnastu proroków Agile Manifesto, stanowiący odpowiednik dekalogu. Oto treść Manifestu:

Zwinnie wytwarzając oprogramowanie i pomagając ziomkom w tym zakresie, odkrywa się lepsze sposoby bycia fajnym. W wyniku tych doświadczeń przedkłada się:

  • fajni ludzie i melanże ponad procesy i narzędzia
  • pisanie ogromnych ilości niezwiązanego wzajemnie ze sobą kodu ponad obszerną dokumentację
  • targowanie się z klientem ponad formalne ustalenia
  • zmienianie wszystkiego jak popadnie ponad podążanie za planem

Według Manifestu Edżajl, to co wymieniono po prawej stronie jest reliktem przeszłości i każdy kto te rzeczy stosuje jest dinozaurem. Jesteśmy od was zwinniejsi.

Stand-up meeting[edytuj • edytuj kod]

Współczesny stand-up meeting

Wśród elementów metodyk zwinnych można wymienić stand-upy, czyli zebrania członków zespołu na stojąco. Z założenia niewygoda wynikająca z ciągłego stania ma skutkować krótszymi spotkaniami, niestety wraz ze wzrostem popularności biurek do stania[1] znacząco zwiększyła się wytrzymałość programistów na stanie. Obecnie wykształciły się różne szkoły rozwiązywania tego problemu, od spotkań stanych na rękach, przez stanie bosymi stopami na rozgrzanych węglach aż po spotkania w egzotycznych pozycjach inspirowanych jogą ekstremalną.

Metodyki edżajlowe[edytuj • edytuj kod]

Na żyznym gruncie mniej lub bardziej spójnego pierdolenia o programowaniu zwinnym wyrosło całkiem sporo dziwnych i dziwniejszych metodyk. Warto tutaj zaznaczyć, że wszystkie poniższe metodyki faktycznie istnieją i nie zostały zmyślone przez autora. O Scrumie nie będziemy pisać, bo jest już passé i nikt poważny go nie stosuje.

Guilt Driven Development[edytuj • edytuj kod]

Jedna z bardziej skutecznych metodyk. Na początku iteracji każdy członek zespołu składa obietnice, które elementy zrealizuje. Wszystkie obietnice zapisywane są w odpowiedniej bazie, a komputer nigdy nie zapomina. Jeśli nie dotrzyma się jakiejś obietnicy, odpowiedni program napomina dewelopera i robi mu wyrzuty komentując jego niesłowność i nieodpowiedzialność. Przykładowe wyjście takiego programu:



Cquote2.svg

Obiecałeś do końca iteracji zaimplementować funkcjonalność #4069, a kodu dalej coś nie ma… Zastanów się, co to mówi o Tobie? Czy kiedykolwiek dojrzejesz do bycia odpowiedzialnym dorosłym? Czy Twoja matka byłaby z ciebie dumna? Przysięgałeś na zdrowie matki, że to zrobisz, czy rzeczywiście tak nisko cenisz sobie jej zdrowie?
Cquote2.svg

Słowem wyjaśnienia – bardziej zaawansowane programy nękające wymagają wprowadzenia wielu informacji o każdym członku zespołu, jego rodzinie, zdrowiu psychicznym, osiągnięciach w nauce i życiu erotycznym. Następnie programista musi przysiąc na coś, co jest wysoko w jego hierarchii wartości (np. na Boga, matkę, rachunek różniczkowy…) dla maksymalnej skuteczności. Warto zaznaczyć, że programy nękające działają także w święta, ba, w dni ustawowo wolne od pracy nękają aż trzy razy częściej.

Wśród skutków ubocznych metodyki GDD można wymienić między innymi większą podatność członków zespołu na załamanie nerwowe, depresję i ogólną zwiększoną śmiertelność. Należy ją stosować wraz z agresywnymi technikami poszukiwania pracowników w celu zapewnienia stałej ilości programistów w projekcie.

Lider zespołu SDD musi zadbać o odzież ochronną dla siebie

Shame Driven Development[edytuj • edytuj kod]

Metodyka nieco podobna do Guilt Driven Development, ją również można implementować przy pomocy narzędzi automatycznych, ale daje dużo lepsze efekty, gdy robią to ludzie. Podstawowym założeniem jest rezygnacja z jakichkolwiek wymagań przy commitowaniu i merge'owaniu kodu. Tak, żadnych durnych code review, żadnych unit testów, kod nie musi się nawet kompilować, cała odpowiedzialność spoczywa na programiście. Jeśli w kodzie będą jakieś bugi (a będą), należy delikwenta publicznie wyśmiać i zagonić do roboty. Prekursorem tej metodyki jest twórca Linuksa, Linus Torvalds, oto kilka wypowiedzi mistrza:



Cquote2.svg

Ten gówniany commit został oznaczony jako „stabilny”, ale coś mi się wydaje, że nawet tego nie skompilowałeś![2]
Cquote2.svg


Cquote2.svg

Oczywiście, sugerowałbym też żeby geniusz który myślał, że czytanie danych BAJT PO JCenzura2.svgYM BAJCIE to dobry pomysł powinien zostać poddany wstecznej aborcji. Kto kCenzura2.svga robi tak idiotyczne rzeczy? Jakim cudem nie umarł jako dziecko, skoro prawdopodobnie był zbyt głupi, by znaleźć cycka do ssania?[3]
Cquote2.svg

I crème de la crème:



Cquote2.svg

Mauro, ZAMKNIJ Cenzura2.svg RYJ![4]
Cquote2.svg

Skutki uboczne SDD są w gruncie rzeczy podobne do skutków GDD, więc nie będziemy się powtórnie nad nimi rozwodzić.

Bug Driven Development[edytuj • edytuj kod]

Bardzo naturalna metodyka, która głęboko rezonuje z każdym pełnokrwistym programistą. Dobremu deweloperowi nie trzeba jej nawet tłumaczyć, bo jest dlań oczywista i intuicyjna. Podstawowym założeniem jest napisanie jak największej ilości kodu w jak najkrótszym czasie, byle się kompilowało, nic więcej, nie musi nawet za bardzo działać. Następnie w kolejnych iteracjach należy łatać bugi do skutku.

Technika Bug Driven Development gwarantuje zakończenie projektu w skończonym czasie i budżecie. Niestety, górnym oszacowaniem czasu potrzebnego na wdrożenie całości jest Apokalipsa, dlatego kluczowym jest zachowanie optymizmu i wytrwałe targowanie się z klientem[5].

Stack Overflow Driven Development[edytuj • edytuj kod]

Awangardowa metodyka uprawiana głównie przez młodych i ambitnych programistów. Wbrew swej nazwie, SODD nie ma żadnego związku ze strukturą stosu ani jej przepełnieniem – nie trzeba nawet wiedzieć co to jest stos! Na dobrą sprawę to w ogóle nie trzeba nic wiedzieć.

Metodyka Stack Overflow Driven Development została ściśle zdefiniowana następującymi krokami:

  1. Napisz kawałek kodu i spróbuj go skompilować.
  2. Oczywiście że się nie skompilowało. Sprawdź jaki błąd wypluł kompilator i skopiuj tekst błędu do schowka.
  3. Wklej ten błąd w wyrocznię i przeczytaj, co mądre głowy na Stack Overflow mają do powiedzenia na temat.
  4. Skopiuj losowo wybrany kod ze Stacka do swojego programu.
  5. Wróć do punktu 1.

Kroki te należy powtarzać do skutku, czyli do wyklepania koszmarnie zabugowanego i powiązanego sznurkiem od snopowiązałki kodu, albo do załamania nerwowego programisty.

Programowanie ekstremalne[edytuj • edytuj kod]

Praojciec wszystkich najciekawszych metodyk zwinnych, otoczony tak wielkim szacunkiem, że zasłużył sobie na własny artykuł.

Info.png Główny artykuł: Programowanie ekstremalne

Zobacz też[edytuj • edytuj kod]

Przypisy

  1. Kolejny hipsterski wymysł
  2. Źródło
  3. Źródło
  4. Źródło
  5. It's not a bug, it's a feature!