Jak mogę zastosować Six Sigma w środowisku programistycznym?

14

Jestem programistą Java, ale zostałem poproszony o nauczenie się stosowania Six Sigma w celu zwiększenia zysków naszej organizacji. Czytałem, że Six Sigma może być stosowana we wszystkich środowiskach, ale interesują mnie niuanse zastosowania jej w rozwoju oprogramowania.

Jakie koncepcje Six Sigma można zastosować w środowisku programistycznym i jak mogę je skutecznie zastosować?

Rozumiem, że Six Sigma koncentruje się na:

  • identyfikowanie i usuwanie pierwotnych przyczyn wad
  • minimalizowanie zmienności w stosowaniu procesów produkcyjnych lub biznesowych

Wydaje mi się, że te koncepcje można zastosować w tworzeniu oprogramowania, ale czy można je skutecznie zastosować w cyklu rozwoju oprogramowania (SDLC)?

Dinesh Kumar
źródło
11
Gdzie odkryłeś, że six-sigma „pasuje do wszystkich środowisk”? Został opracowany bardzo specjalnie do masowej produkcji obiektów fizycznych - nie oprogramowania.
Angelo
5
Ponownie otwieram to pytanie, ponieważ nie trzeba go przenosić. Zarządzanie projektami oprogramowania jest tutaj tematyczne, ale Six Sigma jest ściślej związany z poprawą jakości i procesami, które również są tutaj tematyczne. Ponadto istnieje wiele prac nad omówieniem zastosowania Six Sigma w projektach oprogramowania i doskonaleniu procesów oprogramowania (w tym połączenie Six Sigma i CMMI oraz Six Sigma i metod zwinnych). Zastosowanie Six Sigma do oprogramowania różni się od zastosowania go w środowisku produkcyjnym, dlatego to pytanie wymaga specjalistycznej wiedzy programisty.
Thomas Owens
5
@Angelo Mimo że Six Sigma została pierwotnie zaprojektowana dla środowiska produkcyjnego, wiele pracy włożono w rozwój oprogramowania. Wyszukiwanie wyrażeń, takich jak „zwinny six sigma” i „cmmi six sigma”, wymaga dużo pracy w tym obszarze.
Thomas Owens
5
Musiałem przejść pierwsze szkolenie z zakresu sześciu sigma i chociaż moja firma za to zapłaciła, chciałbym odzyskać swój czas. Instruktor nie miał pojęcia, ćwiczenia były zabawnymi zabawkami, ale ostatecznie bezcelowe. Six Sigma dotyczy statystyki i ma zastosowanie do głupich, powtarzalnych, dobrze zdefiniowanych zadań, które często są zlecane robotom. Pisanie dobrego oprogramowania to proces twórczy. Six Sigma pomaga dobrym inżynierom oprogramowania tak samo, jak wykłady z rachunku różniczkowego pomogłyby Tomowi Cruise'owi działać. Sam fakt, że zadałeś to pytanie, wyklucza cię ze współpracy ze mną lub moimi kolegami.
Job
4
@ThomasOwens to NARQ, nie nie na temat. To połowa sondażu / połowa LMGTFU
Jimmy Hoffa

Odpowiedzi:

15

Podstawowe działania Six Sigma są przechwytywane przez akronim DMAIC , który oznacza: Definiuj, Mierz, Analizuj, Ulepsz, Kontroluj . Stosujesz je do procesu, który chcesz ulepszyć: zdefiniuj proces, zmierz go, użyj pomiarów, aby sformułować hipotezy dotyczące przyczyn problemów, wdrożyć ulepszenia i upewnić się, że proces pozostaje statystycznie „pod kontrolą”.

W przypadku oprogramowania proces ten obejmuje cykl życia oprogramowania (SDLC) lub jego część. Prawdopodobnie nie próbowałbyś zastosować zasad Six Sigma do całego SDLC (a przynajmniej nie początkowo). Zamiast tego szukałbyś obszarów, w których uważasz, że masz problem (np. Nasz wskaźnik wad jest zbyt wysoki; zbyt wiele regresji; nasz harmonogram przepada zbyt często; zbyt wiele nieporozumień między deweloperami a klientem itp.). Powiedzmy na razie, że problem polega na tym, że co tydzień produkuje się (lub przynajmniej zgłasza) zbyt wiele błędów. Zdefiniuj więc proces tworzenia oprogramowania / tworzenia błędów. Następnie zaczniesz zbierać dane, takie jak liczba wierszy kodu pisanych każdego dnia, częstotliwość zmian wymagań, liczba godzin spędzanych przez każdego inżyniera na spotkaniach,

Następnie patrzysz na dane i próbujesz dostrzec wzorce. Być może zauważysz, że zespół inżynierów A dotrzymuje każdego wyznaczonego terminu, a często nawet kończy zadania wcześniej! Początkowo drużyna B nie wydaje się całkiem taka na piłce - nie dotrzymuje terminów o dzień lub dwa co najmniej o połowę czasu, a czasami spóźnia się o tydzień lub dłużej. Zarząd postrzega zespół B jako problem i stara się go zmienić. Jednak bliższe spojrzenie na dane pokazuje, że wskaźnik błędów w zespole B jest znacznie niższy niż w zespole A, a ponadto zespół B jest często proszony o naprawienie błędów, które można przypisać zespołowi A, ponieważ kierownictwo uważa, że ​​zespół A jest zbyt cenny, aby wydać dużo czasu na utrzymanie.

