Rozwój oprogramowania, co naprawdę ma znaczenie

Rozwój oprogramowania, co naprawdę ma znaczenie

Tworzenie aplikacji

Rozwój oprogramowania odgrywa coraz bardziej krytyczną rolę w wielu branżach, jednak niewiele firm opanowało sztukę prawidłowego wdrażania zmian w aplikacji.

Prawidłowa organizacja i podejście do osiągania wyników są kluczem do pomyślnego rozwoju oprogramowania

Istnieją trzy czynniki, które muszą być spełnione, aby projekt zakończył się sukcesem:

  • dedykowany, wielofunkcyjny zespół projektowy;
  • silne przywództwo, które jest odpowiedzialne za wyniki;
  • jasne, wspólne wymagania, które są zrozumiałe dla wszystkich zainteresowanych stron.
Rozwój oprogramowania, co naprawdę ma znaczenia

Rozwój oprogramowania odgrywa coraz bardziej krytyczną rolę w wielu branżach. Analitycy szacują, że na przykład w sektorze motoryzacyjnym prawie trzy czwarte przyszłych innowacji będzie napędzane przez oprogramowanie. Firmy inwestują w kompetencje informatyczne. Niektóre z nich zatrudniają teraz więcej programistów niż firmy produkujące aplikacje dedykowane. Wiele z nich dysponuje procesami tworzenia aplikacji, których zaawansowanie konkuruje - lub nawet przewyższa - z głównymi graczami na rynku oprogramowania.

Jednak niewiele firm jest w pełni zadowolonych ze zwrotu z wydatków na rozwój oprogramowania. I to nie bez powodu. Wiele projektów programistycznych pojawia się późno, z przekroczonym budżetem, o niskiej jakości lub niecelowo, co powoduje liczne niedogodności, takie jak opóźnienia we wprowadzaniu produktów na rynek, wycofywanie produktów z rynku i wyższe niż oczekiwano koszty wsparcia technicznego. Frustrację pogłębia brak przejrzystości i odpowiedzialności często związany z wydatkami na tworzenie aplikacji dedykowanych.

Gdy próbujemy zdiagnozować przyczyny słabej wydajności w rozwoju oprogramowania w firmie, często zaczynamy od zadania następującego pytania:

  • W jaki sposób organizacja podejmuje decyzje i dokonuje kompromisów pomiędzy funkcjami, które mają być włączone, czasem dostawy i zasobami potrzebnymi do każdej wersji?

Jeśli proces podejmowania takich decyzji jest niejasny, nakłada na kierownictwo nadmierne wymagania co do czasu lub powoduje zmiany priorytetów na późnym etapie cyklu projektu. Wyniki firmy będą prawdopodobnie nieprzewidywalne i rozczarowujące. Wspólne środki zaradcze dla takich problemów, takie jak dobrze zdefiniowane etapy i rygorystyczne przeglądy etapów, są cenne i konieczne, ale nie wystarczą do stworzenia aplikacji, która rzeczywiście spełni swoją obietnicę.

To, czego zazwyczaj brakuje - i co jest podstawą sukcesu w tworzeniu aplikacji dedykowanych - to właściwa organizacja i podejście do osiągania wyników. W tym celu niezbędne są trzy działania:

  • zaangażowanie w projekt upoważnionego, wielofunkcyjnego zespołu, który połączy wszystkie możliwości niezbędne do osiągnięcia sukcesu;
  • ustanowienie silnego lidera, dysponującego umiejętnościami i autorytetem niezbędnym do podejmowania krytycznych decyzji iprowadzenia procesu od końca do końca ponad granicami funkcjonalnymi;
  • opracowanie jasnych, specyficznych wymagań, które stworzą nieprzerwany łańcuch celów dla wszystkich zaangażowanych stron, od koncepcji po realizację.

Konsekwentne stosowanie tych praktyk jest fundamentem, na którym opiera się skuteczne tworzenie aplikacji internetowych. Jeśli nie zostaną one wprowadzone, inne środki zaradcze, mające na celu zapewnienie niskiej wydajności tworzenia aplikacji, będą miały niewielki wpływ.

