2009-06-04 8 views
10

W innej firmie deweloperskiej niedawno zobaczyłem wykresy priorytetów zarządzania projektem/obciążenia na ścianie.Jakie są pięć priorytetów dotyczących rozwoju oprogramowania?

Jestem przyzwyczajony do maksymy "Dobry, szybki, tani: wybierz dwa". Ale ten system wykorzystał pięć wskaźników. Ci, pamiętam:

  • wolny od błędów
  • On Time
  • Feature Kompletna
  • sprawie budżetu

Ale nie mogę zapamiętać piąty. Ktoś?

W tym systemie funkcja zgłaszania cech nadała każdemu z pięciu priorytetów ocenę 1 - 5, przy czym 5 oznaczało "bardzo ważne", a 1 oznaczało "nieważne". Żadne dwa priorytety nie mogą być takie same. Działa to bardzo ładnie, ponieważ jeśli chcesz go bezbłędnie, a funkcja jest kompletna, wtedy budżet nie oznacza dla ciebie tyle - ale może oznacza to dla ciebie więcej niż czas działania.

Jeszcze raz brakuje mi piątego priorytetu.

+7

Przy sposobie zarządzania wieloma organizacjami, naprawdę powinno być "Dobry, szybki, tani: Wybierz jeden". –

+2

James: Wybierz jednego ... i módl się –

+2

Czy mogę życzyć sobie jeszcze pięciu życzeń? – Nosredna

Odpowiedz

5

Istnieje prawdopodobnie dziesiątki wersji takim schemacie n-branży.

Widziałem ją jako:

  • Bug Darmowe
  • On Time
  • Feature Kompletna
  • sprawie budżetu
  • Z najlepszego zespołu

sformułowanie i nacisk są moje, ale bas ically, autor dodał, że tak, popychanie swojego zespołu do szalonych nadgodzin jest częścią rzeczy, które możesz poświęcić, ale jak jakość lub budżet, w końcu płacisz za to w jakiś sposób.

+0

Yup, zobacz moją odpowiedź. "Zadowolony zespół" jest z pewnością jednym z oryginałów, ale nie sądzę, aby wszedł w przypadek użycia, który widziałem. To było skierowane do wnioskodawcy i było częścią analizy biznesowej z klientem (proxy), który naprawdę nie dba o to, czy zespół programistów był szczęśliwy (niestety). – RickMeasham

+0

Wybór tego jako odpowiedzi, chociaż wrócę i skomentuję gdy już mam rzeczywisty przypadek użycia, widziałem, że – RickMeasham

9

Mam nadzieję, że będzie to miało coś wspólnego z "konserwowalnym". W przeciwnym razie masz fajny v1, ale nic nie wskazuje na to, że kiedykolwiek będziesz w stanie dodać jedną funkcję bez utraty całej rzeczy.

Poza tym są rzeczy takie jak "performant", które mogą znaleźć się pod "pełnymi funkcjami" w zależności od tego, czy liczy się prędkość jako funkcja, czy nie. (Niektórzy ludzie tutaj w Google mają koszulki z „fast jest moja ulubiona funkcja” na ...)

także rzeczy do rozważenia:

  • dobrze udokumentowane (podlega utrzymaniu myślałem od dewelopera? dokumentacja, ale może tu również być dokumentacja użytkownika)
  • Wydajna (nie tylko jest wystarczająco szybka, ale potrzebuje tylko ZX Spectrum do obsługi wszystkich żądań wyszukiwania w Internecie)
  • Bezpieczne (nie wpisuje tweet numeru karty kredytowej klienta)
  • Przyjazne dla użytkownika
+0

Heh, nie sądzę, że to było tak, ponieważ jest to priorytet wewnętrzny dla zespołu programistów, a nie dla requestera :-D – RickMeasham

+1

Naprawdę? Rzadko zdarzało mi się w sytuacji, gdy ktoś dostał wszystko, co chciał, w pierwszej wydanej wersji i jest szczęśliwy, gdy mówi: "kodu nigdy więcej nie można dotknąć". Co najmniej * powinien * być priorytetem dla zgłaszającego. –

6

Mam zamiar nominować Extendable. (aka Maintainable, Future-Proofed.)

Powodem, dla którego można powiedzieć, Extendable jest to, że komunikuje się lepiej z właścicielem firmy, który określa. Kiedy mówisz "Maintainable", brzmi to dla osób niebędących deweloperami, tak jakbyś prosił ich o ustalenie priorytetu, jak łatwo jest doładować gaz i zmienić olej.

+1

@chaos, dzięki za doskonały punkt. Utrzymanie w oprogramowaniu różni się zasadniczo od łatwości konserwacji w innych obszarach inżynierii. Obejmuje on znacznie mniejszy udział w wykonywaniu codziennych obowiązków związanych z utrzymywaniem kodu, a także z możliwością dalszego rozszerzania i modyfikowania projektu oprogramowania. Jeszcze raz dziękuję, to prawdziwy klejnot. –