Więc co robisz? Korzystając z zebranych danych i przeprowadzonej analizy, sugerujesz zmianę: zespół A i zespół B naprawią swoje własne błędy. Z błogosławieństwem kierownictwa (i przeciwko gwałtownej opozycji drużyny A) wprowadzacie tę zmianę. Następnie kontynuujesz zbieranie danych i kontynuujesz analizę danych, aby sprawdzić, czy zmiana coś zmieniła. Powtarzaj ten cykl pomiaru / analizy / wdrożenia, aż wskaźnik błędów zostanie uznany za akceptowalny. Ale jeszcze nie skończyłeś. W rzeczywistości nigdy nie skończyłeś ... musisz ciągle mierzyć współczynnik błędów i sprawdzać, czy wskaźnik błędów pozostaje w dopuszczalnym zakresie, tj. Jest statystycznie „kontrolowany”.

Zauważ, że nie ma tu nic, co byłoby specyficzne dla rozwoju oprogramowania, poza specyfiką ulepszanego procesu, rodzajami zbieranych danych itp. Działania, których używasz do ulepszania procesu tworzenia oprogramowania, są takie same jak te, które „ d używać do procesu produkcji widgetów, mimo że tworzenie oprogramowania różni się znacznie od produkcji widgetów. Wszystko to oznacza, że ​​musisz zachować zdrowy rozsądek w rodzajach celów wyznaczonych dla twojego procesu.

Caleb
źródło
1
W rzeczywistości metodologia Six Sigma bardziej związana z tworzeniem oprogramowania to DMADI (Definiuj, Mierz, Analizuj, Projektuj, Implementuj), tyle że powtarzamy MADI w tworzeniu oprogramowania. Ludzie z tymi „pasami” nazywają to Lean Six Sigma DMADI, ale ja nazywam to zwinnym.
Tae-Sung Shin
Ważne jest, aby odróżnić ulepszenie samego procesu tworzenia oprogramowania od ulepszania opracowywanego oprogramowania. Opisałem ten pierwszy i biorąc pod uwagę zastosowanie Six Sigma do SDLC, myślę, że o to pytał OP; Komentarz Tae-SungShina wydaje się być skierowany bardziej na to drugie i zgadzam się, że proces ulepszania samego oprogramowania jest nieco inny. Wiele napisano o metodach tworzenia oprogramowania, więc nie będę próbował tego tutaj robić.
Caleb
-3

Jak wspomniano @Peter

Zastosowanie Six Sigma w tworzeniu oprogramowania zapewnia ciągłą poprawę w rozwoju oprogramowania. Zastosowanie szóstej sigmy w rozwoju oprogramowania powoduje szybką integrację i testowanie oprogramowania, pomaga stworzyć oprogramowanie wolne od błędów i pomaga w bardziej wydajnym zarządzaniu programem.

Mogę podać prosty scenariusz, pracowałem dla firmy z branży lotniczej. Istnieje zespół, który projektuje obwody dla samolotów. Napotkali oni wiele trudności w projektowaniu obwodów dla skomplikowanych samolotów. Z tego powodu nie dotrzymali terminów, mimo że mieli doświadczonych projektantów. Analizowałem ich pracę i zauważyłem, że za każdym razem rozwijają układy od zera. Zaprojektowałem więc oprogramowanie, które będzie śledzić ich uprzednio zaprojektowane obwody, a gdy tylko będą miały nowe samoloty, będą korzystać z mojego oprogramowania i wybierać wcześniej zaprojektowane samoloty, które mają podobne obwody i używają ich z niewielkimi modyfikacjami. Ponieważ obwody te były wcześniej projektowane i testowane na rzeczywistych samolotach, mogą teraz bardziej skupiać się na nowych obwodach.

To tylko scenariusz, w którym śledziłem proces SIX Sigma, aby zebrać wszystkie dane o ich błędach i przeanalizować, jakie są tego przyczyny. Następnie ulepsz je za pomocą mojego oprogramowania.

rajkumarts
źródło
4
Nie jest tak, że sześć sigma jest świetnych; to dlatego, że kierownik, który pozwolił swoim pracownikom projektować obwody od zera, powinien był zostać zwolniony.
Job
2
lol .. ale ten sam menedżer poprosił o przestrzeganie procedury Six Sigma, kiedy zaproponowałem to oprogramowanie.
Rajkumarts
-4

Zastosowanie Six Sigma w rozwoju oprogramowania nazywa się Software Six Sigma. Six Sigma jest zasadniczo opracowany do produkcji, w procesie produkcyjnym pomaga firmom poprawić dostawę, jakość produktu przy niskim koszcie. To samo może dotyczyć również tworzenia oprogramowania.

Zastosowanie Six Sigma w tworzeniu oprogramowania zapewnia ciągłą poprawę w rozwoju oprogramowania. Zastosowanie szóstej sigmy w rozwoju oprogramowania powoduje szybką integrację i testowanie oprogramowania, pomaga stworzyć oprogramowanie wolne od błędów i pomaga w bardziej wydajnym zarządzaniu programem.

Jednak oprogramowanie Six Sigma jest nową koncepcją, której potrzebujesz szkolenie od właściwych ludzi. Pomoże Ci w tym skuteczny program treningowy Six Sigma. W przypadku internetowego szkolenia Six Sigma na temat środowiska programistycznego sugerowałbym http://www.6sigma.us /. Sugeruję je na podstawie rekomendacji otrzymanej od innej firmy.

Piotr
źródło