Dedykowanie wielofunkcyjnego rozwoju oprogramowania wymaga efektywnego i skoordynowanego wkładu ze strony szerokiego zestawu funkcji, takich jak marketing, zarządzanie produktem, rozwój i testowanie. Nie jest możliwe, aby pojedynczy człowiek zajmujący się produktem lub analityk biznesowy w pełni i ostatecznie określił wymagania funkcjonalne aplikacji, wymagania niefunkcjonalne aplikacji, przypadki użycia na początku projektu.

Na przykład, menedżerowie produktu mogą zrozumieć, co jest potrzebne klientom, ale programiści wiedzą, co jest możliwe w zakresie technologii. Kluczem do wykorzystania tych różnych perspektyw jest jeden, wielofunkcyjny zespół, który ma jasną wizję aplikacji dedykowanej. Zespół ten musi mieć prawdziwą autonomię: po przypisaniu do projektu, każdy członek zespołu powinien być odpowiedzialny przede wszystkim przed projektem i liderem projektu, a nie przed ogólnym kierownikiem swojej funkcji.

Ten jasny podział ról i obszarów usuwa dwuznaczności i znacznie zwiększa efektywność, ponieważ zapobiega ingerencji kierowników funkcjonalnych w decyzje dotyczące projektu. Silne zarządzanie funkcjonalne będzie oczywiście nadal odgrywało ważną rolę w sukcesie projektu. Lider funkcji rozwoju będzie na przykład nadal wyznaczał standardy rozwoju, definiował wspólne platformy, zatrudniał, szkolił i utrzymywał właściwych programistów.

Zespół projektowy jest jednak bezpośrednim i ostatecznym arbitrem, odpowiedzialnym za mądre wykorzystanie tych zasobów wbrew celom biznesowym i ukierunkowanie ich na realizację konkretnych celów projektu. W zespole projektowym każda funkcja powinna być nagradzana przez lidera, który jest upoważniony do podejmowania decyzji związanych z projektami w imieniu swojej funkcji. Każdy lider powinien zostać wybrany na etapie opracowywania koncepcji projektu. Powinien być reprezentowany od samego początku - w tym w takich obszarach jak wdrażanie i wsparcie - tak aby potrzeby wszystkich funkcji były słyszalne na wczesnym etapie i często w trakcie całego procesu projektowania aplikacji dedykowanej.

Po rozpoczęciu projektu, spotkania zespołu powinny odbywać się często, a wszyscy przedstawiciele powinni uczestniczyć w nich osobiście. Takie podejście znacznie zwiększa przejrzystość projektu. Cały zespół natychmiast dowie się, na przykład, o proponowanych zmianach w kierunku projektu, takich jak "zmiana profilu" funkcji. Ten wysoki poziom świadomości ułatwi z kolei dokładną ocenę skutków i terminową komunikację ze wszystkimi zainteresowanymi stronami. Z naszego doświadczenia wynika, że intensywna, szybka i powtarzająca się współpraca pomiędzy funkcjami, które generuje taka struktura zespołu, jest warunkiem koniecznym do osiągnięcia doskonałych wyników.

Rozwój oprogramowania, przywództwo

Skuteczne tworzenie oprogramowania wymaga silnego lidera z umiejętnościami i uprawnieniami niezbędnymi do podejmowania decyzji i prowadzenia procesu do końca. W czasie trwania projektu, lider ten będzie nadzorował wszystkie funkcje, od specyfikacji wymagań aplikacji po wsparcie: zbieranie i ustalanie priorytetów od zainteresowanych stron; ustalanie kursu; doprowadzanie do krytycznych kompromisów w zakresie cech, czasu i budżetu; oraz zapewnianie, że wysiłek ten pozostaje na właściwej drodze. Będzie musiał uważnie oceniać, kiedy należy kierować sprawy do wyższej kadry kierowniczej i kiedy "po prostu zacząć działać".

Stworzenie wielofunkcyjnego zespołu, posiadającego umiejętności i autorytet niezbędny do podejmowania krytycznych decyzji ◊

