Kapitan Oczywisty na ratunek!
Będę tu Kapitanem Oczywistym i powiem, że można znaleźć jakiś środek.
Chcesz budować na przyszłość i unikać uzależnienia się od wyboru technologicznego lub złego projektu. Ale nie chcesz spędzać 3 miesięcy na projektowaniu czegoś, co powinno być proste, lub dodawaniu punktów rozszerzeń dla szybkiej i brudnej aplikacji, która będzie miała 2 lata użytkowania i prawdopodobnie nie będzie mieć projektów następczych.
Trudno jest znaleźć to rozróżnienie, ponieważ nie zawsze można przewidzieć sukces produktu i jeśli trzeba będzie go później rozszerzyć.
Buduj na teraz, jeśli ...
- projekt zostanie złomowany
- projekt ma krótką żywotność
- projekt nie powinien mieć rozszerzeń
- projekt nie ma wartości ryzyka (głównie pod względem wizerunku)
Ogólnie rzecz biorąc, na razie należy opracować własne projekty lub coś zbudowanego dla klienta. Pamiętaj, aby mieć proste wymagania i odnosić się do nich w razie potrzeby, aby wiedzieć, co jest potrzebne, a co nie. Nie chcę spędzać zbyt wiele czasu na czymś, co „miło mieć”. Ale nie koduj też jak świnia.
Pozostaw problem ogólny na później, jeśli będzie to kiedykolwiek konieczne i warte wysiłku:
Buduj na przyszłość, jeśli ...
- projekt będzie publiczny
- projekt jest komponentem do ponownego wykorzystania
- projekt stanowi odskocznię dla innych projektów
- projekt będzie zawierał kolejne projekty lub wydania usług z ulepszeniami
Jeśli budujesz coś publicznego lub zostanie to ponownie wykorzystane w innych projektach, masz znacznie większe prawdopodobieństwo, że zły projekt wróci, by cię prześladować, więc powinieneś zwrócić na to większą uwagę. Ale nie zawsze jest to gwarantowane.
Wytyczne
Powiedziałbym, że przestrzegaj następujących zasad najlepiej, jak potrafisz, i powinieneś postawić się w sytuacji projektowania wydajnych, elastycznych produktów:
- wiedzieć, że YAGNI ,
- KISS ,
- ilekroć masz ochotę podrapać się na świąd i pomyśleć o dodatku, zapisz go. Spójrz wstecz na wymagania swojego projektu i zadaj sobie pytanie, czy dodatki są priorytetami, czy nie. Zapytaj, czy dodają podstawową wartość biznesową, czy nie.
Wiem, że osobiście mam tendencję do zbytniego zastanawiania się i nadmiernej inżynierii. To naprawdę pomaga spisywać pomysły i bardzo często przemyśleć, czy potrzebuję dodatkowych funkcji. Często odpowiedź brzmi „nie” lub „byłoby później fajnie”. Te ostatnie pomysły są niebezpieczne, ponieważ pozostają z tyłu mojej głowy i muszę zmusić się, żeby nie planować ich.
Najlepszym sposobem na kodowanie bez nadmiernej inżynierii i bez blokowania się na później jest skupienie się na dobrym minimalnym projekcie. Ładnie rozkładaj elementy na części, które możesz później rozszerzyć, ale nie zastanawiając się już, w jaki sposób można je później rozszerzyć. Nie możesz przewidzieć przyszłości.
Po prostu buduj proste rzeczy.
Dylemat
Nadmierna inżynieria
Czy programiści zazwyczaj podążają za takim projektem?
O tak. To znany dylemat i pokazuje tylko, że zależy Ci na produkcie. Jeśli nie, to bardziej niepokojące. Nie ma zgody co do tego, czy zawsze mniej znaczy naprawdę więcej, a jeśli gorzej jest zawsze naprawdę lepiej . Możesz być facetem typu MIT lub New Jersey . Nie ma tutaj łatwej odpowiedzi.
Prototypowanie / Quick-n-Dirty / Less to więcej
Czy to typowy trend, aby jak najszybciej znieść praktyczny przykład?
Jest to powszechna praktyka, ale nie w ten sposób podchodzi się do większości projektów. Mimo to prototypowanie jest moim zdaniem dobrym trendem, ale ze znacznym minusem. Kuszące może być promowanie szybkich i brudnych prototypów na rzeczywistych produktach lub wykorzystanie ich jako podstawy dla rzeczywistych produktów pod presją zarządzania lub ograniczeniami czasowymi. Wtedy prototypowanie może cię prześladować.
Prototypowanie ma oczywiste zalety , ale także duży potencjał niewłaściwego użytkowania i nadużyć (w rezultacie wiele dokładnie odwrotności wcześniej wymienionych zalet).
Kiedy używać prototypowania?
Istnieją wskazówki na temat najlepszych rodzajów projektów do zastosowania prototypowania :
[...] prototypowanie jest najbardziej korzystne w systemach, które będą miały wiele interakcji z użytkownikami.
[...] prototypowanie jest bardzo skuteczne w analizie i projektowaniu systemów on-line, szczególnie w przetwarzaniu transakcji, gdzie użycie dialogów ekranowych jest znacznie bardziej widoczne. Im większa interakcja między komputerem a użytkownikiem, tym większa korzyść [...]
„Jednym z najbardziej produktywnych zastosowań szybkiego prototypowania do tej pory było narzędzie do iteracyjnej inżynierii wymagań użytkownika i projektowania interfejsu człowiek-komputer”.
Z drugiej strony:
Systemy z niewielką interakcją użytkownika, takie jak przetwarzanie wsadowe lub systemy, które w większości wykonują obliczenia, niewiele korzystają z prototypowania. Czasami kodowanie potrzebne do wykonywania funkcji systemu może być zbyt intensywne, a potencjalne korzyści, jakie może zapewnić prototypowanie, są zbyt małe.
A jeśli masz w pobliżu zielonego potwora, pamiętaj o zachowaniu prototypu w ramach budżetu ...