Jak szybkie prototypowanie pasuje do zwinnej metodologii?

12

Pracuję dla dużej firmy, która dyktuje stosowanie zwinnych procesów. Na przykład w naszych projektach korzystamy z usług w chmurze, które są specjalnie ukierunkowane na zarządzanie sprawnym programowaniem.

Konkretna grupa inżynierów, dla której pracuję, nie opracowała tradycyjnie oprogramowania (zamiast tego pomagamy kierować projektami z dużo większej perspektywy), ale to się zmienia. Mamy szeroką gamę nadchodzących / planowanych projektów oprogramowania, które są głównie skoncentrowane na danych - np. Będziemy monitorować dane, gromadzić, agregować i niektóre raporty. Inne zadania obejmują automatyzację za pomocą specjalistycznego sprzętu i różnych rodzajów architektur klient / serwer (wielopłaszczyznowych). Mam pomagać w procesie zatrudniania kilku osób i formułować wiele naszych planów dotyczących rozwoju.

Moje pytanie brzmi: czy robienie szybkiego prototypowania (niepotrzebny kod) wpisuje się w zwinną filozofię. Na przykład uwielbiam Python i jego szeroką gamę pakietów. Widzę możliwość bardzo szybkiego wdrożenia wielu naszych pomysłów za pomocą przepływu pracy opartego na języku Python. Myślę jednak, że będzie wiele przekonań, że Python nie jest „jakości korporacyjnej” i wiele z tych prac wymaga przepisania w Javie, a może w C ++.

Jednak tworzenie prototypów w języku Python dałoby nam ogromną satysfakcję, umożliwiając nam szybkie dostarczanie rzeczywistych rezultatów.

Czy udało Ci się wdrożyć szybkie prototypowanie - mam nadzieję, że w Pythonie - w solidny, zwinny przepływ pracy w środowisku korporacyjnym?

BobIsNotMyName
źródło
3
Pisanie kodu wyrzucania jest niebezpieczną rzeczą. Jeśli to działa, to dlaczego firma powinna się tym przejmować, „wyrzucić”. Zawsze tak się dzieje, chyba że im tego nie pokażesz. Nigdy nie narażam jakości mojego kodu, nawet gdy brałem udział w hackathonach. Mógłbym wprowadzić dziwny hack tu i tam - ale nic, co byłoby „wyrzuceniem”. Podczas prototypowania skoncentruj się na historiach, które stanowią dobrą wersję demonstracyjną.
Dave Hillier
3
„duża firma, która dyktuje stosowanie zwinności” - zabawna mieszanka słów „dyktuje” i „zwinność” w jakiś sposób przypominała mi Manifest Zwinnego Zwinności . Osoby i interakcje nad procesami i narzędziami ... i mamy obowiązkowe procesy i narzędzia do kontrolowania interakcji tych osób (preferujemy termin „zasoby”)
gnat

Odpowiedzi:

11

Koncepcja „prototypowania”, zgodnie z zamierzeniami w RAD , jest nieco obca dla zwinnego rozwoju. Nie oznacza to, że nie można tego zrobić, ale jest to niezwykłe.

Istnieją różne przypadki, które należy zbadać:

  1. Czy prototyp jest „pustą skorupą”, makietą lub wersją demonstracyjną, stworzoną, aby dać wyobrażenie o tym, jak mógłby wyglądać produkt? Z pewnością możesz to zrobić z jedną lub kilkoma opowieściami - jednak budujesz coś z własnej wyobraźni, a nie budujesz produkt z prawdziwej opinii. Ludzie nie oceniają wersji demo tak, jak oceniają produkt. Na przykład zobacz opinie na temat naszego prototypu górnego paska w porównaniu z naszą rzeczywistą implementacją górnego paska .

  2. Czy prototyp jest czymś, co należy zbudować, aby lepiej zrozumieć przestrzeń problemu? Następnie powinien być zakryty jako skok , a tylko jego wyniki zachowane (kod źródłowy jest przejściowy).

  3. Czy prototyp to wersja 0.x? Mininimum produkt opłacalne ? Następnie zastosuj do tego wybrany przez ciebie zwinny proces. Jeśli musisz go odbudować w innym języku, prawdopodobnie lepiej Ci będzie, jeśli potraktujesz inny produkt. Zauważ, że czasami jest to traktowane jako skrót do pisania specyfikacji („powinien zrobić to samo co prototyp!”). To naprawdę kiepski sposób dokumentowania produktu, ale prawdopodobnie lepiej to wyjaśnić jako osobne pytanie i odpowiedź :-)

