eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › ilu jest programistow na swiecie?
Ilość wypowiedzi w tym wątku: 272

  • 231. Data: 2011-05-22 12:39:00
    Temat: Re: ilu jest programistow na swiecie?
    Od: Andrzej Jarzabek <a...@g...com>

    On 22/05/2011 12:47, Maciej Sobczak wrote:
    > On 21 Maj, 15:03, Andrzej Jarzabek<a...@g...com> wrote:
    >
    >>> Nie zapobiegam im ani testami z automata ani ręcznymi.
    >>
    >> Znaczy, nie robisz żadnych testów,
    >
    > Czytaj cały post zanim odpiszesz.

    Skoro więce robisz testy, to chyba jednak czemuś one zapobiegają. Bo
    chyba nie powiesz, że robisz je, bo lubisz poczucie beezpieczeństwa?

    > Testy oczywiście są. Ale robię z nich fetyszu i nie stawiam ich w
    > centrum procesu.

    Ale ustawiasz chochoła, bo w agile/XP testowanie obejmuje niewielką
    część praktyk. Akurat pisałem o tym, bo padła teza, że XP z konieczności
    będzie wypuszczać źle przetestowane oprogramowanie, bo nie da się
    testować w takim cyklu.

    >> Nie tylko unit testy można odpalać z automata. Można automatycznie
    >> testować całe systemy, nawet GUI.
    >
    > Nie, nie można.
    > Tzn. nie twierdzę, że nie ma na świecie rozwiązań, które to obiecują
    > (więc nie pokazuj mi linków do tych rozwiązań :-p ).
    > Twierdzę tylko, że nie można.

    Można. Wiem, bo akurat moja praca ma z tym związek i blisko współpracuję
    z ludźmi, którzy to właśnie robią.

    >>> Wybij sobie z głowy taki pomysł, że jakakolwiek (pseudo)metodologia
    >>> pozwoli niedoświadczonym ludziom robić dobre projekty.
    >>
    >> Oczywiście! Stąd moje zastrzeżenie do waterfall, że te wszystkie
    >> metodologie analizowania i projektowania to i tak machanie rękami wokół
    >> tego, że szacunki opierają się na doświadczeniu osoby z odpowiednim
    >> doświadczeniem.
    >
    > Ostatecznie tak to wygląda.

    No i całe agile właśnie na tym polega, żeby przestać machać rękami,
    oprzeć się na doświadczeniu i zabrać się do roboty.

    >> Zgoda! I to nie jest tak, że w agile nie ma planowania. Jest planowanie,
    >> i podstawą planowania jest to, że się zbiera osoby z odpowiednim
    >> doświadczeniem w jednym pomieszczeniu.
    >
    > Właśnie nie jestem o tym przekonany. Mam wrażenie, że agile stał się
    > wyjątkowo atrakcyjny właśnie dla młodego pokolenia, przez swoją mniej
    > lub bardziej jawnie wyrażoną obietnicę, że programowanie może być
    > znowu "cool". Każdy chce, żeby było cool, więc im bardziej coś wygląda
    > cool, tym lepiej.

    Prawdę mówiąc uważam, że jest to kompletnie nieistotne z punktu widzenia
    tego, czy te praktyki są dobre, czy nie. Oczywiście z punktu widzenia
    klienta może to tak wyglądać, że jak ktoś mówi, że praktykuje
    agile/XP/Scrum, to trzeba uważać i się dokładnie przyjrzeć temu, co tam
    się właściwie praktykuje. Pewną zaletą agile jest założenie kompletnej
    widoczności procesu dla stakeholderów. Tak więc jeśli nie ma tej
    widoczności, to od razu masz sygnał, że coś z tym agile jest nie tak.

    W przypadku projektów zlecanych zewnętrznie, ta widoczność powinna miec
    postać "nasz człowiek siedzi z waszym zespołem i uczestniczy w zebraniach".

    > I tak powstają niezliczone odmiany "procesów" agile
    > - szybciej, niż można je uwiarygodnić przez faktyczne doświadczenie.

    Shore&Warden na przykład powstało przez kumulację faktycznego
    doświadczenia w wielu implementacjach XP.


  • 232. Data: 2011-05-22 14:31:16
    Temat: Re: ilu jest programistow na swiecie?
    Od: Andrzej Jarzabek <a...@g...com>

    On 22/05/2011 12:47, Maciej Sobczak wrote:
    > On 21 Maj, 15:03, Andrzej Jarzabek<a...@g...com> wrote:
    >

    > Problem w tym, że jeżeli już masz cały pokój ludzi z dużym
    > doświadczeniem, to właściwie nie ma znaczenia, jaki to będzie proces.
    > I tak to zrobią dobrze i to jest właśnie ten nieuchwytny czynnik
    > ludzki.

    Nie zgodzę się, proces ma też znaczenie. No i przede wszystkim od
    procesu może zależeć, czy ci ludzie w ogóle znajdą się w jednym pokoju.

    >> Ach, widzisz, tylko tak się składa, że istnieje taka szkoła
    >> projektowania jak "simple design"/"incremental design", która mówi, że
    > [...]
    >> Robienie w tym momencie większego projektu uważam za błąd.
    >
    > A kto mówi, że on ma być większy? On ma być wystarczający. W
    > szczególności brak projektu nie jest wystarczający.

    W szczególności może być tak, że wystarczyć może zastanowienie się przez
    chwilę przed rozpoczęciem pisania. Czy koncepcja w głowie programisty
    powstała przez zastanawianie się przez 15 minut nazwiesz "projektem" czy
    nie,to kwestia semantyki. Na pewno taki "projekt" nie jest sprzeczny z
    agile.

    > Dla przykładu, mój ostatni projekt na papierze nie zawierał formalnych
    > diagramów. Były ze dwa (!) obrazki w stylu prezentacji power pointa,
    > ale ani kawałka UMLa ani niczego podobnego. Był za to *dokładniejszy*
    > opis protokołu oraz interakcji w skali makro, była też bardziej
    > dokładna analiza konsekwencji różnych fakapów, bo projekt
    > dotyczył systemu krytycznego. Całość była napisana tak, żeby inny
    > senior, niezwiązany z projektem ale poproszony o ocenę, powiedział, że
    > się przekonał.

    Ale też nikt nie mówi, że nie należy takich projektów robić na
    "papierze" (czy to by oznaczało dokument w wordzie z diagramem w visio
    czy rysunek na flip chart'ie.

    > Ja wcale nie sugeruję tutaj żadnego RUPa czy czegoś w tym stylu.

    No popatrz, a są tacy, którzy nawet proponują pełnego waterfalla.

    > Twierdzę natomiast, że wystartowanie od razu z wersją demo jest słabe
    > i zwiększa ryzyko, że na wersji demo się skończy. Twierdzę też, że TDD
    > jest słabe, bo rzeczy naprawdę ważnych nie potrafi uchwycić.

    1. TDD to nie tylko unit testy.
    2. Automatyczne (i inne) testy potrafią wychwicić naprawdę ważne rzeczy.
    Nie wszystkie ważne rzeczy, ale przynajmniej niektóre ważne rzeczy.
    Jeśli tobie się nie zdarzyło, to możesz mi uwierzyc na słowo.
    3. Agile/XP to nie tylko TDD.
    4. Czasem lepiej skończyć na wersji demo niż po kilku miesiącach
    usłyszeć, że to nie jest to, o co chodziło.


  • 233. Data: 2011-05-22 15:21:44
    Temat: Re: ilu jest programistow na swiecie?
    Od: Radoslaw Jocz <r...@p...onet.pl>

    >> Zbyt wielu.
    >>
    >> KK
    >
    > Zbyt wielu - NIEKOMPETENTNYCH
    >
    > Kompetentnych - zbyt malo.
    >
    > Dlatego mimo pol tuzina owtartch pozycji i chyba z 50 interviews
    > pozycje sa ciagle nieobsadzone
    >
    > A.L.

    Chyba cos tu nie gra.
    Programista to atraktyjna praca ale
    byc moze czesto niewystarczajaco atraktyjna
    dla tych co sie do niej nadaja?

    > My nei potzrebujemy malp od testow. Potzrebujemy specjalisotw. jak by
    > nie bylo w Ameryce glupio, to jescze nei syszalem zeby kogos
    > przyjmowali na podstawie testow. Moze w zlych miejscach bylem.

    > facio ma umiec rozwiazywac problemy a nie miec wkuta skladnie C++ czy
    > czegos tam

    Mysle ze skoro firma ma problemy ze znalezieniem
    specjalistow to powinna zainwestowac w ludzi
    ktorzy sie do tego potencjalnie nadaja.
    Zainwestowac czyli pozwolic im na rozwoj zawodowy
    w takim stopniu w jakm maja wyc wyspecjalozowani.
    Przeciez to takie proste.
    Jednak firm praktycznie nie chce inwestowac w ludzi
    mimo ze mialo by to sens.

    Jednak tak to juz bywa ze zbyt wiele osob na stanowiskach managerskich
    ma znacznie lepsze samopoczucie aby twierdzic ze wszyscy pozostali to
    idioci niz ruszyc glowa od czasu do czasu.
    Glupota a moze egoizm.


  • 234. Data: 2011-05-22 22:19:53
    Temat: Re: ilu jest programistow na swiecie?
    Od: Maciej Sobczak <s...@g...com>

    On 22 Maj, 14:39, Andrzej Jarzabek <a...@g...com> wrote:

    > Skoro więce robisz testy, to chyba jednak czemuś one zapobiegają. Bo
    > chyba nie powiesz, że robisz je, bo lubisz poczucie beezpieczeństwa?

    Robię je tam, gdzie (jak sądzę) ich użyteczność jest większa, niż ich
    koszt. To oznacza, że czasami ich nie robię a w szczególności czasami
    od nich nie zaczynam. Czyli traktuję testy tak, jak młotek i każde
    inne *narzędzie*, któro czasem jest odpowiednie a czasem nie.
    I dlatego nie mam zaufania do żadnej metody, która stawia testowanie
    (albo jakiekolwiek inne narzędzie) w centrum uwagi albo je wręcz
    wymusza.

    Dwa skrajne przykłady z działki, którą zajmowałem się ostatnio
    najwięcej (systemy rozproszone):

    1. Jak piszę serializator, to używam TDD, bo serializator jest na to
    idealnym miejscem. Zaczynam od protokołu i danych testowych, od
    najprostszych do bardziej wyuzdanych i najpierw piszę test a potem
    odpowiedni kod serializatora, z drobnymi iteracjami. Np. gdybym miał
    pisać funkcję do kowersji ASCII->Morse, to też bym tak zrobił (osobne
    iteracje na każdą literkę), bo to ma wtedy sens.

    2. Jak mam wymaganie, że w układzie publish-subscribe jitter u każdego
    odbiorcy ma być niezależny od awarii (zawieszenia, zgon, itp.) innych
    odbiorców, to *nie* używam TDD ani w ogóle nie robię na to żadnego
    testu. Tego typu wymagania można sensownie spełnić nie przez jakąś tam
    refaktoryzację, tylko przez odpowiednią *konstrukcję*, czyli to ma
    najpierw zadziałać na papierze. Automatycznego testu nie ma sensu
    robić, bo jest to zbyt kosztowne (albo w praktyce w ogóle niemożliwe)
    w stosunku do efektu. Takie rzeczy testuję przy użyciu paczki czipsów,
    czyli robię testowy system, który wizualizuje mi się na ekranie, kładę
    nogi na stole i przy ostatnim czipsie wiem, czy działa poprawnie.
    Prawie zawsze działa, bo prawie zawsze mam dobrą konstrukcję, która
    wynika z dobrego projektu na papierze.
    Inne wymaganie, któro traktuję podobnie, to np. "ruch komunikatów ma
    być płynny". Itd.
    Jak ktoś chce pisać na to testy (albo nawet TDD), to będę za niego
    trzymał kciuki.
    Jeśli jakaś metodologia zmuszałaby mnie do robienia automatycznych
    testów do tego typu wymagań, to ta metodologia jest do dupy. A
    ponieważ właśnie takie wymagania są najciekawsze i z takimi mam
    najwięcej do czynienia, to agile/xp/łotewer byłby dla mnie jedynie
    obciążeniem. Oops - a podobno miał być wybawieniem od poprzednich
    obciążających metodologii. There is no silver bullet.

    > >> Nie tylko unit testy można odpalać z automata. Można automatycznie
    > >> testować całe systemy, nawet GUI.
    >
    > > Nie, nie można.
    >
    > Można. Wiem, bo akurat moja praca ma z tym związek i blisko współpracuję
    > z ludźmi, którzy to właśnie robią.

    Etam. Dla mnie wymagania na GUI to np.:

    1. w aplikacji do obsługi kont emerytalnych GUI ma być *przyjazne dla
    starszych osób*

    2. w aplikacji typu sklep GUI ma *umacniać postrzeganie marki i
    sprzyjać tzw. konwersji*, czyli kierować odwiedzającego w stronę
    zakupów

    Jeżeli pod pojęciem testowania GUI rozumiesz sprawdzenie, czy
    naciśnięcie przycisku wywołuje podpiętą do niego funkcję, to mówimy o
    różnych rzeczach. Ja mówię o tym, że nie da się automatycznie testować
    GUI; przypuszczam, że być może da się testować *display*, ale mały z
    tego pożytek.

    > W przypadku projektów zlecanych zewnętrznie, ta widoczność powinna miec
    > postać "nasz człowiek siedzi z waszym zespołem i uczestniczy w zebraniach".

    "Nasz człowiek nie ma czasu i w ogóle to wyjeżdża/awansował/łotewer.
    Przyślijcie jak skończycie."

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 235. Data: 2011-05-23 06:01:09
    Temat: Re: ilu jest programistow na swiecie?
    Od: Andrzej Jarzabek <a...@g...com>

    On 22/05/2011 23:19, Maciej Sobczak wrote:
    > On 22 Maj, 14:39, Andrzej Jarzabek<a...@g...com> wrote:
    >
    >> Skoro więce robisz testy, to chyba jednak czemuś one zapobiegają. Bo
    >> chyba nie powiesz, że robisz je, bo lubisz poczucie beezpieczeństwa?
    >
    > Robię je tam, gdzie (jak sądzę) ich użyteczność jest większa, niż ich
    > koszt. To oznacza, że czasami ich nie robię a w szczególności czasami
    > od nich nie zaczynam. Czyli traktuję testy tak, jak młotek i każde
    > inne *narzędzie*, któro czasem jest odpowiednie a czasem nie.
    > I dlatego nie mam zaufania do żadnej metody, która stawia testowanie
    > (albo jakiekolwiek inne narzędzie) w centrum uwagi albo je wręcz
    > wymusza.

    A ja się jeszcze nigdy nie spotkałem przy żadnym większym produkcie
    kompercyjnym żeby nie było procesu wymuszającego testy.

    > najpierw zadziałać na papierze. Automatycznego testu nie ma sensu
    > robić, bo jest to zbyt kosztowne (albo w praktyce w ogóle niemożliwe)
    > w stosunku do efektu. Takie rzeczy testuję przy użyciu paczki czipsów,
    > czyli robię testowy system, który wizualizuje mi się na ekranie, kładę
    > nogi na stole i przy ostatnim czipsie wiem, czy działa poprawnie.

    A możesz wyjaśnić, dlaczego tych danych, które wizualizujesz nie da się
    przetestować automatycznie? To, o czym pisałeś nie da się powiązać z
    jakąś mierzalną np. statystyczną właściwością danych?

    > Jeśli jakaś metodologia zmuszałaby mnie do robienia automatycznych
    > testów do tego typu wymagań, to ta metodologia jest do dupy. A
    > ponieważ właśnie takie wymagania są najciekawsze i z takimi mam
    > najwięcej do czynienia, to agile/xp/łotewer byłby dla mnie jedynie
    > obciążeniem. Oops - a podobno miał być wybawieniem od poprzednich
    > obciążających metodologii. There is no silver bullet.

    Być może nie jest dostosowana do tego, co robisz. XP na przykład jest
    pomyślane pod kątem programu, który ewoluuje, czy to dlatego, że
    wymagania zmieniają się w trakcie developmentu, czy dlatego, że robi się
    kolejne wersje z nową funkcjonalnością. Dodatkowo obejmuje programy
    tworzone w wieloosobowych zespołach. TDD jest m. in. po to, żeby dlasze
    modyfikacjee nie spowodowały regresji względem tych wymagań.

    >> Można. Wiem, bo akurat moja praca ma z tym związek i blisko współpracuję
    >> z ludźmi, którzy to właśnie robią.
    >
    > Etam. Dla mnie wymagania na GUI to np.:
    >
    > 1. w aplikacji do obsługi kont emerytalnych GUI ma być *przyjazne dla
    > starszych osób*
    [...]

    Jeśli GUI robi coś innego, niż założyłeeś, że ma robić, to raczej nie
    będzie przyjazne dla kogokolwiek.

    Od tego, żeby "modelowe" GUI (z którym zgodność GUI rzeczywistego
    sprawdzają testy) było takie jak trzeba to masz inne praktyki.

    > Jeżeli pod pojęciem testowania GUI rozumiesz sprawdzenie, czy
    > naciśnięcie przycisku wywołuje podpiętą do niego funkcję, to mówimy o
    > różnych rzeczach. Ja mówię o tym, że nie da się automatycznie testować
    > GUI; przypuszczam, że być może da się testować *display*, ale mały z
    > tego pożytek.

    Tak, automatyczne testowanie GUI to sprawdzanie czy naciśnięcie
    przycisku powoduje pokazanie się odpowiedniego okienka, czy w gridzie są
    odpowiednie dane itd. Pożytek z tego jest duży.

    "Display" to monitor do komputera. Pewnie je jakoś testują w fabryce,
    może i nawet automatycznie, ale przyznam się, że na tym się kompletnie
    nie znam.

    >> W przypadku projektów zlecanych zewnętrznie, ta widoczność powinna miec
    >> postać "nasz człowiek siedzi z waszym zespołem i uczestniczy w zebraniach".
    >
    > "Nasz człowiek nie ma czasu i w ogóle to wyjeżdża/awansował/łotewer.
    > Przyślijcie jak skończycie."

    Jeśli robisz na zamówienie zewnętrznego klienta, to domyślnie wymagasz
    obecności tego człowieka i wpisujesz to do umowy. Jeśli nie da się
    wpisać do umowy, to nie stosujesz agile (a przynajmniej XP).

    Alternatywa jest taka, że klient ufa, że twoi specjaliści rozpoznają
    jego potrzeby biznesowe i że ty będziesz te potrzeby implementował tak,
    żeby zmaksymalizować wartość programu dla niego, i to zaufanie też ma
    odzwierciedlenie w umowie.


  • 236. Data: 2011-05-23 06:43:22
    Temat: Re: ilu jest programistow na swiecie?
    Od: Michal Kleczek <k...@g...com>

    Maciej Sobczak wrote:

    > On 21 Maj, 15:03, Andrzej Jarzabek <a...@g...com> wrote:
    >> Zgoda! I to nie jest tak, że w agile nie ma planowania. Jest planowanie,
    >> i podstawą planowania jest to, że się zbiera osoby z odpowiednim
    >> doświadczeniem w jednym pomieszczeniu.
    >
    > Właśnie nie jestem o tym przekonany. Mam wrażenie, że agile stał się
    > wyjątkowo atrakcyjny właśnie dla młodego pokolenia, przez swoją mniej
    > lub bardziej jawnie wyrażoną obietnicę, że programowanie może być
    > znowu "cool". Każdy chce, żeby było cool, więc im bardziej coś wygląda
    > cool, tym lepiej. I tak powstają niezliczone odmiany "procesów" agile
    > - szybciej, niż można je uwiarygodnić przez faktyczne doświadczenie.
    >
    > Problem w tym, że jeżeli już masz cały pokój ludzi z dużym
    > doświadczeniem, to właściwie nie ma znaczenia, jaki to będzie proces.
    > I tak to zrobią dobrze

    To, ze doswiadczony i dobry zespol zrobi cos "dobrze" to banal.
    Natomiast to, ze "nie ma znaczenia, jaki to proces" to nieprawda, bo proces
    wynika przeciez z doswiadczenia tych ludzi - to nie jest tak, ze oni maja
    przyczepiona nalepke "dobry" i cokolwiek zrobia to bedzie dobre, ale tak, ze
    robia cos dobrze i stad bierze sie opinia o nich.
    I moja teza jest taka, ze im bardziej doswiadczony
    programista/projektant/inzynier tym bardziej postepuje zgodnie ze schematem:
    1. Zastanow sie co w ogole jest do zrobienia
    2. Jak juz wiesz to zastanow sie jak najefektywniej to zrobic
    3. Jak juz wiesz to zrob
    I nie robi tego, "bo tak trzeba", tylko dlatego ze tak najefektywniej.

    --
    Michal


  • 237. Data: 2011-05-23 06:59:05
    Temat: Re: ilu jest programistow na swiecie?
    Od: Maciej Sobczak <s...@g...com>

    On 23 Maj, 08:43, Michal Kleczek <k...@g...com> wrote:

    > To, ze doswiadczony i dobry zespol zrobi cos "dobrze" to banal.

    > I moja teza jest taka, ze im bardziej doswiadczony
    > programista/projektant/inzynier tym bardziej postepuje zgodnie ze schematem:
    > 1. Zastanow sie co w ogole jest do zrobienia
    > 2. Jak juz wiesz to zastanow sie jak najefektywniej to zrobic
    > 3. Jak juz wiesz to zrob
    > I nie robi tego, "bo tak trzeba", tylko dlatego ze tak najefektywniej.

    Tak, to dobre podsumowanie. Oczywiście rozpędziłem się ze
    stwierdzeniem, że nie ma znaczenia jaki to proces (sam bym sobie
    zaprzeczył, skoro jestem sceptykiem wobec jednego z nich).

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 238. Data: 2011-05-23 07:55:37
    Temat: Re: ilu jest programistow na swiecie?
    Od: Maciej Sobczak <s...@g...com>

    On 23 Maj, 08:01, Andrzej Jarzabek <a...@g...com> wrote:

    > A ja się jeszcze nigdy nie spotkałem przy żadnym większym produkcie
    > kompercyjnym żeby nie było procesu wymuszającego testy.

    Ależ proces może sobie wymuszać. I testy są. Za wyjątkiem miejsc,
    gdzie ich nie ma i wszyscy te miejsca omijają milczeniem, bo ani
    zleceniodawca ani wykonawca nie wie, jak się zabrać za ich testowanie.
    Jak w przykładowym "ruch komunikatów ma być płynny".
    Właśnie dlatego odbiór projektu wcale nie polega na uruchomieniu
    testów "z automata".
    Skoro widziałeś większe produkty komercyjne, to przypomnij sobie, jak
    wyglądał ich odbiór. Dry-runs, "wygrzewanie", mniej lub bardziej
    ochotniczy beta-testerzy, itd. I na koniec jeszcze okres gwarancyjny.
    Te wszystkie rzeczy istnieją i są praktykowane właśnie dlatego, że
    testy z automata to pikuś, nawet jeśli masz 100% pokrycia.

    Nikt nie kupuje samochodu na podstawie kwitu z automatycznej stacji
    diagnostycznej.

    > > Automatycznego testu nie ma sensu
    > > robić, bo jest to zbyt kosztowne (albo w praktyce w ogóle niemożliwe)
    > > w stosunku do efektu. Takie rzeczy testuję przy użyciu paczki czipsów,
    > > czyli robię testowy system, który wizualizuje mi się na ekranie, kładę
    > > nogi na stole i przy ostatnim czipsie wiem, czy działa poprawnie.
    >
    > A możesz wyjaśnić, dlaczego tych danych, które wizualizujesz nie da się
    > przetestować automatycznie? To, o czym pisałeś nie da się powiązać z
    > jakąś mierzalną np. statystyczną właściwością danych?

    Oczywiście, że się da. Z wieloma mierzalnymi miarami, zwłaszcza z ROI
    (Return On Investment). Ta miara mówi, że nie ma sensu tego robić,
    nawet jeśli teoretycznie jest to możliwe. Dlatego nie robię i nie dam
    sobie tego wcisnąć "bo agile tak mówi" (a "Słowacki wielkim poetą
    był").

    Inne przykłady:

    1. Jakiś czas temu jeden z naszych grupowych kolegów (Sebastian Biały?
    bardzo przepraszam, jeśli nie pamiętam dokładnie) pokazywał efekty
    swojego programu do wyostrzania zdjęć. Wyniki są fantastyczne.
    Obstawiam, że nie robił tego przez TDD. Nie interesuje mnie, czy
    jakość tych algorytmów da się powiązać z czymkolwiek mierzalnym, bo
    *to nie ma sensu*. Miarą jakości jest tutaj opad szczęki a nie test "z
    automata".

    2. Algorytm pogłosowy dla muzyków. Albo automatyczny aranżer w stylu
    wczesny japoński jazz alternatywny. TDD? Bez jaj.

    Takich przykładów oczywiście jest więcej. A ponieważ informatyka służy
    do poprawiania nam życia, to takich wymagania są praktycznie w każdym
    systemie, może poza projektami studenckimi typu "napisać AVL".
    Oczywiście te wszystkie systemy w skali mikro składają się z
    drobiazgów, które da się pojedynczo objąć przez TDD, ale to jest skala
    mikro i żabia perspektywa. Dla takich wymagań ostatecznym arbitrem od
    strony konsumenta nie są testy z automata, tylko jazda próbna, albo
    paczka czipsów.

    Są też projekty, które można i warto jak najpełniej formalizować
    (najczęściej ogólnie rozumiane sterowanie procesami fizycznymi) - tam
    nie ma miejsca na elementy psychologiczne w ocenie jakości a działanie
    systemu da się dobrze opisać matematycznie. Ale uwaga, bo to jest
    ciekawe: właśnie w takich projektach waterfall sprawdza się bardzo
    dobrze.

    Paru gości usiłuje pogodzić nurt agile z realiami systemów krytycznych
    (które zwykle dotyczą sterowania), dobre hasło to "Continuous
    Certification":

    http://www.open-do.org/

    ale z tego co wiem, to bardzo opornie im to idzie.

    [...]

    > Tak, automatyczne testowanie GUI to sprawdzanie czy naciśnięcie
    > przycisku powoduje pokazanie się odpowiedniego okienka, czy w gridzie są
    > odpowiednie dane itd. Pożytek z tego jest duży.

    A taki np. mBank nie potrafi nawet zaakceptować wartości, którą sam
    wyświetla (np. jeśli na koncie jest "1 234,56", to nie można tego
    przelać przez copy-paste).
    Może robią automatycznie testy tego "GUI". A może nie robią. Nie ma to
    znaczenia, bo testy tego typu mają złą granulację.

    (to tylko przykład tego, że testy GUI nie działają na odpowiednim
    poziomie)

    > "Display" to monitor do komputera.

    "Display" w tym sensie, w jakim to użyłem, to ogół środków
    technicznych służących do wyświetlenia czegoś. JButton należy do tej
    grupy.

    > Alternatywa jest taka, że klient ufa, że twoi specjaliści rozpoznają
    > jego potrzeby biznesowe i że ty będziesz te potrzeby implementował tak,
    > żeby zmaksymalizować wartość programu dla niego, i to zaufanie też ma
    > odzwierciedlenie w umowie.

    No właśnie. Nie mówmy "robimy agile, więc będzie dobrze". Mówmy
    "potrafimy rozpoznać Twoje potrzeby, więc będzie dobrze". Jedno i
    drugie to prymitywny marketing, ale przynajmniej w tym drugim
    przypadku stajemy się odpowiedzialnymi właścicielami końcowego efektu/
    klęski i nie zwalamy tego na jakiś proces.

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 239. Data: 2011-05-23 08:09:07
    Temat: Re: ilu jest programistow na swiecie?
    Od: Jacek Czerwinski <...@...z.pl>

    W dniu 2011-05-23 00:19, Maciej Sobczak pisze:
    > On 22 Maj, 14:39, Andrzej Jarzabek<a...@g...com> wrote:
    >
    >> Skoro więce robisz testy, to chyba jednak czemuś one zapobiegają. Bo
    >> chyba nie powiesz, że robisz je, bo lubisz poczucie beezpieczeństwa?
    >
    > Robię je tam, gdzie (jak sądzę) ich użyteczność jest większa, niż ich
    > koszt. To oznacza, że czasami ich nie robię a w szczególności czasami
    > od nich nie zaczynam. Czyli traktuję testy tak, jak młotek i każde
    > inne *narzędzie*, któro czasem jest odpowiednie a czasem nie.
    > I dlatego nie mam zaufania do żadnej metody, która stawia testowanie
    > (albo jakiekolwiek inne narzędzie) w centrum uwagi albo je wręcz
    > wymusza.
    >

    Cieszę się że niewątpliwie dobry zajmuje takie stanowisko, uwazam je za
    realistyczne.

    Do serii przykładów wrzucę algorytm z wyceny środków trwałych, zależnie
    od zbieżności dat było niemożliwe odwiedzić wszystkie odnogi algorytmu.
    Kompetentne zaprojektowanie zestawu danych, który by to sprowokował,
    wymagało by geniusza programistyczno-księgowego i kupe jego czasu, a nie
    konserwujące go juniora programisty jakim wtedy byłem.
    Akurat rzecz była w języku w praktyce interpretowanym choć pozornie
    kompilowanym (Clipper)

    Algorytm oczywiście miał poprawki, wydawało się wersję, testowało
    "życie" czyli klient. Szybko wypadł z oferowanych systemów, na mocno
    średni projekt nie dało mu się nabudować jakości.


  • 240. Data: 2011-05-23 10:53:41
    Temat: Re: ilu jest programistow na swiecie?
    Od: Andrzej Jarzabek <a...@g...com>

    On May 23, 8:55 am, Maciej Sobczak <s...@g...com> wrote:
    > On 23 Maj, 08:01, Andrzej Jarzabek <a...@g...com> wrote:
    >
    > Właśnie dlatego odbiór projektu wcale nie polega na uruchomieniu
    > testów "z automata".

    Ale też nikt nie mówi, że tak musi być. "Ready to release" nie
    oznacza, że klient może sobie wziąć dowolne demo iteracji i używać
    jako wersji release. W skrócie chodzi o to, żeby mógł po każdym demo
    powiedzieć "robimy z tego release" i nie usłyszeć "ale ten ficzer w
    demo nie jest dokończony i nie nadaje się do releasowania,
    potrzebujemy jeszcze x tygodni na development." "Ready to release"
    oznacza tyle, że po każdej iteracji, jeśli sobie klient tego zażyczy,
    możesz uruchomić procedurę "release" z twoim demem jako "release
    candidate". Ta procedura, w zależności od potrzeb, może obejmować
    jakiś user acceptance testing i trwać tyle, ile koniecznie potrzeba,
    żeby trwała i nie dłużej.

    Z drugiej strony proces powinien (i różne metodologie agile tego też
    wymagają) minimalizować szanse, że release się nie powiedzie. Do tego
    służą praktyki mające na celu redukcję ilości bugów, ale do tego też
    służy TDD.

    > Skoro widziałeś większe produkty komercyjne, to przypomnij sobie, jak
    > wyglądał ich odbiór. Dry-runs, "wygrzewanie", mniej lub bardziej
    > ochotniczy beta-testerzy, itd. I na koniec jeszcze okres gwarancyjny.
    > Te wszystkie rzeczy istnieją i są praktykowane właśnie dlatego, że
    > testy z automata to pikuś, nawet jeśli masz 100% pokrycia.

    Nie dlatego, że "pikuś", tylko dlatego, że pewnych rzeczy jednak nie
    testują. Co do tego się przecież zgadzamy.

    Co do gwarancji, to jest to jakby temat kompletnie ortogonalny do
    Agile.

    > Nikt nie kupuje samochodu na podstawie kwitu z automatycznej stacji
    > diagnostycznej.

    Stwierdzam, że nie będę dalej dyskutował z metaforami motoryzacyjnymi.

    > > A możesz wyjaśnić, dlaczego tych danych, które wizualizujesz nie da się
    > > przetestować automatycznie? To, o czym pisałeś nie da się powiązać z
    > > jakąś mierzalną np. statystyczną właściwością danych?
    >
    > Oczywiście, że się da. Z wieloma mierzalnymi miarami, zwłaszcza z ROI
    > (Return On Investment). Ta miara mówi, że nie ma sensu tego robić,
    > nawet jeśli teoretycznie jest to możliwe. Dlatego nie robię i nie dam
    > sobie tego wcisnąć "bo agile tak mówi" (a "Słowacki wielkim poetą
    > był").

    Agile mówi mniej więcej tyle, że należy pisać testy, które sprawdzają,
    czy program działa. To, jakie dokładnie te testy mają być i co
    obejmować pozostawia się do decydowania odpowiednim członkom zespołu.

    I ja się w tym zgadzam, że _prawie_ zawsze dla każdego większego
    programu, który będzie robiony dłużej niż 2 miesiące przez więcej niż
    1-2 osoby i ma szanse mieć dodawaną jakąś funkcjonalność, np. w
    postaci kolejnych wersji, _jakieś_ testy automatyczne warto napisać.
    Niezależnie od tego, czy się akurat stosuje agile, czy nie.

    > Inne przykłady:
    >
    > 1. Jakiś czas temu jeden z naszych grupowych kolegów (Sebastian Biały?
    > bardzo przepraszam, jeśli nie pamiętam dokładnie) pokazywał efekty
    > swojego programu do wyostrzania zdjęć. Wyniki są fantastyczne.
    > Obstawiam, że nie robił tego przez TDD. Nie interesuje mnie, czy
    > jakość tych algorytmów da się powiązać z czymkolwiek mierzalnym, bo
    > *to nie ma sensu*. Miarą jakości jest tutaj opad szczęki a nie test "z
    > automata".
    >
    > 2. Algorytm pogłosowy dla muzyków. Albo automatyczny aranżer w stylu
    > wczesny japoński jazz alternatywny. TDD? Bez jaj.

    Ale jeśli taki program ma być stosowany w środowisku produkcyjnym, to
    oprócz powodowania opadu szczęki powinien zwykle posiadać odpowiednią
    stabilność i niezawodność i do tego właśnie służy TDD. Jeśli wiesz
    (dla jakiegoś tam poziomu pewności 'wiesz') że twój program poprawnie
    liczy macierze, że się nie wywala po kliknięciu w buttona, że dla
    wszystkich kombinacji ustawień generuje poprawny plik JPEG, to możesz
    mniej uwagi poświęcić sprawdzianiu takich pierdół, a więcej na
    testowanie opadu szczęki.

    > Takich przykładów oczywiście jest więcej. A ponieważ informatyka służy
    > do poprawiania nam życia, to takich wymagania są praktycznie w każdym
    > systemie, może poza projektami studenckimi typu "napisać AVL".
    > Oczywiście te wszystkie systemy w skali mikro składają się z
    > drobiazgów, które da się pojedynczo objąć przez TDD, ale to jest skala
    > mikro i żabia perspektywa. Dla takich wymagań ostatecznym arbitrem od
    > strony konsumenta nie są testy z automata, tylko jazda próbna, albo
    > paczka czipsów.

    Ale są to też rzeczy, które mają mniejszą szansę pierdyknięcia z
    tygodnia na tydzień, mimo że wcześniej przez ileś-tam tygodni działały
    prawidłowo.

    Poza tym w samej naturze takich problemów często leży to, że istnieją
    kombinacje ustawień, dla których kopara nie opada. Np. jeśli weźmiesz
    dowolny program z funkcją wyostrzania zdjęć przy pomocy "unsharp
    mask", to tam masz dwa albo trzy suwaki i dla niektórych ustawień tych
    suwaków efekt zdecydowanie nie jest przyjemny. Ale it's not a bug,
    it's a feature. Natomiast gdyby dla nirktórych ustawień suwaków
    program się wywalał, to byłby bug.

    > Są też projekty, które można i warto jak najpełniej formalizować
    > (najczęściej ogólnie rozumiane sterowanie procesami fizycznymi) - tam
    > nie ma miejsca na elementy psychologiczne w ocenie jakości a działanie
    > systemu da się dobrze opisać matematycznie. Ale uwaga, bo to jest
    > ciekawe: właśnie w takich projektach waterfall sprawdza się bardzo
    > dobrze.

    A czasami (często) jest tak, że jesteś gdzieś pomiędzy. Na przykłąd że
    wiadomo, że wartość pozycji liczy się w określony sposób, ale zawsze
    jest możliwość, że będzie trzeba dodać dodatkowe pole, albo trzeba
    będzie obsłużyć nowy rodzaj transakcji itd.

    > Paru gości usiłuje pogodzić nurt agile z realiami systemów krytycznych
    > (które zwykle dotyczą sterowania), dobre hasło to "Continuous
    > Certification":
    >
    > http://www.open-do.org/
    >
    > ale z tego co wiem, to bardzo opornie im to idzie.

    Dzięki za linka, ale na tej dziedzinie nie znam się kompletnie i nie
    mam nic do powiedzenia.

    > > Tak, automatyczne testowanie GUI to sprawdzanie czy naciśnięcie
    > > przycisku powoduje pokazanie się odpowiedniego okienka, czy w gridzie są
    > > odpowiednie dane itd. Pożytek z tego jest duży.
    >
    > A taki np. mBank nie potrafi nawet zaakceptować wartości, którą sam
    > wyświetla (np. jeśli na koncie jest "1 234,56", to nie można tego
    > przelać przez copy-paste).
    > Może robią automatycznie testy tego "GUI". A może nie robią. Nie ma to
    > znaczenia, bo testy tego typu mają złą granulację.

    Jeśli wiesz, że masz taki problem, to napisanie testu GUI który to
    sprawdzi nie powinno być problematyczne (zakładając że już masz
    jakikolwiek sensowny framework do testowania GUI). Do odkrycia, że
    masz w ogóle taki problem to służą inne praktyki (w tym wypadku
    zapewne exploratory testing).

    > > "Display" to monitor do komputera.
    >
    > "Display" w tym sensie, w jakim to użyłem, to ogół środków
    > technicznych służących do wyświetlenia czegoś. JButton należy do tej
    > grupy.

    Ja użyłem GUI w sensie komponentu, który zawiera te wszystkie buttony
    i oprogramowanie reakcji na operacje użytkownika. I tak, chodziło mi o
    testy czy jak klikniesz tego czekboksa to się pojawią takie suwaki, a
    jak wciśniesz ten przycisk, to wyskoczy taki dialog. I nie, to nie są
    niepotrzebne testy, bo brak odpowiedniego zachowania dyskwalifikuje
    program do release, natomiast prawdopdobieństwo takich bugów w
    większym i dłużej trwającym projekcie jest zdecydowanie nie-
    epsilonowe. W dodatku dokładne ręczne przetestowanie rozbudowanego GUI
    zajęłoby wieki, więc się testowanie części opcji "pomija milczeniem" -
    co się prędzej czy później kończy wypuszczeniem buga do produkcji.

    > > Alternatywa jest taka, że klient ufa, że twoi specjaliści rozpoznają
    > > jego potrzeby biznesowe i że ty będziesz te potrzeby implementował tak,
    > > żeby zmaksymalizować wartość programu dla niego, i to zaufanie też ma
    > > odzwierciedlenie w umowie.
    >
    > No właśnie. Nie mówmy "robimy agile, więc będzie dobrze". Mówmy
    > "potrafimy rozpoznać Twoje potrzeby, więc będzie dobrze". Jedno i
    > drugie to prymitywny marketing, ale przynajmniej w tym drugim
    > przypadku stajemy się odpowiedzialnymi właścicielami końcowego efektu/
    > klęski i nie zwalamy tego na jakiś proces.

    Jak już pisałem, aspekt marketingowy mnie nie interesuje. Interesuje
    mnie, czy te praktyki są dobre.

    Osobiście też nie jestem przekonany, czy pełna widoczność procesu jest
    zawsze dobrym rozwiązaniem, być może jest tak, że czasem słuszniejszym
    podejściem jest "nikt nie chce wiedzieć, jak się robi kiełbasę".
    Wydaje mi się, że decydują o tym skomplikowane czynniki kulturowe,
    jednego klienta widocznośc uspokoi, inny powie, że oczywiście chce
    mieć widoczność, ale jak ją będzie miał, to tylko będzie nerwowy i
    będzie przeszkadzał w realizacji celu. I dlatego też wydaje mi się, że
    jak się wchodzi w wariant z widocznością, to dobrze klientowi
    wytłumaczyć, co się właściwie zamierza stosować. I oczywiście będziesz
    miał klientów, których szczegóły nie będą interesować, ale zapytają,
    czy ktoś już gdzieś z powodzeniem to zastosował. I tu właśnie wchodzi
    aspekt marketingowy "stosujemy popularny proces sixsigma/CMMI/XP/Scrum/
    Lean/RUP/wujwijeszczeco", w przypadku niektórych klientów jest to
    potrzebne do stworzenia zaufania na początku. Tylko że niezależnie od
    tego, uważam, że jak masz proces kijowy, to zaufanie się prędzej czy
    później posypie (a raczej prędzej), natomiast jeśli chodzi o taktyki
    celowego robienia klienta w bambuko, to mnie one również nie
    interesują.

strony : 1 ... 10 ... 23 . [ 24 ] . 25 ... 28


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: