Firma programistyczna

Firma programistyczna to firma, której głównymi produktami są różne formy oprogramowania , technologia oprogramowania, dystrybucja i rozwój oprogramowania. Tworzą branżę oprogramowania .

typy

Istnieje wiele różnych rodzajów firm programistycznych:

Wszystkie z nich można podzielić na jedną lub wiele z następujących kategorii:

Typowe role w firmie programistycznej

Zorganizowanie firmy programistycznej to bardzo wyspecjalizowany rodzaj umiejętności zarządzania, w którym doświadczone osoby mogą zamienić problem organizacyjny w wyjątkową korzyść. Na przykład posiadanie podzespołów rozmieszczonych w różnych strefach czasowych może pozwolić firmie na 24-godzinny dzień pracy, jeśli zespoły, systemy i procedury są dobrze ugruntowane. Dobrym przykładem jest zespół testowy w strefie czasowej 8 godzin przed lub za zespołem deweloperskim, który naprawia znalezione przez testerów błędy w oprogramowaniu .

Profesjonalna firma programistyczna zwykle składa się z co najmniej trzech dedykowanych podzespołów:

W większych firmach programistycznych stosuje się większą specjalizację i dość często występują również:

Struktura

Menedżer firmy programistycznej jest zwykle nazywany szefem rozwoju (HOD) i podlega interesariuszom . W zależności od wielkości organizacji kieruje podzespołami bezpośrednio lub za pośrednictwem kierowników/liderów . Zazwyczaj najbardziej operacyjne są zespoły do ​​10 osób. W większych organizacjach generalnie istnieją dwa modele hierarchii:

Typowa struktura firmy programistycznej

Wszystkie zespoły są w pełni niezależne i pracują osobno nad różnymi projektami. Struktura jest dość prosta i wszyscy pracownicy podlegają jednej osobie, co czyni sytuację dość jasną, jednak nie jest to dobre rozwiązanie z punktu widzenia wymiany wiedzy i optymalnego wykorzystania zasobów ludzkich.

Struktura macierzy

W tym modelu istnieją dedykowani menedżerowie/liderzy dla każdej głównej specjalizacji, „wynajmujący” swoich ludzi do konkretnych projektów prowadzonych przez kierowników produktu/projektu, którzy formalnie lub nieformalnie kupują ludzi i płacą za ich czas. Prowadzi to do tego, że każdy pracownik prywatny ma dwóch szefów – kierownika produktu/projektu i wyspecjalizowanego kierownika „zasobów”. Z jednej strony optymalizuje to wykorzystanie zasobów ludzkich, z drugiej może rodzić konflikty o to, który z kierowników ma pierwszeństwo w strukturze.

Istnieje również wiele wariantów tych struktur, a wiele organizacji ma tę strukturę rozproszoną i podzieloną na różne działy i jednostki.

Metodologie

Firmy programistyczne mogą stosować wiele różnych metod tworzenia kodu. Mogą to być:

Istnieją również metodologie, które łączą oba, takie jak model spiralny , Rational Unified Process (RUP) lub MSF .

Cykl życia produktu

Niezależnie od zastosowanej metodologii cykl życia produktu zawsze składa się z co najmniej trzech etapów:

  • Projekt – obejmujący zarówno specyfikację biznesową, jak i techniczną
  • Kodowanie – samo opracowanie
  • Testowanie – zarządzanie jakością

W idealnym przypadku każdy etap zajmuje 30% całkowitego czasu, a pozostałe 10% stanowi rezerwę.

Diagram sekwencji UML interakcji między tymi grupami może wyglądać następująco:

Ogólna interakcja między czterema głównymi grupami

Na każdym etapie inna grupa odgrywa kluczową rolę, jednak każdy rodzaj roli musi być zaangażowany w cały proces rozwoju:

  • Analitycy po skompletowaniu specyfikacji biznesowej zarządzają zmieniającą się sytuacją biznesową, aby zminimalizować możliwość zmiany w czasie. Wspierają również zarówno programistów, jak i testerów podczas całego procesu rozwoju, aby finalny produkt spełniał określone na starcie potrzeby biznesowe. Proces idealnie stawia analityków biznesowych jako kluczowych graczy podczas ostatecznego dostarczania rozwiązania do klienta, ponieważ są oni najlepiej przygotowani do zapewnienia najlepszej warstwy biznesowej.
  • Programiści dokonują specyfikacji technicznej w fazie projektowania, dlatego nazywani są programistami/projektantami, aw czasie testowania naprawiają błędy.
  • Testerzy wypełniają scenariusze testowe w fazie projektowania i oceniają je w fazie kodowania

Systemy i procedury

firmy programistyczne posiadają różne systemy i procedury wdrożone i działające wewnętrznie we wszystkich podzespołach. Obejmują one:

Analitycy biznesowi

Programiści

Testerzy

Kierownicy projektów/produktów

Istnieją również aplikacje do zarządzania cyklem życia aplikacji (ALM), które osadzają niektóre z tych funkcji w jednym pakiecie i są używane we wszystkich grupach. Są one dostarczane przez różnych dostawców, takich jak Borland , ECM czy Compuware .

Audyty efektywności

Firmy programistyczne o ugruntowanej pozycji zazwyczaj mają jakiś sposób mierzenia własnej wydajności. Zwykle odbywa się to poprzez zdefiniowanie zestawu kluczowych wskaźników wydajności (KPI), takich jak

  • Średnia liczba błędów popełnionych przez programistę na jednostkę czasu lub wiersze kodu źródłowego
  • Liczba błędów znalezionych przez testera na cykl testowy
  • Średnia liczba cykli testowych do Zero Bug Bounce (ZBB)
  • Średni czas cyklu testowego
  • Szacunkowy czas wykonania zadania w stosunku do rzeczywistego czasu wykonania zadania (dokładność planowania)
  • Liczba poprawek do linii bazowej

Szereg organizacji koncentruje się na osiągnięciu optymalnego poziomu Capability Maturity Model (CMM), gdzie „optymalny” niekoniecznie oznacza najwyższy. Istnieją również inne systemy, takie jak SEMA Uniwersytetu Carnegie-Mellon lub określone normy ISO . Małe firmy produkujące oprogramowanie będą czasami stosować mniej sformalizowane podejście. Każda organizacja wypracowuje swój własny styl, który leży gdzieś pomiędzy totalną technokracją (gdzie wszystko jest określone przez liczby) a totalną anarchią (gdzie w ogóle nie ma liczb). Niezależnie od tego, w którą stronę pójdzie organizacja, biorą pod uwagę piramidę opisującą koszt i ryzyko wprowadzenia zmian w już rozpoczętych procesach rozwojowych:

piramida przedstawiająca ryzyko i czasowy koszt zmiany

Zobacz też

  1. ^ „Czym jest dziś firma programistyczna?” . RedMonk. 2014 . Źródło 2 czerwca 2017 r .
  2. ^ Proces oprogramowania: zasady, metodologia i technologia Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
  3. ^ Greenlit: opracowywanie pomysłów na telewizję opartą na faktach / rzeczywistości od koncepcji do prezentacji, s. 12
  4. ^ Zarządzanie udanymi projektami z PRINCE2
  5. ^ Podręcznik użytkownika do przewodnika PMBOK
  6. ^ Planowanie ekstremalnego programowania
  7. ^ Zwinne zarządzanie projektami ze Scrumem
  8. ^ Racjonalny, ujednolicony proces stał się łatwy: przewodnik dla praktyków po RUP
  9. ^ Microsoft Solutions Framework (MSF): kieszonkowy przewodnik