Sklivvz
źródło
Moim zdaniem jest to najgorsza jak dotąd odpowiedź, trudno mi zrozumieć, skąd się wzięły wszystkie głosy poparcia. Prototypowanie w celu uzyskania wczesnej informacji zwrotnej nie jest niczym niezwykłym, jest rodzime dla zwinnego rozwoju.
Martin Maat
@MartinMaat Przez „prototyp” rozumiesz „wczesną wersję produktu dostarczaną klientowi, która stopniowo ewoluuje w produkcie iteracyjnie”? W tym przypadku, oczywiście, masz rację, że ma to związek z tym, jak działa zwinny, a trzy kwestie, które przedstawiam, dokładnie wyjaśniają, w jaki sposób. Jednak ludzie nie zamierzają tego słowa.
Sklivvz
8

Czy szybkie prototypowanie (tj. Iteracyjny i przyrostowy rozwój) nie jest czymś w rodzaju Agile?

Wygląda na to, że masz problemy z „postrzeganiem to rzeczywistość” w swojej organizacji. Możesz przypomnieć wszystkim, że zwinny nie oznacza „odrzucenia wszystkich planów”, podobnie jak rozwój oparty na testach oznacza „odrzucenie całej architektury”.

A Python nie jest (jeśli był) językiem zabawek. NASA i jej kontrahenci używają Pythona , a jeśli jest dla nich wystarczająco dobry, jest dla mnie wystarczająco dobry.

Robert Harvey
źródło
Zgadzając się, Python nie jest językiem zabawek ... Jednak wiele organizacji w mojej firmie intensywnie korzysta z Javy i będziemy musieli się porozumiewać z ich kodem, dlatego jest to wymóg, aby angażować osoby z silnym doświadczeniem w Javie . Co więcej, problemem jest nie tyle postrzeganie ludzi, którzy rozumieją oprogramowanie, co postrzeganie tych, którzy tego nie rozumieją. To są ludzie, którzy chcą nazwy, którą słyszeli wcześniej, a ta nazwa to „Java” ... Chciałbym, abyśmy stworzyli zespół zaangażowany w Python jako podstawowy język, ale będzie to trudne.
BobIsNotMyName,
1
Nawet jeśli prototypujesz w Pythonie i przepisujesz jego część lub całość w Javie, niekoniecznie jest to zła rzecz (python nie ma profilu wydajności, którego potrzebują niektóre aplikacje). „Słyszenie” języka nie jest niczym szczególnym. Biorąc pod uwagę wybór, osobiście wybrałbym inny język niż Java, ale inne siły często dyktują wybór języka.
Robert Harvey
@Robert Harvey: „Czy szybkie prototypowanie (tj. Iteracyjny i przyrostowy rozwój) nie jest czymś w rodzaju Agile?”: O ile rozumiem, szybkie prototypowanie oznacza szybkie prototypowanie, a po kliencie zatwierdziło to, aby zbudować prawdziwy produkt (z odpowiednim projektem itp.). W zwinnym masz kompromis między nimi: zawsze masz prototyp, który jest technicznie „wystarczająco dobry” (prawdopodobnie nie tak dobry jak system, który został zaprojektowany z góry, ale wystarczająco dobry do produkcji), aby mógł być dostarczony jako produkt, gdy tylko klient będzie z niego zadowolony.
Giorgio
1
@Giorgio: W porządku, ale klienci nie wiedzą, czego chcą, dopóki im nie pokażesz i nie powiedzą: „nie, nie tego chcę, chcę tego. ” Czy robisz to w kodzie, czy na kartce papieru nie robi dla mnie żadnej różnicy, o ile określa to, czego chce klient.
Robert Harvey
2

W Programowaniu ekstremalnym istnieje ustalona praktyka zwana Spike . Oznacza to, że jest to kod jednorazowy. Nie ma w tym nic specjalnego. Jest to tylko sprint, w którym oczekiwanym rezultatem jest znajomość kodu jednorazowego.

