-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.chmurka.net!.POSTED!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Prowadzenie/dokumentowanie projektu...
Date: Sat, 05 Jan 2013 11:37:37 +0000
Organization: news.chmurka.net
Lines: 63
Message-ID: <kc93a7$i5g$1@somewhere.invalid>
References: <4...@g...com>
<e...@g...com>
<8...@g...com>
<0...@g...com>
<9...@g...com>
<kbv5gg$1d3$1@somewhere.invalid>
<a...@g...com>
<kc1qn3$da1$1@news.task.gda.pl>
NNTP-Posting-Host: 5ac53cfe.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: somewhere.invalid 1357385863 18608 90.197.60.254 (5 Jan 2013 11:37:43 GMT)
X-Complaints-To: abuse-news.(at).chmurka.net
NNTP-Posting-Date: Sat, 5 Jan 2013 11:37:43 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To: <kc1qn3$da1$1@news.task.gda.pl>
X-Authenticated-User: ajarzabek
Xref: news-archive.icm.edu.pl pl.comp.programming:201558
[ ukryj nagłówki ]On 02/01/2013 17:28, AK wrote:
> Użytkownik "Wojciech Muła" <w...@g...com> napisał :
>
>> Agile skupia się na tworzeniu działającego produktu, nie dostarcza
>> żadnych narzędzi dla zespołu w celu tworzenia utrzymywalnego programu
> ^^^^^^^^^^^^^^^
>
> To (i calosc posta Wojtka) to dla mnie sedno tzw. Agile.
Jest dokładnie przeciwnie - to Agile wprowadziło skuteczne narzędzia do
tworzenia utrzymywalnego programu. Przedtem było tak, że się tworzyło
program, a potem w ramach utrzymywania jego utrzymywalność się stopniowo
degradowała, aż dochodziło do tego, że taniej było zrobić rewrite niż
zmieniać istniejący kod.
Właśnie zakończyłem udział w projekcie, który był wdrażany przez dwa
lata zanim do niego przystąpiłem. Przez to, że projekt nie korzystał z
narzędzi Agile wyszło na to, że efektem dwóch lat pracy był
niedziałający nieutrzymywalny kod i ileś tam sron bezużytecznej
dokumentacji, plus bardzo wkurzony klient. Dopiero zastosowanie narzędzi
typowych dla Agile (jeden z wdrożeniowców wciągniętych do projektu ma w
tym spore doświadczenie) pozwoliło na to, że stopniowo zaczęliśmy
opanowywać sytuację.
Sam produkt, który był w tym projekcie wdrażany, jest również tworzony
metodami tradycyjnymi (nie Agile). Rezultatem jest nie tylko niska
niezawodnośc produktu (dużo bugów), ale też właśnie kod trudny w
utrzymaniu (niektóre moduły mają po kilkanaście tysięcy linii kodu,
niektóre funkcje po kilka tysięcy). Jedno z drugim oczywiście się ściśle
wiąże - niska czytelność kodu powoduje, że łatwo wprowadzić bugi, niski
test coverage powoduje bugi z jednej strony i ryzykowność refaktoryzacji
z drugiej.
Brak "agility" był również bezpośrednią przyczyną zawalenia się bardzzo
lukratywnego kontraktu na dostarczenie klientowi specjalnej wersji owego
produktu: klient widział żonglerkę wymaganiami, a nie widział
działającego oprogramowania, więc pomimo wpakowania w projekt milionów
dolarów wolał zrezygnować i zrobić sobie wszystko samemu, niż wpakować
kolejne miliony w coś co, jak uznał, nie ma wystarczająco dużej szansy
na satysfakcjonujące rezultaty.
Dla porównania miałem okazję zaobserwować zespół tworzący podobny
produkt w tej samej firmie (dlaczego ta samam firma produkuje dwa bardzo
podobne produkty to osobny temat) i ten zespół stosuje Scrum i praktyki
inżynieryjne Agile. Nie tylko mają przez to mniejsze problemy z
niezawodnością, ale też właśnie ich kod jest znacznie łatwiejszy w
utrzymaniu.
Na koniec jeszcze napiszę o małym projekciku, który przejąłem po innym
programiście. Teoretycznie utrzymywalność nie była taka istotna, bo z
założenia był to "throwaway code" do wykonania raz. Programista, od
którego przejąłem projekt pisał go od mniej-więcej roku i nie potrafił
doprowadzić go do postaci nadającej się do odpalenia w produkcji. Z
różnych względów pełny proces Agile nie miał zastosowania, przede
wszystkim dlatego, że był tylko jedcen programista, ale też np. uznałem,
że ze względu na specyfikę kodu pełny TDD byłby nieco overkill, ale
jednak udało mi się opanować i zakończyć projekt przed terminem dzięki
zastosowaniu narzędzi Agile, głównie związanych z komunikacją z
klientami, ale w ramach utrzymywalności kodu (która okazała się nie taka
jednak znowu nieistotna) bardzo przydatnym narzędziem był na przykład
"merciless refactoring" (co może się wydawać ryzykowne bez TDD, ale
dzięki specyfice kodu i narzędziom do automatycznej refaktoryzacji byłem
w stanie utrzymać ryzyko na akceptowalnym poziomie).
Następne wpisy z tego wątku
- 05.01.13 12:46 Edek Pienkowski
- 05.01.13 13:19 Andrzej Jarzabek
- 05.01.13 18:55 Edek Pienkowski
- 05.01.13 20:06 Marek Borowski
- 05.01.13 22:54 Edek Pienkowski
- 06.01.13 17:25 Andrzej Jarzabek
- 06.01.13 18:03 Edek Pienkowski
- 07.01.13 01:09 Andrzej Jarzabek
- 10.01.13 10:13 firr kenobi
- 15.01.13 23:28 Gotfryd Smolik news
- 16.01.13 08:51 Andrzej Jarzabek
- 16.01.13 09:01 Miroslaw Kwasniak
- 17.01.13 18:12 darekm
- 18.01.13 00:06 Andrzej Jarzabek
- 18.01.13 11:23 darekm
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- 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??
Najnowsze wątki
- 2025-02-19 Lista afer
- 2025-02-19 Lista afer
- 2025-02-19 Lista afer PIS
- 2025-02-19 Ogrodzenie dla krów szkockich "Highland"
- 2025-02-19 Gdańsk => System Architect (background deweloperski w Java) <=
- 2025-02-19 Gdańsk => Solution Architect (Java background) <=
- 2025-02-19 Białystok => Data Engineer (Tech Leader) <=
- 2025-02-19 Kraków => Ekspert IT (obszar systemów sieciowych) <=
- 2025-02-19 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-02-19 Rzeszów => International Freight Forwarder <=
- 2025-02-19 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-02-19 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-02-19 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-19 Nigdy
- 2025-02-19 Katowice => Key Account Manager (ERP) <=