Rozwijanie jasnych, wspólnych wymagań, które:

  • opierają się na głębokim zrozumieniu potrzeb
  • są weryfikowane i udoskonalane w sposób rygorystyczny
  • są traktowane priorytetowo
  • są wyrażane w języku zrozumiałym dla wszystkich członków i stron zespołu.
Rozwój oprogramowania, trzy podstawowe zasady sukcesu

Stworzenie wielofunkcyjnego zespołu, który:

  • posiada niezbędne kompetencje i doświadczenia aby zrealizować projekt z sukcesem,
  • jest właścicielem i posiada uprawnienia do pełnego zarządzania projektem

Stworzenie silnego zespołu kierowniczego:

  • posiadającego umiejętności i autorytet niezbędny do podejmowania krytycznych decyzji
  • który jest odpowiedzialny za wyniki

Opracowanie jasnych, wspólnych wymagań, które:

  • opierają się na głębokim zrozumieniu potrzeb,
  • są weryfikowane i udoskonalane w sposób rygorystyczny,
  • są traktowane priorytetowo
  • są wyrażane w języku zrozumiałym dla wszystkich zainteresowanych stron.
Rozwój oprogramowania, to, co naprawdę ma znaczenie

Dobranie odpowiedniej osoby na miejscu jest zatem krytyczne. Idealnym kandydatem jest osoba o ogólnej mentalności i zdolności do postrzegania decyzji z perspektywy biznesowej. Potrafi on w przekonywujący sposób przedstawić cele projektu i wspierać współpracę między członkami zespołu: "Napoleon" jest zdecydowanie nieodpowiednią osobą do tej pracy. Lider musi być również w stanie stworzyć atmosferę szczerości i przejrzystości. Ktoś, kto jest znany z "zastrzelenia posłańca", na dłuższą metę będzie cierpiał z powodu projektu; "niespodzianki" muszą być niezauważone i rozwiązane raczej wcześniej niż później.

Lider projektu musi otrzymać niezbędną władzę do wykonania zadania. I, co jest najbardziej krytyczne, musi on zostać pociągnięty do odpowiedzialności za wynik. W organizacjach stosujących najlepsze praktyki często zdarza się, że duża część wynagrodzenia lidera projektu jest powiązana z wynikami biznesowymi projektu. Definicja wyników jest różna:

  • dla rozwoju oprogramowania komercyjnego, wyniki oznaczają wartość ujawnioną i zysk;
  • dla aplikacji dedykowanych stworzonych na użytek wewnętrzny, oznaczają one wartość biznesową dla użytkowników końcowych.

Jakość projektu, koszt, terminowość realizacji i zgodność z wymaganiami to ważne wskaźniki efektywnego rozwoju oprogramowania. Jednak ostateczną miarą sukcesu powinien być zawsze wpływ projektu na biznes.

Wzmocnienie pozycji lidera i pociągnięcie go do odpowiedzialności w ten sposób zapewni kierownictwu dużą przejrzystość całego procesu. W przeciwieństwie do tego, gdy odpowiedzialność jest rozłożona na wiele funkcjonalnych silosów połączonych jedynie kawałkami procesu, nie można jasno określić pierwotnych przyczyn niepowodzenia projektu. Rozwój wini marketing za niezrozumienie potrzeb klienta; marketing wini rozwój za nie zbudowanie produktu tak, jak został on zaprojektowany. Jakość i terminowość gotowego produktu nieuchronnie na tym ucierpi.

Rozwój oprogramowania, opracowanie wymagań

Aby projekt rozwoju oprogramowania odniósł sukces, wszystkie zainteresowane strony muszą zrozumieć i podpisać się pod jego wymaganiami. Aby ułatwić osiągnięcie sukcesu, wymagania muszą mieć trzy cechy charakterystyczne:

  • wymagania aplikacji muszą w pełni i dokładnie odzwierciedlać potrzeby zamierzonych użytkowników,
  • wymagania aplikacji muszą być opisane szczegółowo i językiem, który jest zrozumiały dla wszystkich zainteresowanych stron,
  • wymagania aplikacji muszą być rygorystycznie traktowane priorytetowo.