Powyższy link zawiera wystarczającą ilość informacji o dobrych praktykach, pułapkach skoków.

Twój konkretny przypadek użycia wydaje się dobrym przykładem: pomocne może być zaprojektowanie interfejsu, sprawdzenie poprawności narzędzia i pokazanie go niektórym użytkownikom.

Borjab
źródło
1

Wyrzucisz kod i nie wprowadzisz go do produkcji (wyjaśnij to KAŻDEMU), więc zwinność czy nie ma tak naprawdę znaczenia. Wszelkie zwinne praktyki są całkowicie opcjonalne w przypadku prototypów: sprinty, wypalenia, testy, programowanie par lub cokolwiek innego, co planujesz użyć.

Jeśli zamierzasz głównie budować modele funkcjonalne w Pythonie, aby pomóc właścicielom produktów i innym decydentom w konceptualizacji projektu, nie musisz być gotowy na przedsięwzięcia. Jeśli jednak tworzysz dowód koncepcji lub próbujesz sprawdzić, czy poradzisz sobie z pewnymi poziomami wydajności, prawdopodobnie powinieneś trzymać się języka produkcyjnego. To nie znaczy, że nie możesz tego wypróbować w Pythonie.

Niezależnie od tego, wyrzucisz kod, ale wiedz, że możesz sprawić, by działało to wraz z lepszym wyczuciem tego, czego chcą właściciele. Teraz możesz użyć dowolnej wybranej metody.

JeffO
źródło
1

Dodam, że prototypy są kluczowe dla nauki, a także w duchu zwinnym. Jeśli prototyp pozwala ci się uczyć, szczególnie w ramach szybszych cykli sprzężenia zwrotnego, to idź do niego. Chodzi o maksymalizację uczenia się i dzielenie się nim z zespołem.

Melisa
źródło
0

Jeśli chodzi o naukę, dodam, że prototypowanie pozwala szybciej się uczyć. W ten sposób możesz sprawdzić, czy ludzie w ogóle dbają o problem, który próbujesz rozwiązać - i czy rozwiązanie, o którym myślisz, w ogóle jest tym, czego szukają - bez marnowania dużo czasu na budowanie pełnego rozwiązania, które może , w końcu nie rozwiąż wystarczająco bolesnego problemu lub nie rozwiąż go we właściwy sposób.

Ethan Teng
źródło
0

Prawdziwy duch Agile polega na interakcji i komunikacji. Powiedziałbym, że jeśli prototyp działa dobrze jako narzędzie ułatwiające komunikację, nie ma nic złego w używaniu go w świecie zwinnym. W naszym zespole (ćwiczymy Agile od ponad 5 lat) korzystaliśmy z niego od czasu do czasu. I widzę z tego pewne korzyści

1) Wspomaganie komunikacji

2) Zaproś użytkowników na wywiady dotyczące rozwiązań i uzyskaj wczesną informację zwrotną

Zastrzeżenie:

Bezpośredniej komunikacji między UX a inżynierami NIGDY nie należy NIGDY zastępować żadnymi artefaktami prototypowania. Jeśli to możliwe, parowanie z inżynierem działa znacznie lepiej niż komunikacja za pośrednictwem mediatora (prototypu).

Huimin
źródło
0

Inni wspominali już o celu uczenia się skoków. Brakuje podstawowej zasady zwinności, która szybko zawiedzie .

Jednym z filarów zwinnego rozwoju jest rozpoznawanie trudnych części i szukanie dowodu koncepcji, czy w ogóle możesz to zrobić. Klasyczny sposób radzenia sobie ze wszystkimi zadaniami w jakiejś „logicznej” kolejności może okazać się bardzo drogi, jeśli okaże się, że nie możesz zrobić czegoś późno w projekcie. Wszystko, co do tej pory zrobiono, może być stratą.

Jeśli to musi skończyć w ten sposób, chcesz wiedzieć jak najszybciej. Następnie interesariusze mogą albo po prostu przestać palić pieniądze, dopóki niewiele nie zostało jeszcze spalone, i zaakceptować to, czego chcą, nie jest wykonalne, lub spróbować radykalnie odmiennego podejścia do problemu, który będzie miał nową szansę na odniesienie sukcesu. Jeśli twoje prototypy służą temu celowi, są rzeczywiście najbardziej zwinne.

Martin Maat
źródło