-
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
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-05-28 Tani darmowy manager plików
- 2025-05-28 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-05-28 Re: Nowe zalecenie w Mini Netykiecie dotyczące wklejania linków URL
- 2025-05-28 Białystok => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-28 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-05-28 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-05-28 Citi --> Velo
- 2025-05-28 Warszawa => MLOps Engineer <=
- 2025-05-28 Warszawa => Specjalista rekrutacji IT <=
- 2025-05-28 Szok
- 2025-05-28 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-05-28 Szczecin => Key Account Manager IT <=
- 2025-05-28 Warszawa => NMS System Administrator <=
- 2025-05-28 Warszawa => Java Full Stack Developer (Angular2+) <=
- 2025-05-28 Uwaga na spadki....