W tym tygodniu w pracy znów się zmotywowałem . Po przejściu standardowej zwinnej, TDD, wspólnej własności, doraźnej metodologii opracowywania, aby nigdy nie planować niczego poza kilkoma historiami użytkowników na kartce, werbalnie żuć cud nad technicznymi aspektami integracji z reklamami stron trzecich bez nudności myśląc o należytej staranności i architektonicznie łącząc cały kod produkcyjny z pierwszym testem, który przychodzi komukolwiek do głowy w ciągu ostatnich kilku miesięcy, osiągamy koniec cyklu wydania i oto, a oto główna widoczna z zewnątrz funkcja, którą opracowujemy, jest zbyt wolna, aby używać, buggy, staje się labiryntowo złożony i całkowicie nieelastyczny.
Podczas tego procesu dokonano „skoków”, ale nigdy nie udokumentowano i nigdy nie wyprodukowano żadnego projektu architektonicznego (nie było FS, więc co do cholery, jeśli nie wiesz, co rozwijasz, jak możesz to zaplanować lub zbadać ?) - projekt przeszedł od pary do pary, z których każda koncentrowała się tylko na jednej historii użytkownika, a wynik był nieunikniony.
Aby rozwiązać ten problem, wyszedłem z radaru, poszedłem (przerażony) wodospad, zaplanowałem, zakodowałem i w zasadzie nie zamieniłem pary i próbowałem jak mogłem pracować sam - skupiając się na solidnej architekturze i specyfikacjach, a nie na testach jednostkowych, które przyjdzie później, kiedy wszystko zostanie przypięte. Kod jest teraz znacznie lepszy i jest w rzeczywistości całkowicie użyteczny, elastyczny i szybki. Wygląda na to, że niektórzy ludzie naprawdę mnie urazili i robili wszystko, aby sabotować moje wysiłki (być może nieświadomie), ponieważ jest to sprzeczne ze świętym procesem zwinności.
Jak więc, jako programista, wyjaśniasz zespołowi, że planowanie „pracy” nie jest „niestabilne” i jak dopasowujesz planowanie do zwinnego procesu? (Nie mówię o IPM; mówię o siedzeniu z problemem i szkicowaniu całościowego projektu, który mówi, w jaki sposób problem powinien zostać rozwiązany wystarczająco szczegółowo, aby każdy, kto pracuje nad problemem, wiedział, co architektura i wzorce, których powinni używać oraz gdzie nowy kod powinien zostać zintegrowany z istniejącym kodem)