tag:blogger.com,1999:blog-5197374494377847819.post5752330161258230708..comments2024-03-22T22:13:46.650+01:00Comments on Holistycznie o inżynierii oprogramowania: Koszt wykorzystania wzorców projektowychSławek Sobótkahttp://www.blogger.com/profile/15082577671795313109noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-5197374494377847819.post-35656823607622061932010-03-28T19:30:16.543+02:002010-03-28T19:30:16.543+02:00Dzięki:)
Cieszę się, że trafiłem w gusta.
Jeżeli ...Dzięki:)<br />Cieszę się, że trafiłem w gusta.<br /><br />Jeżeli będziecie mielic zas to w wolnej chwili napiszcze jakiś feedback odnośnie prezentacji - np. co dodać, do wyrzucić, co zmienić.Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-47765722951424136632010-03-28T19:17:11.542+02:002010-03-28T19:17:11.542+02:00Po 4Developers mam już pełen obraz :) Świetna prez...Po 4Developers mam już pełen obraz :) Świetna prezentacja pod każdym względem. Całej naszej ekipie się podobała. Gratulacje :)Mateusz Mrozewskihttps://www.blogger.com/profile/13827422395771294842noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-8749719733673779392010-03-25T01:06:48.713+01:002010-03-25T01:06:48.713+01:00@Paweł - dzięki za polecenie tekstu... Zauważono w...@Paweł - dzięki za polecenie tekstu... Zauważono w nim ciekawą patologię - nauka przez "sink or swim". Jeżeli ktoś się nie utopił to pewnie będzie powtarzał zachowanie, które jakoś się sprawdziło.<br /><br />Co do "Refaktoryzacja do wzorców projektowych" to nie mówiłem o tej książce. Jest to jedna z tych pozycji, które trzeba bardzo wnikliwie studiować, więc nie jest to niestety dobry materiał na godzinną prezentację. <br /><br />Dodam jeszcze, że imho styl refaktoryzacji przedstawiony przez autory jest miejscami zbyt zachowawczy, ja robiłbym od razu bardziej drastyczne kroki. Ale to oczywiście zależy od tego czy mamy ten komfort poruszania się w znanym terenie czy musimy poruszać się po omacku jak słoń w składzie porcelany;)Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-12761487347261827352010-03-24T15:41:42.841+01:002010-03-24T15:41:42.841+01:00@Sławek: Natknalem sie ostatnio na bardzo ciekawy ...@Sławek: Natknalem sie ostatnio na bardzo ciekawy tekst - Rozdział 12 (Apprentice Developers) książki McBreen'a "Software Craftsmanship", którego pierwsza sekcja nosi tytuł "We Must Reverse the Decline in the Quality of Developer Training". Polecam lekturę - stosunkowo duży fragment można znaleźć na Google Books.<br /><br />A i jeszcze, nie wiem czy mówiłeś na prezentacji o książce Kerievskiego "Refaktoryzacja do wzorców projektowych". Tu nie wspomniałeś, a może warto - również ją polecam każdemu :DPaweł Badeńskihttps://www.blogger.com/profile/02544441831377477201noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-39911446767820976302010-03-24T12:35:44.722+01:002010-03-24T12:35:44.722+01:00Właśnie o to mi chodziło:)
Wzorce mają jeszcze tą...Właśnie o to mi chodziło:)<br /><br />Wzorce mają jeszcze tą zaletę, że dzięki nim nie musimy totalnie na ślepo próbować i eksperymentować na niskim poziomie. Już nie musimy szukać samej formy.<br /><br />Ktoś już to zrobił i daje nam rozwiązania (klocki) wyższego rzędu. Nasz wysiłek to polega "tylko" na znalezieniu dla nich sensownych zastosowań w swoich problemach.Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-14845764070238086982010-03-24T12:19:04.992+01:002010-03-24T12:19:04.992+01:00@Sławek: oczywiście nie da się od razu dobrze wpro...@Sławek: oczywiście nie da się od razu dobrze wprowadzać wzorców (przynajmniej niektórych) jeśli się nie ma doświadczenia. Trzeba pisać, analizować, refaktorować, próbować doprowadzić kod do perfekcji. Jeśli coś nam się nie podoba, to zastanawiamy się jak to poprawić. Jak się nie da, to tego nie robimy tego na siłę. Jak nie wiemy - to pytamy :) Materiałów jest dużo, a najważniejsze są chęci - a po drodze trochę kodu pewnie i tak popsujemy - to też forma nauki :)Mateusz Mrozewskihttps://www.blogger.com/profile/13827422395771294842noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-45736265726648502832010-03-24T11:52:58.715+01:002010-03-24T11:52:58.715+01:00@ToJaJarek - osobiście też tak myślę, ale biorąc p...@ToJaJarek - osobiście też tak myślę, ale biorąc pod uwagę różne "skrypty kognitywne" jakimi mogą kierować się ludzie nie upierałbym się, że tak musi być w każdym przypadku.<br />http://www.racjonalista.pl/kk.php/s,4588Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-753740071277097902010-03-24T11:50:06.208+01:002010-03-24T11:50:06.208+01:00Panowie, dziękuję za dyskusję i cieszę się, że tem...Panowie, dziękuję za dyskusję i cieszę się, że temat znajduje zainteresowanie. Dla mnie osobiście jest on dosyć istotny.<br /><br />@marcin - zastanawiałem się nad tym od jakiegoś czasu, ale nieco od innej strony - bardziej systemowo (ukłon w stronę Pawła B.) biorąc pod uwagę "naturę" developerów. Ludzie mają różne "skrypty kognitywne - jedni preferują najpierw ogólnie połapać się o co chodzi zanim zaczną cokolwiek robić, inni preferują jakkolwiek poeksperymentować. Oczywiście pierwsze podejście nie zadziała gdy kompletnie nie da się ruszyć zanim nie zaczniemy błądzić. Z tym jest różnie – cechy osobnicze, nie da się uogólnić.<br /><br />Pytanie tylko co jeżeli refaktoryzacja dotknie poziomu, który jest mocno testowany – testy do wywalenia.<br /><br />@Mateusz – odnośnie długoterminowych inwestycji to wszyscy raczej się zgadzaliśmy. Pytania były odnośnie np projektów start upów w kontekście czy warto jeżeli nie wiadomo co będzie dalej działo się projektem. Stąd mój tekst o lekkości i taniości niektórych technik (wzorców) bazowych.<br /><br />Poruszyłeś też ciekawą kwestię "wydaje nam się" – z czasem właśnie intuicja działa z wysokim prawdopodobieństwem. Zastanawiałem się nad kwestią czy stosować czy nie i moje przemyślenia są takie: niestety aby biegle czymś władać to trzeba nieustannie ćwiczyć – samo przejrzenie katalogu rozwiązań nie daje dobrych rezultatów. Przez jakiś czas niestety trzeba pobrudzić trochę kodu niepotrzebnymi wzorcami aby nabrać biegłości w korzystaniu z nich i intuicji kiedy w ogóle mają sens. Jak inaczej można by to zrobić?<br /><br />@Paweł – i tu właśnie dochodzimy do problemu profesji i monitoringu, o którym piszesz. Podczas prezentacji poruszył ten temat Wojtek R. ale jakoś nie został on pociągnięty dalej. Chirurg uczy się na zwłokach, architekt mostów na symulatorach fizyki. Póki co my musimy eksperymentować i brudzić kod na czym? Jak rozwiązać ten problem? Jaka jest tutaj rola systemu edukacji?<br /><br />@Irek – zgadza się. Tylko jak nabrać taką intuicję? Właśnie metodą prób i błędów – tylko gdzie ten plac zabaw? Ale to nie wystarczy. Po każdej próbie i po każdym błędzie musi nastąpić refleksja nad przyczynami, kontekstem i działającymi „siłami”.Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-32564575786947908762010-03-24T11:44:39.570+01:002010-03-24T11:44:39.570+01:00Ja myślę, że kluczowym problemem jest właśnie to: ...Ja myślę, że kluczowym problemem jest właśnie to: "Jeśli musisz najpierw napisać masę kodu bo nie bardzo wiesz o co kaman w danym problemie... " pisanie kodu bez projektu samo w sobie jest kosztem bez sensu, wzorce projektowe wymagają pomysłu na całość a jak tego pomysłu nie ma (jeszcze) - brak analizy i projektu??? - no to mamy klops.ToJaJarekhttps://www.blogger.com/profile/07492446399792666065noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-37673549156584071782010-03-24T10:09:22.241+01:002010-03-24T10:09:22.241+01:00Moze troche offtopowo, ale co tam...
Podobnie jak ...Moze troche offtopowo, ale co tam...<br />Podobnie jak Mateusz prezentacji ani nie widzialem ani nie slyszalem (ale jesli macie nagrania bardzo chcialbym obejrzec). Natomiast ten zestaw pytan slyszalem juz w permutacji z chyba kazda dostepna metoda. Ciesze sie, ze pojawia sie w kontekscie Software Craftsmanship, bo coraz bardziej zaczynam byc zwolennikiem pogladu ze wszystkie te problemy wynikaja wlasnie z braku mentoringu w naszym fachu (a czy w ogole mamy fach to pytanie do wujka Boba ;)). Nie mowie, zeby na nie nie odpowiadac, ale chyba warto rozwazyc, ze problem jest systemowy. Chcialbys robic dobrze, ale nie wiesz jak - a ze juz wielokrotnie probowales sam i bylo wolno, wiec masz podobne obawy do kazdej nowej praktyki/metody. Tak sie troche motamy wydaje mi sie.Paweł Badeńskihttps://www.blogger.com/profile/02544441831377477201noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-20934141761883564192010-03-24T09:59:13.406+01:002010-03-24T09:59:13.406+01:00Stojąc przed pokusą zastosowania wzorca należy sie...Stojąc przed pokusą zastosowania wzorca należy siebie spytać: czy jak dziś nie zastosuję tu tego wzorca to czy w przyszłości będę mógł go łatwo wprowadzić w razie potrzeby?<br />Jeśli odpowiedź jest "tak, łatwo można będzie to wprowadzić" - nie stosuj wzorców, stosuj jedynie KISS (keep it simple stupid), YAGNI (you aren't going need it). Wymagania się zmieniają i jak dzisiaj ci się wydaje ten wzorzec tu odpowiedni jutro może być inaczej - zbędna praca.<br />Jeśli odpowiedź jest "ciężko będzie to zmienić jak dziś nie zastosuję tu wzorca" - zastosuj wzorzec. Dotyczy to zwłaszcza elementów architektonicznych: jak dziś mam trzy warstwy to ciężko będzie wprowadzić dodatkową czwartą za miesiąc. Jak jakaś superważna klasa używana przez wiele innych klas będzie się za miesiąc musiała zmienić, koszt takiej zmiany też może być kosztowny.Irek Matysiewiczhttps://www.blogger.com/profile/02786161827081997066noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-33453996188922650972010-03-24T08:57:19.194+01:002010-03-24T08:57:19.194+01:00Prezentacji nie widziałem i dyskusji nie słyszałem...Prezentacji nie widziałem i dyskusji nie słyszałem, ale zastanawiam się, czy koszta były wspominane w kontekście wytwarzania oprogramowania czy też całego cyklu życia?<br /><br />Wzorce to coś, co wymaga doświadczenia i wprawy, aby można było je poprawnie ... no właśnie, stosować? Czy z góry powinniśmy wprowadzić strategie, jeśli wydaje nam się, że może być potrzebna (podkreślam: <b>wydaje nam się</b>). Inna sprawa, jeśli mamy dużą wiedzę i doświadczenie i po prostu wiemy, że tego potrzebujemy.<br /><br />W przeciwnym wypadku potrzebujemy czegoś, co zweryfikuje nasz design. Tutaj świetnie sprawdza się TDD. Możemy zweryfikować nasz design, bezpiecznie refaktorować i przy okazji testować. Czy to jest dodatkowy koszt? W idealnym świecie jest to standard wytwarzania a nie dodatkowy koszt.<br /><br />A jeśli nie jest to standard, to czy z takiej inwestycji może być jakiś zwrot? Tak, w utrzymaniu. Czystszy, uporządkowany kod, łatwiejszy do zrozumienia to łatwiejsze utrzymanie - a zatem niższy koszt (albo co najmniej zbalansowany) w kontekście całego cyklu życia oprogramowania. A jak łatwiejsze utrzymanie to i łatwiejsze rozwijanie.<br /><br />A programowanie to nie tylko klepanie kodu "na Jana" (nie znałem tego określenia, dobrze użyłem? :-) a również budowanie własnego warsztatu: stosowanie narzędzi, nabywanie umiejętności, wiedzy, doświadczenia.<br /><br />Jeśli ktoś tego nie chce robić, to trubadur to niezbyt dobra alternatywa :) Bo śpiew i grę też trzeba ćwiczyć :)Mateusz Mrozewskihttps://www.blogger.com/profile/13827422395771294842noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-42648400474974614542010-03-24T07:35:06.004+01:002010-03-24T07:35:06.004+01:00Ależ koszt wprowadzania wzorców faktycznie występu...Ależ koszt wprowadzania wzorców faktycznie występuje. Jeśli podążysz trzecią drogą - wskazaną przez kogoś z tyłu sali na wykładzie - i najpierw nawalisz (metodą na Jana) górę kodu a potem zaczniesz w niej grzebać żeby następnego dnia w ogóle się w tym połapać, to wzorce faktycznie kosztują - a i jeszcze przy okazji refactoringu można coś schrzanić.<br /><br />Jeśli musisz najpierw napisać masę kodu bo nie bardzo wiesz o co kaman w danym problemie to czemu nie zrobić tego test first? Dzięki temu, gdy dochodzisz do momentu w którym musisz zrefactorować właśnie zaimplementowany kawałek systemu masz przynajmniej testy, które mogą pokazać ci ,że źle się zaczyna dziać. Ok, dochodzi koszt napisania testów, ale dzięki nim refactoring kupy g***a do wzorców jest bezpieczniejszy i w rezultacie szybszy (pomijając już aspekt dodatkowej specyfikacji wymagań w postaci testów, bo to nie zawsze wychodzi).marcinhttps://www.blogger.com/profile/15853778723838360578noreply@blogger.com