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:
- Istnieją firmy, które sprzedają gotowe komercyjne produkty (COTS), takie jak Outlook , Word i Excel firmy Microsoft, Acrobat, Illustrator i inne narzędzia do projektowania firmy Adobe Systems lub aplikacje Google, takie jak Chrome.
- Wiele firm świadczy usługi rozwoju oprogramowania i ma strukturę do tworzenia niestandardowego oprogramowania dla innych firm i firm.
- Firmy produkujące specjalistyczne komercyjne oprogramowanie gotowe, takie jak Panorama , Hyperion i Siebel Systems
- Firmy oferujące oprogramowanie jako usługę ( SaaS ), takie jak usługi poczty e-mail Google Gmail, Voice i Mapy oraz firmy takie jak Salesforce i Zendesk.
- Technologia, która mobilizuje media społecznościowe, takie jak Facebook , LinkedIn , Instagram , Twitter i Parler .
- Istnieją również inne rodzaje produktów SaaS firm świadczących usługi infrastruktury IT i usługi Cloud Computing, takie jak Amazon Web Services (AWS) , Microsoft Azure Cloud Services i usługi hostingowe GoDaddy.
- API jako usługa, która umożliwia zewnętrznym programistom interakcję z oprogramowaniem firmowym, takim jak Google Geo Location API, Google Calendar API itp.
- Firmy produkujące komponenty oprogramowania , takie jak Syncfusion , DevExpress, Telerik UI, Kendo UI i Dundas
- Dostawca usług aplikacji, taki jak Salesforce
- Firmy produkujące oprogramowanie na zamówienie dla branż wertykalnych lub określonych regionów geograficznych
- Niezależni dostawcy oprogramowania (ISV) , którzy tworzą, opracowują i sprzedają oprogramowanie konsumenckie lub korporacyjne używane przez użytkowników końcowych
Wszystkie z nich można podzielić na jedną lub wiele z następujących kategorii:
- kontraktowy - gdy firma programistyczna ma kontrakt na dostarczenie określonego oprogramowania z zewnątrz ( outsourcing oprogramowania )
- rozwój produktu - gdy wytwarza gotowe do użycia, pakietowane oprogramowanie; Komercyjny z półki
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:
- Analitycy biznesowi , którzy definiują potrzeby biznesowe rynku
- Twórcy oprogramowania , którzy tworzą specyfikację techniczną i piszą oprogramowanie
- Testerzy oprogramowania , którzy odpowiadają za cały proces zarządzania jakością
W większych firmach programistycznych stosuje się większą specjalizację i dość często występują również:
- Autorzy techniczni , którzy piszą całą dokumentację , taką jak podręczniki użytkownika
- Specjaliści ds. wydania, którzy są odpowiedzialni za zbudowanie całego produktu i wersjonowanie oprogramowania
- Projektanci doświadczeń użytkownika , którzy tworzą architekturę projektu w oparciu o wymagania biznesowe, badania użytkowników i wiedzę z zakresu użyteczności
- Projektanci graficzni , którzy zwykle są odpowiedzialni za projekt graficznego interfejsu użytkownika .
- Inżynierowie utrzymania ruchu, którzy stoją za dwiema, trzema lub więcej liniami wsparcia
- Konsultanci są odpowiedzialni za uruchomienie rozwiązania, zwłaszcza jeśli wymagana jest specjalistyczna wiedza. Przykładami tego są: budowanie wielowymiarowych kostek w oprogramowaniu do analizy biznesowej , integracja z istniejącymi rozwiązaniami oraz wdrażanie scenariuszy biznesowych w oprogramowaniu do zarządzania procesami biznesowymi .
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:
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.
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ć:
- model kaskadowy , w tym metodologie zarządzania projektami, takie jak PRINCE2 czy PMBoK
- zwinne tworzenie oprogramowania , takie jak Extreme Programming i SCRUM
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:
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
- Narzędzia do modelowania, takie jak Sparx Systems Enterprise Architect lub IBM Rational Rose
Programiści
- Systemy kontroli wersji i procedury wersjonowania oprogramowania
- Narzędzia do analizy kodu i standardy kodowania , sprawdzane ręcznie lub automatycznie
- Mechanizmy wdrażania
Testerzy
- Systemy śledzenia błędów
- Narzędzia do automatyzacji testów
- Narzędzia do testów wydajności i warunków skrajnych
Kierownicy projektów/produktów
- zarządzania projektami w przedsiębiorstwie (EPM).
- Zarządzanie portfelem produktów (PPM)
- Systemy i procedury zarządzania zmianą
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:
Zobacz też
- ^ „Czym jest dziś firma programistyczna?” . RedMonk. 2014 . Źródło 2 czerwca 2017 r .
- ^ Proces oprogramowania: zasady, metodologia i technologia Autor: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
- ^ Greenlit: opracowywanie pomysłów na telewizję opartą na faktach / rzeczywistości od koncepcji do prezentacji, s. 12
- ^ Zarządzanie udanymi projektami z PRINCE2
- ^ Podręcznik użytkownika do przewodnika PMBOK
- ^ Planowanie ekstremalnego programowania
- ^ Zwinne zarządzanie projektami ze Scrumem
- ^ Racjonalny, ujednolicony proces stał się łatwy: przewodnik dla praktyków po RUP
- ^ Microsoft Solutions Framework (MSF): kieszonkowy przewodnik