Jeśli tak się nie stanie, projekt będzie prawdopodobnie charakteryzował się dużą zmiennością wymagań lub zmianami celów projektu po ustaleniu wstępnych specyfikacji. Niestabilność wymagań przekłada się bezpośrednio na niską jakość, zmiany, niedotrzymanie terminów i przekroczone budżety - i powinny być minimalizowane za wszelką cenę.

Poszukuj informacji o wymaganiach od jak najbardziej szerokiego grona zainteresowanych stron, w tym zarówno użytkowników końcowych, jak i klientów.

Zbieranie wymagań funkcjonalnych aplikacji. To, co aplikacja dedykowana najlepiej musiałaby robić, aby spełnić wymagania użytkownika - oraz pożądanego poziomu wydajności technicznej, w tym standardów dotyczących takich czynników jak niezawodność, bezpieczeństwo i koszty wdrożenia. Przeprowadzaj badania i buduj solidną bazę faktograficzną w celu wsparcia zidentyfikowanych wymagań. Baza faktograficzna będzie w pełni wykorzystana do zapobiegania zakłócaniu procesu przez poszczególne zainteresowane strony poprzez nacisk na cechy, które nie są uzasadnione badaniami.

Opisz dokładnie wymagania aplikacji w prostym języku. Udokumentować wszystkie wymagania poprzez przypadki użycia, które opisują role określonych użytkowników aplikacji dedykowanej, zadania, które ci użytkownicy starają się wykonać, oraz kroki niezbędne do tego celu. Przypadki użycia stanowią potężny wspólny język, który może być w pełni zrozumiany przez wszystkich uczestników procesu rozwoju, w tym klientów, deweloperów i pracowników wsparcia. Ten wspólny język jest kluczem do kultywowania zrozumienia i celu w całym procesie.

W fazie koncepcyjnej procesu rozwoju oprogramowania należy stworzyć niewielką liczbę przypadków użycia na wysokim poziomie, które uchwycą najważniejsze aspekty wymagań. Te bardziej ogólne przypadki powinny być rozszerzone i wypełnione bardziej szczegółowo poprzez fazy specyfikacji i projektowania. Wszystkie zainteresowane strony powinny uczestniczyć w tych przypadkach zastosowań, dokonywać ich przeglądu i zatwierdzać. Przypadki zastosowań powinny być również poddawane przeglądowi i testowane przez docelowych klientów i użytkowników końcowych w ramach powtarzalnego procesu. Wyłapywanie błędów w wymaganiach na wczesnym etapie jest znacznie tańsze niż ich korygowanie na późniejszym etapie procesu.

Rygorystyczne ustalanie priorytetów. Wymagania muszą być traktowane priorytetowo, aby wszelkie decyzje dotyczące kompromisów w zakresie funkcji, harmonogramu i budżetu mogły być podejmowane szybko. Niektóre organizacje programistyczne po prostu mówią o tym.

Ustalenie priorytetów pozwala projektowi rozwoju oprogramowania toczyć się bez przeszkód i pełną parą. Zatrzymanie projektu w celu wpuszczenia nowych potrzeb jest kosztowne i opóźni realizację projektu IT. Każda zmiana założeń i wymagań aplikacji dedykowanej spowoduje jeszcze większe perturbacje.

Trzeba zmienić wymagania aplikacji na drobne kawałki. Części , które mogą być dostarczone dla użytkowników wystarczająco szybko, aby spełnić ich zmieniające się potrzeby. Może to oznaczać mniejsze przyrosty zmian tworzonej aplikacji internetowej, ale realizowane częściej. Jeśli projekt rozwoju poprogramowania dotyczy tylko jednej realizacji rocznie, bardzo trudno będzie oprzeć się presji wprowadzania nowych funkcji w późniejszych etapach procesu.

Rozwój oprogramowania jest źródłem frustracji w wielu firmach - ale nie musi być. Dedykowanie wielofunkcyjnego zespołu, ustanowienie silnego przywództwa i opracowanie jasnych, wspólnych wymagań może wyeliminować dwuznaczność, przywrócić odpowiedzialność i zmaksymalizować zwrot z każdego projektu wdrożenia systemu IT, który realizujesz. To jest warte tego wysiłku.

Powiązane artykuły