-
Data: 2012-02-18 03:06:21
Temat: Re: procedura tworzenia programów
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 17/02/2012 21:55, A.L. wrote:
>
> Programwoanie w parch to paranoja. Jedyna forma programwoanai w parach
> ktora znam to nie taka ze dwoch pracuje nad tym samym problemem, ale
> taka ze jeden pracuje nad dwoma problemami. Gdy koszt programisty jezt
> rzedu 200 tysiecy dolarow rocznie (nei wiem ile w Polsce) to za
> propozycje programwoania parami mozna dostac kopa w dolna czesc ciala.
Nie mam dużego doświadczenia w programowaniu w parach, ale na podstawie
tego, co piszą ludzie, którzy to praktykują i z mojego doświadczenia
wynika, że w odpowiednich warunkach i sensownie zrobione może to mieć
duży sens.
Przede wszystkim mogę zaobserwować, że fizyczne klepanie kodu zajmuje
bardzo niewielki wycineek mojego czasu. Wiele z innych czynności mogłoby
być znacznie przyspieszone przez programowanie w parach, albo jest i tak
dublowaniem tego, co bym robił programując w parze z kimś innym, tylko
mało efektywnie (transfer wiedzy).
Moje doświadczenie wskazuje na przykład, że w przypadku takich czynności
jak projektowanie albo znajdowanie problematycznych bugów, naradzenie
się z drugą osobą, która również "siedzi w temacie" jest często
wielokrotnie (więcej niż dwukrotnie, nierzadko znacznie więcej) szybsze,
niż siedzenie i głowienie się samemu. Tyle że w typowej sytuacji, w
której pracuję, w zespole nie ma takiej osoby.
Z drugiej strony wygląda to tak, że ktoś zgłasza się do mnie z prośbą o
pomoc lub wytłumaczenie czegoś. Ponieważ ja akurat robię zupełnie coś
innego, to po pierwsze sama zmiana kontekstu zaburza moją produktywność
w tym, co robię, po drugie muszę poświęcić ileśtam czasu na zrozumienie
problemu mojego kolegi, w dodatku do czasu poświęconego na samo
tłumaczenie. W końcu wszelkie problemy w komunikacji mogą powodować, że
kolega, który coś źle zrozumiał, zrobi źle, więc nie tylko część
poświęconego czasu była zmarnowana, ale to, że zrobił źle, potencjalnie
zmarnuje jeszcze więcej czasu innych ludzi. Z kolei ja, pracując nad
czymś innym, nie mam ani głowy, ani obowiązku ani konkretnej motywacji,
żeby sprawdzić, czy to, co tłumaczyłem przełożyło się na prawidłowe
wykonanie.
I skoro już o tym mowa - defekty są sporym problemem. Pomijając już
koszta związane z ich manifestacją w systemach produkcyjnych, to samo
diagnozowanie, znajdowanie i usuwanie ich pochłania wiele czasu wielu
ludzi, w tym również owych cennych programistów. Jeśli para programistów
produkuje kod z mniejszą ilością defektów niż pojedynczy programista (na
co również wskazują różne dane), to oszczędność czasu na samym tym może
znacznie przewyższać potencjalną stratę na tym, że dwóch programistów
siedzi nad jednym problemem.
W końcu jest ten subtelny psychologiczny aspekt "satysfakcji z pracy".
Oczywiście menedżment może przyjąć punkt widzenia taki, że w pracy się
nie siedzi dla przyjemności, a dla firmy są ważne zyski i straty a nie
zadowolenie pracowników - a jam sam z kolei mogę byc oskarżony o to, że
mam własny interes w tym, żeby mieć satysfakcję z pracy, nawet kosztem
zyskó pracodawcy. Ale też mam pewne wsparcie w literaturze twierdząc, że
satysfakcja pracowników (w szczególności developerów) ma bardzo
konkretne przełożenie na pieniądze: na ten przykład Tom DeMarco i
Timothy Lister "Peopleware".
Z jednej strony moje doświadczenie jest takie, że utknięcie na jakimś
problemie i niemożność obgadania go z kimś jest frustrująca. I że im
bardziej frustrująca praca, tym szybciej się ją zmienia na inną, a
programista, który cośtam potrafi nie tylko nie będzie miał z tym
problemów, ale nawet będą do niego regularnie dzwonić headhuntery i
podsuwać mu propozycje. DeMarco i Lister twierdzą, że wymiana
pracownika, nawet jeśli natychmiast znajdzie się nowego pracownika o
podobnych kwalifikacjach na jego miejsce, kosztuje mniej więcej tyle, co
półroczny koszt zatrudnienia tego pracownika - niekiedy mniej, ale
niekiedy znacznie więcej. Wydaje mi sie to sensownym oszacowaniem.
Druga strona medalu jest taka, że programowanie parami może pomagać w
integrowaniu zespołu, tym, co DeMarco i Lister nazywają "jelling".
Twierdzą oni, z czym również się zgadzam, że takie "jelled" zespoły
osiągają radykalnie lepsze rezultaty, co oczywiście też się przekłada na
pieniądze.
Oczywiście prawdziwość tego wszystkiego, a co za tym idzie skuteczność
programowania w parach zależy mocno od tego jak jest to robione i jak w
ogóle działa cały zespół. Ale też w XP wprost zakłada się, że
poszczególne praktyki działają w kontekście innych praktyk, i dlatego
programowanie parami powinno być połączone co najmniej z TDD,
rozbudowanymi coding standards, collective ownership, daily stand-up itd.
> Ja kuz mowilem o Agile. Proponuje poczytac na ten temat
Aglie jako takie jest raczej ogólnym podejściem, "duchem", niż jakąś
konkretną metodologią. Można jednak zauważyć, że:
1. XP jest uważane za metodologię agile,
2. Zespoły praktykujące agile, nawet jeśli nie stosują XP, często
programują parami,
3. Zgodnie z założeniami agile m. in. o tym, czy progrmauje się parami,
czy pojedyczno, jak również o wielu innych rzeczach, decyduje sam
zespół, a nie kierownictwo. Jeśli jest się w sytuacji, w której nie
można uprawiać programowania parami ze względu na brak zgody
kierownictwa, to nie da się również uprawiać agile, niezależnie od tego,
czy z programowaniem parami, czy bez - zespół po prostu ma za mało
autonomii.
>> Jak waszym zdaniem powinno wyglądać zapewnienie jakości?
>
> Nom na ten temat mapisano moze ksiazek i stworzono ocena metodologii,
> poczynajac od testow jednostkowych. W normalnym przemyslowym
> srodowisku programista musi napisac testy jednostkowe do wszystkiego
> co robi; w wiekscosci przypadkow to jest okolo 75% kodu ktory
> programista pisze. Te testy sa scentralizowane i wykonywan pzrez
> osobny personel. U mnie - co noc.
Personel? U nas to robi maszyna :)
> Poza tym, znow polecam Agile w kontekscie jakosci, wszczegolnocis cos
> takiego jak "test driven development". Ksiazka jest na ten temat, i to
> o ile pamietam, nie jedna
Bardzo polecam - Steve Freeman, Nat Pryce "Growing Object Oriented
Software Guided By Tests".
Następne wpisy z tego wątku
- 18.02.12 03:31 Edek Pienkowski
- 18.02.12 04:27 A.L.
- 18.02.12 04:31 Edek Pienkowski
- 18.02.12 08:59 szyk
- 18.02.12 09:46 Andrzej Jarzabek
- 18.02.12 09:56 Andrzej Jarzabek
- 18.02.12 13:46 Jacek
- 18.02.12 14:12 M.M.
- 18.02.12 14:48 wloochacz
- 18.02.12 15:21
- 18.02.12 15:29 Jacek
- 18.02.12 15:54 A.L.
- 18.02.12 15:55 A.L.
- 18.02.12 15:56 A.L.
- 18.02.12 15:57 A.L.
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-04 GNSS Motorola G85 vs Redmi Note 9 pro
- 2024-11-04 Katowice => SAP BTP Consultant (mid/senior) <=
- 2024-11-04 Katowice => Spedytor międzynarodowy <=
- 2024-11-04 Warszawa => Specjalista/tka ds. Zamówień publicznych <=
- 2024-11-04 Poznań => QA Engineer <=
- 2024-11-04 Poznań => QA Inżynier <=
- 2024-11-04 Polskie sądy są bardzo wyrozumiałe...
- 2024-11-04 Wrocław => SAP Project System/EPPM Consultant <=
- 2024-11-04 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-04 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-04 Kraków => Software .Net Developer <=
- 2024-11-04 Kraków => Programista Full Stack .Net <=
- 2024-11-04 Warszawa => Key Account Manager <=
- 2024-11-04 Warszawa => Spedytor Międzynarodowy <=
- 2024-11-04 Warszawa => E-COMMERCE specialist <=