0

odpowiada potrzebom użytkownika?

2

Czy to, czego potrzebuje klient, a nie to, co uważał, że będzie mu potrzebne.

+0

Bwahahahah Podoba mi się – RickMeasham

0

Jako alternatywę:

Efficient

  • No dobra cecha kompletne oprogramowanie posiadające jeśli trwa wiecznie, aby to zrobić, lub wymaga trochę głupie sprzętu ....
1

Nie wiem co piąta może być, lub jeśli nie będzie to coś, co już sugeruje jedna z "głównych" czwórki, ale jest ładne wyjaśnienie tych czterech w rozdziale 7 "Planowanie ekstremalnego programowania", można zobaczyć niektóre strony here

+0

To naprawdę dobre napisanie na tych czterech. Dzięki za referencję, na pewno to wykorzystam. – RickMeasham

0

Dodam "USABLE". Użyteczność jest bardzo ważnym czynnikiem, o którym programiści często zapominają. Oprogramowanie o dobrej użyteczności zmniejsza wiele problemów na krzywej uczenia się użytkownika i jest "używane" bardziej i szybciej niż inne oprogramowanie o tych samych możliwościach, ale nie tak dobre pod względem użyteczności.

0

myślę, że to może być „dobrze udokumentowane”

1

Ahh ... wydaje się, że to, co widziałem, było oparte na Rob Thomsett's "Success Sliders". Chociaż ma siedem suwaków, to co widziałem, to tylko pięć (i wydaje się, że dwa priorytety mogą mieć ten sam wynik):

  1. Uczynienie interesariuszy zadowolonymi.
  2. spełnienia wymagań funkcjonalnych
  3. budżet Zgromadzenie
  4. terminowość
  5. wartość Dodawanie
  6. zapewnić dobrą jakość
  7. Making członkowie zespołu zadowolony

bym twierdzą, że 1 jest realizowane przez pomyślne ukończenie 2 - 6. Dobra jakość byłaby priorytetem bezbłędnym. Pozostaje nam więc "Dodawanie wartości" lub "Zadowolenie zespołu". Nie brzmi znajomo. Będę musiał skontaktować się z firmą i zapytać.

+0

1 jest spełniony tylko przez 2-6 IFF, specyfikacja funkcjonalna prawdziwie oddaje potrzeby interesariuszy. –

+0

W środowisku wodospadowym, tak. W środowisku zwinnym (a może i XP), specyfikacja jest ciągłą współpracą między scenicznymi – RickMeasham

0

Moja własna lista:

  1. Zapewnienie funkcjonalności biznesowych cele zostały spełnione.
  2. Dąż do modułowości i łatwości konserwacji.
  3. Unikaj pełzania zakresu.
  4. Utrzymuj dobre relacje z analitykami biznesowymi i kierownikami projektów.
  5. Nie spalaj mostów.

Chciałbym dodać, że priorytetem powinno być ustalenie, jakie są specjalności i obszary przyjemności każdego programisty, i postarać się je pomieścić. Nie należy udostępniać deweloperowi, który jest wirtuozem z WCF projektu zawierającego zmiany w interfejsie użytkownika, nie udostępnia programistom gier projektu SQL Datafix (chyba że w obu przypadkach wyraźnie o to poprosi).

Jeśli pamiętasz o tym, w czym ludzie są dobrzy, częściowo opierając się na ich wynikach i odpowiednio przypisując zadania, wykonają zadanie z większą pewnością skuteczności niż ktoś inny, dla którego dane zadanie jest nieznane lub niekorzystne terytorium.

0

Późna odpowiedź, jednak uważam, że istnieje coś do dodania do istniejących odpowiedzi. Uważam, że cała idea standardowego wykresu priorytetów jest bardzo ważna, jest niebezpieczna.

powszechnie akceptowane projektowe Wymiary

Ogólne porozumienie w zakresie zarządzania wydaje się, że projekt może być krojone na 4 wymiarach:

  • zakresu
  • czas
  • kosztować
  • jakość

Rzeczy zaczynają robić się niewyraźne, gdy spróbujesz dalej podzielić te wymiary, zmierzyć je lub spojrzeć na sposób, w jaki wpływają na siebie nawzajem, aby uzyskać priorytetyzację.

Współzależność

w oprogramowaniu zwykle oznacza zakres wymagań funkcjonalnych (co czyni oprogramowanie, a także to, czego nie ma robić) plus wszelkie wymagania pomocnicze niezbędne do wykonania dostawę oprogramowania dla klientów. Oczywiście zakres wpływa na czas projektu, koszty oraz jakość funkcjonalną i niefunkcjonalną.

