Dlaczego nie należy ignorować opóźnień w projektach oprogramowania

( 23 października 2020 r.)

Omówienie najważniejszych wyzwań, z jakimi borykają się zespoły związane z dostarczaniem oprogramowania – oraz sugestie, jak radzić sobie z tymi problemami, aby projekty były zgodne z prawdą.

Ponieważ dzisiejsze firmy dążą do cyfryzacji, zespoły programistów są pod coraz większą presją, aby dostarczać nowe funkcje z dużą szybkością . W rezultacie opóźnienia w projektach oprogramowania stają się nieuniknione. Staje się problemem, gdy te opóźnienia są traktowane jako „normalna” część cyklu życia oprogramowania. Chociaż pojedyncze opóźnienie niekoniecznie musi być powodem do większego niepokoju, powtarzające się opóźnienia należy traktować poważnie, ponieważ często są one objawem większej i bardziej niebezpiecznej przyczyny źródłowej.

Oprogramowanie rozwój to złożony, dynamiczny system. W dobrze zbilansowanym systemie, w miarę dodawania nowych żądań do rejestru produktów, w tym samym tempie, istniejące żądania są przekształcane w funkcje dostępne dla klienta. Gdy tempo przychodzących żądań jest wyższe niż tempo wychodzących funkcji, system traci równowagę. Jeśli to zignorujemy, ta nierównowaga będzie się dalej rozwijać i ostatecznie doprowadzi do awarii systemu.

Oto kilka typowych przyczyn, które często widzę w praktyce:

Planowanie, które jest zbyt optymistyczne

Zwykle jesteśmy zbyt optymistyczni z natury i przeceniamy, ile możemy zrobić w danym okresie. To niekoniecznie jest złe. Jednak jeśli zdarza się to często, pokazuje, że dotrzymywanie terminów nie jest traktowane poważnie. Ważną zasadą zwinną jest to, że tylko programiści są odpowiedzialni i rozliczani za oszacowanie wysiłku. Co więcej, dobrą praktyką dla każdego zespołu zwinnego jest śledzenie różnicy między pracą przeznaczoną do wykonania w sprincie a rzeczywistą pracą wykonaną po sprincie. Celem jest obserwowanie postępów w zakresie dokładności prognozowania przez zespół w czasie.

Pomijanie złożoności implementacji

Planując nowe funkcje sprintu, łatwo jest przeoczyć zawiłości, które pojawiają się podczas implementacji. Jednak dość często przeoczana złożoność jest bezpośrednim wynikiem złożonego projektu oprogramowania. Gdy oprogramowanie ma złożoną strukturę i nie ma wyraźnych wzorców dotyczących wzajemnych zależności modułów oprogramowania, niemożliwe jest dobre zrozumienie sposobu działania oprogramowania. To uniemożliwia realistyczne planowanie. Niestety często nie jest to łatwe do rozwiązania; z pewnością wymaga to jednak zbadania realnych sposobów odnowienia i ulepszenia oprogramowania.

Nieoczekiwane defekty o wysokim priorytecie

Wada produkcyjna (błąd funkcji, problem z wydajnością lub bezpieczeństwem) z pewnością ma wysoki priorytet i wymaga natychmiastowej naprawy. Ale kiedy tego rodzaju problemy zbyt często przeszkadzają w tworzeniu nowych funkcji, jest to alarmujący znak, że trzeba coś poprawić. Jest to objaw znacznego długu technicznego (tj. Problemów z jakością kodu) narastającego w czasie. Zmniejszenie tego długu technicznego powinno mieć wysoki priorytet; w przeciwnym razie jest wysoce prawdopodobne, że zachowanie systemu i produktywność rozwoju ulegną dalszemu poważnemu pogorszeniu.

Oczekiwanie na uwagi innego zespołu

Oprogramowanie jest zwykle tworzone przez wiele zespołów, przy czym jeden zespół zajmuje się tworzeniem danych wejściowych przez inny. Praca powinna być rozłożona na zespoły w sposób umożliwiający stały przepływ informacji w systemie. Opóźnienia spowodowane oczekiwaniem na inne zespoły wskazują, że potrzebna jest lepsza organizacja zespołu, aby zminimalizować zależności między nimi. Najważniejsze jest tutaj posiadanie dobrego lidera produktu, kogoś, kto nadzoruje postęp całego produktu i skutecznie ustala priorytety.

Ta lista z pewnością nie jest wyczerpująca, a może być wiele innych przyczyn opóźnień w dostarczaniu oprogramowania. Niemniej jednak częste opóźnienia są sygnałem, że należy nieco zwolnić, znaleźć podstawową przyczynę problemu i przywrócić równowagę systemu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *