Uważam, że niektórzy programiści są w tym bardzo biegli i często chwaleni są za możliwość dostarczenia działającej koncepcji o abstrakcyjnych wymaganiach. Szczerze mówiąc, doprowadza mnie to do szaleństwa i nie lubię „wymyślać” na bieżąco. Kiedyś myślałem, że to problematyczne, ale zacząłem wyczuwać zmianę i zastanawiam się, czy muszę dostosować mój proces myślowy (i programistyczny), gdy otrzymam bardzo mało wskazówek. Czy powinienem zacząć zdobywać tę umiejętność, czy też trzymać się idei, że zbieranie wymagań i reguły biznesowe są priorytetem?
44
Odpowiedzi:
Umiejętność nie polega na pisaniu oprogramowania bez wymagań. Zamiast tego należy wywołać wymagania od właściciela projektu, niezależnie od tego, czy istnieje dokumentacja wymagań formalnych, czy nie.
Zbieranie wymagań jest zdecydowanie Twoim pierwszym priorytetem, ale niekoniecznie musisz uprzedzić wszystkie potrzeby klienta. Ryzyko polega oczywiście na tym, że możesz przegapić jakąś istotną informację, która czyni architekturę systemu bezużyteczną, jeśli nie udało Ci się przeprowadzić odpowiedniego rodzaju rozmowy z klientem, jednak nie jest niczym niezwykłym zdefiniowanie produktu, a nawet uzyskanie znaczna część rozwoju została pominięta, jednocześnie odraczając najważniejsze decyzje dotyczące architektury systemu do ostatniej możliwej chwili. Jest to podejście oparte na szczupłym rozwoju, które ma na celu zagwarantowanie, że nie zaangażujesz się w potencjalnie niezgodną architekturę zbyt wcześnie w rozwoju produktu, dopóki nie uzyskasz bardziej wiarygodnych informacji. W sytuacjach, które OP opisał w swoim pytaniu:
Tak, czasami trzeba trochę popatrzeć na kryształową kulę, aby dotrzeć do sedna tego, o co tak naprawdę prosi klient, czyli tam, gdzie wymaga prototypowania i powolne - i tak czasami bolesne - stopniowe wyciąganie wymagań że naprawdę rozwijasz dobre umiejętności relacji z klientami, a także cierpliwość, aby zdać sobie sprawę, że przy każdym złożonym pomyśle na oprogramowanie, że na początku klient często nie wie dużo więcej o tym, co oprogramowanie musi zrobić. Najczęściej klient dzwoni wcześnie, aby polegać na wiedzy specjalistycznej w celu zdefiniowania swoich wymagań, ponieważ klient nie zawsze ma niezbędną wiedzę fachową lub wiedzę na temat procesu tworzenia oprogramowania.
źródło
To bardzo dwuznaczne…
Dwie rzeczy, które mogę powiedzieć:
Jest wielu utalentowanych ludzi technicznych, których kariera zostaje przerwana, ponieważ czekają na idealne wymagania. Lub grają: „Przepraszam, nie mogę tego zrobić, nie było to wymagane”. W rzeczywistości pisanie wymagań jest bardzo trudne. Precyzja wymagana dla dobrych wymagań jest niepodobna do niczego, co większość ludzi biznesu kiedykolwiek stworzyła. Pomiędzy technologią a biznesem istnieje pomost, a ludzie, którzy sprawiają, że inni przychodzą w 100% na spotkanie z nimi, zwykle przegrywają.
Są ludzie oprogramowania, którzy uczą się domen tak dobrze lub lepiej niż ich klienci. Ci ludzie są na wagę złota, nawet jeśli nie są w 100% najlepszymi programistami. Widziałem, jak ludzie oprogramowania przewidują ilościowe potrzeby marketingowe najlepszych menedżerów marek w kraju. Nie byli najlepsi w kodowaniu wszystkich rozwiązań, ale byli bohaterami, ponieważ mogli przekroczyć most.
W życiu nie chodzi jednak o czerń i biel. Jeśli narysujesz wokół siebie wąskie pudełko, ograniczysz się. Z drugiej strony, organizacja, która odrzuca to, co jest potrzebne do tworzenia technologii, jest również ograniczona. Musisz zobaczyć, gdzie na szaro chcesz być.
źródło
Wymagania to kroki w podróży, wizja to kierunek
W przypadku wielu aplikacji bardzo szczegółowa specyfikacja techniczna jest zbyt przesadna, ponieważ szybka dyskusja może sprawić, że ich starannie skomponowany dokument nie będzie przydatny. Zamiast tego zacznij od wizji. Jeśli wszyscy rozumieją ogólny obraz, wymagania mogą zostać wypełnione podczas dyskusji.
Jako programista musisz nauczyć się korzystać z tych dyskusji, aby przeszukiwać wymagania . Oznacza to zadawanie wiodących pytań klientom, które skłaniają ich do zastanowienia się, jak dzisiejsza decyzja wpasowuje się w ogólną wizję. Im wcześniej te bardziej szczegółowe dyskusje będą miały miejsce, tym szybciej ogólna wizja utrwali się w spójny projekt.
Powinieneś śledzić wyniki tych dyskusji w jakimś narzędziu do śledzenia problemów, aby inni mogli je komentować, jeśli przegapią oryginalną dyskusję. Abyś miał dokumentację, do której ty lub inni członkowie zespołu możecie się odwołać w razie potrzeby wyjaśnienia.
Naucz się kodować zgodnie z wizją, ale przygotuj się na te wymagania, gdy przyjdzie czas.
źródło
Steve Jobs uważał, że klienci nie mogą dokładnie opisać, jak mają wyglądać przyszłe produkty, więc Twoim zadaniem jest ich dostarczenie. Tak więc, chyba że cały czas dostarczasz niestandardowe oprogramowanie, zapomnij o formalnych specyfikacjach i zacznij od tworzenia prototypów, pozwalając klientom bawić się nimi i mówić, co myślą. Musisz postawić właściwą osobę wykonującą prototypowanie, a ona potrzebuje pomocy. Mówię to z doświadczenia - jestem prototypową małpą, która uwielbia tworzyć intuicyjne interfejsy i współpracuję z kimś w produkcie, który rozumie, czego chcą klienci i potrafią wyjaśnić wszystko na papierze lub w programie Excel.
Żadne z nas nie jest geniuszami, ale myślimy podobnie - można niemal powiedzieć, że mamy chemię i wywarliśmy ogromny wpływ na to, co się buduje i jak. Teraz tylko średni i duży zespół może sobie pozwolić na prototypowanie i niekodowanie, którzy opracowują wyłącznie produkty, ale jest tego warte. Prototypowanie jest najtańszym etapem w tworzeniu oprogramowania, więc sensowne jest jedynie poprawienie interfejsu użytkownika i pozornego zachowania. Nie przeczytałem Code Complete, ale myślę, że coś takiego napisano w tej książce.
Specyfikacje są miłe, ale nigdy nie są idealne. Istnieje na ten temat twierdzenie. Nie możesz udowodnić, że specyfikacja jest kompletna i nie możesz udowodnić, że narzędzie nie zawiera błędów lub że się zatrzyma :)
Jednak firmy produkujące oprogramowanie cały czas dostarczają oprogramowanie pomimo tych niedoskonałości procesu. Specyfikacja nigdy nie będzie idealna. Specyfikacja jest również NIESTANDARDOWA i nieaktualna. Specyfikacja prototypu przypomina tabelę logarytmiczną pojedynczego wykresu - specyfikacja jest w zasadzie nudną broszurą przeznaczoną do wydrukowania, podczas gdy zamiast niej można wchodzić w interakcję z narzędziem / wykresem. Sprawdź http://www.i-programmer.info/news/112-theory/3900-a-better-way-to-program.html inspiracji.
Teraz spec jest dobry, jeśli musisz mieć umowę na pokrycie tyłka. Ale specyfikacja powinna wciąż pojawiać się po prototypie, a nie wcześniej. Twoim zadaniem jest dowiedzieć się, jak zrobić tanie prototypy.
źródło
Ja często, że w niektórych sytuacjach trzeba działać jako analityka biznesowego, odkrywając dokładnie jak obecnie firma działa, jak ludzie myślą to działa (często bardzo różne rzeczy), i jak oni lubią go do pracy.
Odniosłem sukces, zawsze mając jasność co do decyzji, które muszę podejmować, aby zbudować oprogramowanie. Wyjaśniam swoje rozumowanie, piszę dokumentację na temat tego, co odkryłem, tworzę wykresy i rozpowszechniam je wśród wszystkich itp.
Prawdopodobnie nie zrobisz dobrego wrażenia, odmawiając wykonania jakiejkolwiek pracy, dopóki nie zostaną przekazane pełne wymagania. Ale samemu gromadząc wymagania dotyczące jakości (niekoniecznie zwracając uwagę na ten fakt), osiągniesz ten sam cel, jakim jest oprogramowanie wysokiej jakości.
I tak, jak powiedzieli inni komentatorzy, zawsze buduj oprogramowanie, zakładając, że się zmieni. Zmiana jest jedyną stałą, na której można polegać. Zawsze buduj oprogramowanie na tyle elastyczne i modułowe, aby aktualizacja nie była bolesna, gdy nagle pojawią się nowe wymagania.
źródło
Jeśli chcesz pracować jako programista przy starcie, jest to umiejętność do opanowania.
Jeśli chcesz pracować w firmie konsultingowej, jest to sytuacja, której należy unikać za wszelką cenę. Wynika to z faktu, że Twoja firma otrzymuje wynagrodzenie w zależności od tego, jak dobrze wdrażasz specyfikację / wymagania, a nie od tego, jak dobrze rozwiązałeś problem klienta.
Jeśli kodujesz dla zabawy w wolnym czasie, to twoja rozmowa. Jeśli nie czujesz się wykwalifikowany, aby zadzwonić do swoich projektów w wolnym czasie, wypróbuj kilka sposobów i sprawdź, co działa. Poza tym nie jest to jedna rzecz uniwersalna, niektóre projekty wymagają takiego lub innego podejścia. Zwykle, jeśli wybierzesz niewłaściwy w jednym z tych projektów, szybko się zorientujesz.
źródło
Trochę obu. Musisz zadowolić swoich klientów, co oznacza, że musisz wiedzieć, czego chcą. Z drugiej strony klienci są bardzo słabi w komunikowaniu tego, czego naprawdę chcą.
Dlatego chcesz uniknąć scenariuszy, w których nie wiesz, czego oczekują klienci, ale nieuchronnie napotkasz scenariusz, w którym wymagania są co najmniej „miękkie”, aw najgorszym - zwodnicze. Dobry programista w świecie rzeczywistym wymaga adaptacji.
źródło
Nie można napisać programu bez wymagań. Nawet „Hello World” ma wymóg: produkować dane wyjściowe. Więc myślę, że pytasz o wymagania formalne, w postaci jakiegoś dużego stosu czegoś podobnego do UML. Jeśli chodzi o nich, poznałem 2 rodzaje ludzi:
1) Ludzie, którzy potrzebują wymogów formalnych. Trzeba im dokładnie powiedzieć, co robić, a co najwyżej jak to zrobić. Uwielbiają zdania takie jak Procedura A, biorąc argument B , wygeneruje C i nienawidzą tych: Program powinien usprawnić pracę naszego oddziału . Zazwyczaj są to zwierzęta korporacyjne.
2) Ludzie, którzy są przeciwni do 1. Nie lubią mówić, co robić i jak to robić, lubią mówić, co należy osiągnąć. Lubią rozmawiać z klientem, analizować, co mówią, a następnie opracować własne rozwiązanie. Zazwyczaj są freelancerami i nie pasują dobrze do korporacji.
Nie powiem, który z nich jest lepszy. Oba mają swoje zalety i zalety. Są proste odpowiednie dla innych warunków.
źródło
NIE możesz tworzyć oprogramowania operacyjnego bez znajomości wymagań; ale możesz mieć świetny zastrzyk w rozwijaniu tego, co mówi twoje doświadczenie, że wymagania są prawdopodobnebyć. Zwinne projektowanie wykorzystuje kombinację „intuicyjnych” technik, w tym reguły 80:20 i „odkrywania” wymagań poprzez prototypowanie. Innymi słowy, doświadczony zespół programistów najlepiej zgaduje, co jest potrzebne i tworzy prototyp oprogramowania. Reguła 80:20 mówi, że będą w 80% poprawne. Następnie interesariusze projektu dokonają przeglądu namacalnego prototypu. Ich opinie zaczynają wypełniać lukę 20% w naszym rozumieniu wymagań. W efekcie, Agile nie polega na pisaniu oprogramowania bez żadnych wymagań, a raczej na wykorzystaniu wcześniejszego doświadczenia i powiedzenia „chcesz czegoś takiego?” Który, w 80% przypadków, pozwoli ci przeskoczyć do przodu i potwierdzić, co naprawdę jest potrzebne, szybciej niż plodowanie w tradycyjnych procesach wymagań.
źródło
Kto powiedział, że Agile pisze kod przy braku wymagań? Wiem, że Manifest został przez niektórych zinterpretowany w ten sposób ... ale to nie jest poprawne.
źródło