Załóżmy, że firma ma ustalone okno możliwości pokonania konkurentów lub dostarczenia usługi i środków pieniężnych. Czas wyraźnie ma wyższy priorytet niż zakres; części systemu można wykonać poza oprogramowaniem.

Jednak w przypadku oprogramowania do kontroli silników rakietowych zasięg może być niezbywalny, a kiedy ma priorytet w miarę upływu czasu. W podobnym duchu istnieje współzależność między wszystkimi wymiarami.

Kompletne Odcinanie

wymiary mogą być krojone dalej: krótszy czas rozwoju kontra mniej skutecznego i efektywnego systemu (czas stracony w konserwacji i użytkowania oprogramowania), mniejszym kosztem rozwoju kontra wyższego całkowitego kosztu posiadania i krótszy czas życia (co prowadzi do mniejszego zwrotu z inwestycji), większa wszechstronność użycia w porównaniu z trybem trudnym do nauczenia.

Jakość zapewne plastry w kolejnych kategoriach najwięcej, z których wiele wiązać sprzeczne możliwości:

  • funkcjonalne:
  • Non-functional:
    • Użyteczność
    • Maintainability i projektowanie rozszerzalność
    • Wydajność
    • eksploatacyjnych i środowiskowych
    • (normy i inne) prawne zgodność
    • Kultury (internacjonalizacja, lokalizacja)
    • wyglądać i czuć
    • Zabezpieczenia
    • polityczna

a proces krojenia kawałek oprogramowania ekosystemu na kategorie mogą być nieograniczone. Istnieją również nieskończone sposoby mierzenia sukcesu lub porażki projektu oprogramowania. W tym satysfakcja interesariuszy, gdzie zespół deweloperski rzeczywiście ma również udział w projekcie, a tym samym liczy się jego satysfakcja.

Uproszczenie jest szkodliwy

projektowania oprogramowania jest wynikiem szeregu kompromis między tymi kategoriami. I tak jak przy gotowaniu dobrego posiłku, istnieją nieskończone sposoby łączenia składników, w zależności od okoliczności, wymagań klientów, alergii i dostępności składników.

Najlepiej uniknąć uproszczenia, umieszczając plakat na ścianie, gdzie Koszt zawsze ma wyższy priorytet niż Zakres, lub Utrzymanie jest ważniejsze niż Wygląd i odczucie. Zadaniem kierownika projektu jest pamiętanie o całym obrazie i udzielanie członkom zespołu wskazówek dotyczących codziennego podejmowania decyzji dotyczących priorytetów w zależności od okoliczności.

PM nie może być zastąpiony przez wykres na ścianie, ani dobry premier nie powinien próbować zlecić na zewnątrz esencji swojej pracy na kartce papieru.

+0

Wydaje się, że pominąłeś opis w pierwotnym pytaniu. Priorytety te są ustalane dla każdego projektu. A ich codzienne zmienianie byłoby ogromnie szkodliwe. Wyobraź sobie: Dzisiaj chcemy, aby każda funkcja została wykonana, a bycie na czas jest mniej zmartwieniem.Jutro musi być na czas i bezbłędnie, ale nie krępuj się, aby pominąć część funtionalności. Następnego dnia musi znaleźć budżet, niezależnie od funkcji, błędów i czasu. Po prostu nie możesz zmienić tych priorytetów. – RickMeasham

+0

RickMeasham, przepraszam, jeśli pominąłam opis oryginalnego quesitonu, ale od 3 lipca 2009 r. Wciąż nie wspomniano o oddzielnym zestawie priorytetów dla każdego projektu. Prawdopodobnie istotą mojej odpowiedzi jest to, że jakość oprogramowania nie sprowadza się tylko do "bezbłędnego", ani nie ogranicza się tylko do funkcji. –

+0

Każdy projekt to żywa istota, a codzienne priorytety dla poszczególnych zadań będą się znacznie różnić od priorytetów projektu. –

0

Zgodnie z obietnicą, oto lista miałem pierwotnie widziany:

  • Feature kompletny
  • On Time
  • sprawie budżetu
  • Bug Darmowe
  • dostosowana do potrzeb

Tak więc brakowało mi "Fit for Purpose", co jest zrozumiałe: różnica nce między tą a "pełną funkcją" jest trochę trudne do ustalenia.

Oto przykład przyjaciel dał mi:

Jako prosty przykład, jeśli stopy klienta Kompletność jak wysoko i pasują nawet oznaczałoby to, że chcą oni zarówno w katalogu produktów online i siłownia koszyk , nawet jeśli obie funkcje są bardzo szczątkowe. I odwrotnie, jeśli kompletność jest niska, a dopasowanie jest wysokie, klient może zaakceptować w pełni funkcjonalny katalog produktów w pierwszym wydaniu i brak możliwości koszyka na zakupy.

Powiązane problemy