Czy w opisie zadania programisty właściwe jest, aby „bezbłędnie” było kluczowym wyjściem? [Zamknięte]

10

W ramach przeglądu wszystkich opisów stanowisk moja firma postanowiła uwzględnić jako kluczowe dane wyjściowe:

tworzenie stron internetowych ukończone na czas, w ramach specyfikacji i bezbłędnie

Biorąc pod uwagę, że specyfikacje regularnie się zmieniają, nie ma formalnego procesu kontroli zmian, a środowiska są, powiedzmy, trochę nieprzewidywalne, jak realistyczny i rozsądny jest ten KPI?

Phil.Wheeler
źródło
20
Całkowicie nierealne. Prawdopodobnie zostało to napisane przez kogoś, kto pracował z jednym zbyt wieloma złymi programistami. Ale może to być także wina złego zarządzania. Podano za mało informacji.
Mark Canlas,
11
Deweloper, który pojawi się w swoim życiorysie „zapisuje kod bezbłędny”, będzie na tyle niedorzeczny, by dopasować się do pozycji.
P.Brian.Mackey,
12
Jedynym kodem, który można udowodnić, że nie zawiera żadnych błędów i osiąga swój cel, jest pusta baza kodu, która twierdzi, że nic nie robi.
Unholysampler
8
pfft ... wygląda jak klauzula kozła ofiarnego, która może łatwo ludziom. „Niestety, nie dotrzymałeś warunków umowy o pracę ... zwolnimy cię bez powiadomienia lub z innego powodu. Tootles.”
Steven Evers,
5
Oczywiście nie zawiera błędów. Kompilator mówi: 0 błędów, 0 ostrzeżeń. To całkowicie spełnia wymagania stanowiska :-)
Ferruccio,

Odpowiedzi:

21

„Bez błędów” jest zdecydowanie zbyt subiektywne . „Niewypełnione żądanie funkcji” jednego człowieka jest „błędem” innego człowieka. Bardziej odpowiednie byłoby coś w rodzaju „Powinny zasadniczo spełniać specyfikacje projektowe”. Nigdy nie widziałem tego, co opisujesz w opisie stanowiska. Widziałem to dla pracy kontraktowej , ale nie dla pracowników.

Grandmaster B.
źródło
9

Zajmę stanowisko przeciwne do większości odpowiedzi i powiem, że jest to absolutnie rozsądne i realistyczne.

Czy cały rozwój zostanie ukończony na czas? Oczywiście, że nie, nie zawsze.

Czy cały rozwój zostanie ukończony zgodnie ze specyfikacją? Chciałbyś mieć taką nadzieję, ale czasami to po prostu nie będzie możliwe i będziesz musiał oznaczyć odchylenie od niemożliwego lub sprzecznego ze sobą specyfikacji.

I czy cały rozwój będzie wolny od błędów? Nigdy .

Ale po to jest KPI. Jest to coś, co można zmierzyć i za pomocą którego można śledzić wydajność i postęp.

Jeśli specyfikacje regularnie się zmieniają, nie ma formalnego procesu kontroli zmian, a środowiska są nieprzewidywalne, trudno będzie utrzymać tę liczbę na poziomie „bezbłędnym”. Ale to wyzwanie jest twoją pracą i jest to praca, którą, miejmy nadzieję, wykonasz całkiem dobrze - a nawet lepiej w przyszłym roku, gdy zdobędziesz więcej praktyki w zarządzaniu własnym smakiem chaosu twojej firmy.

Licznik pytanie: co KPI będzie Ci zaproponować dla programisty? To trudne. Wiele tego, co robimy, jest trudnych do zmierzenia.

Carson63000
źródło
4
Podstawa kodu o dowolnym znacznym rozmiarze jest praktycznie niemożliwa do zagwarantowania jako „bezbłędna”, ponieważ może wystąpić błąd, którego po prostu nie znajdziesz. Co to jest błąd? Błąd? Jak to jest mierzone?
filozofodad
1
@ philosodad - o to mi chodzi. Nie będzie wolny od błędów . Ale jeśli w tym roku x błędów zostanie znalezionych w kodzie, który napisałeś, a w przyszłym roku x-4 , poprawiłeś swój KPI. Jeśli chodzi o błąd, to naprawdę jest to kwestia dla Twojej organizacji i bez wątpienia taki, który spowoduje, że niektóre argumenty będą dotyczyły „błędu” vs. „nieudokumentowanego wymagania” vs. „zmienionego wymagania” vs. „różnicy zdań”.
Carson63000,
3
@ Carson63000: ale o to mi chodzi! KPI, który z pewnością wywoła kilka argumentów, doprowadzi do nieuniknionych sporów między stronami i niejasno określa kluczową miarę, jest co najmniej problematyczny. Na przykład, jeśli „błąd” jest miarą subiektywną, można przewidzieć, że menedżerowie zdefiniują błędy w dół, aby wyglądali lepiej, dzięki czemu wszyscy będą mieli obniżony poziom błędu dla dokładnie takiej samej wydajności. Ale nowy menedżer może zdefiniować to w górę, a następnie w dół, aby pokazać, w jaki sposób „poprawili” ten sam dokładny wynik.
philosodad
3
Lepiej byłoby mieć cel bez krytycznych błędów (zdefiniować krytyczny). Lub mieć poprawiający się poziom błędu. Co więcej, te rzeczy powinny być celem rocznej oceny wyników, a nie częścią opisu stanowiska.
szybko_niedz.
3
Wskaźniki KPI dotyczą celu, który nie tylko nie jest w pełni osiągnięty, ale może zostać również przekroczony. Używasz go do pomiaru, czy osiągasz gorsze lub lepsze wyniki niż wskaźnik KPI. Nie rozumiem, jak można przekroczyć „bezbłędnie”. Dlatego nawet jeśli jest to wskaźnik KPI, ma wady. Lepszym KPI byłby pomiar liczby błędów, raporty testowe przesłane z kodem, który napisałeś, co spowodowało rzeczywiste zmiany kodu itp.
Marjan Venema
4

Jeśli jest to opis zadania, nie martwiłbym się tym zbytnio, ponieważ praca nad kodem bezbłędnym jest częścią typowego zadania programisty (nawet jeśli nigdy go nie osiągniemy).

Jednak jako wskaźnik KPI jest zbyt daleko idący, ale nie obwiniaj osoby, która go zasugerowała, jeśli nie są programistami. Po prostu wyjaśnij, że to stwierdzenie wyznacza cel, który może być niepożądany dla organizacji. Oznacza to, że „bezbłędny” jest niezwykle wysokim standardem dla oprogramowania, które kosztowałoby fortunę w rzeczywistości. Wyjaśnij, że dobrze zarządzany projekt oprogramowania wymaga podjęcia decyzji, czy każda wada jest warta poświęcenia cennego czasu programistom.

Oto przykład, który ładnie to podkreśla.
Programista odkrywa, że ​​w naszym oprogramowaniu występuje błąd „roku 3000” i przestanie on działać po 31.2999 grudnia. Rozwiązanie problemu zajmie 6-8 miesięcy. W oparciu o KPI zachęca się do podjęcia tego projektu, mimo że nie ma on realnej wartości dla firmy.

Okej, więc ten przykład jest trochę ekstremalny, ale w każdym projekcie oprogramowania odkryje się dosłownie dziesiątki małych defektów, które podobnie nie generują ROI wymaganego do ich naprawy. Jeśli zamiast tego KPI miał sugerować, że programista nigdy nie wprowadza usterki, to czy wydaje się rozsądne, aby ŻADNY pracownik utrzymywał standard, aby nigdy nie popełniać błędu w wykonywaniu swojej pracy?

JohnFx
źródło
Wydaje się mało prawdopodobne, abyś miał KPI, który obejmowałby „naprawianie usterek, które zostały uznane przez kierownictwo za niestanowiące problemu i nie wymagające naprawy”.
Carson63000,
@Carson - nie w niektórych dużych firmach, o których wiem. Głupie cele są częścią ich sposobu prowadzenia biznesu.
szybko_niedz.
3

Nie

To nie tylko niewłaściwe, ale i absurdalne

Testy mogą tylko udowodnić istnienie błędów, a nie ich brak, dlatego każdy program napisany w ramach tego zlecenia musiałby zawierać rygorystyczny dowód poprawności ... i 100% pokrycia testowego

„Strzeż się błędów w powyższym kodzie; udowodniłem tylko, że jest poprawny, a nie wypróbowałem”. - D. Knuth
Steven A. Lowe
źródło
Wskaźniki KPI są miarą sukcesu i postępu w osiąganiu celu. Nie są to przełączniki binarne „bezbłędny kod = sukces, jeden pojedynczy błąd = awaria, jesteś zwolniony!”
Carson63000,
@Carson: „bezbłędny” to nie KPI, to fantazja.
Steven A. Lowe,
1
Brzmi dla mnie jak ścieg. Wrzuć coś niemądrego do JD, a gdy tylko zajdzie taka potrzeba, osoba może zostać zwolniona, ponieważ nie działa tak, jak wymaga JD.
szybko_niedz.
3

Oczywiście zadaniem i odpowiedzialnością każdego programisty jest pisanie kodu bezbłędnego. To całkowicie uzasadnione oczekiwanie. Jak możesz zostać profesjonalnym programistą, jeśli wydasz kod, który nie działa? Jak możesz uważać się za profesjonalnego programistę, jeśli wydajesz kod, o którym nie wiesz, że działa?

Jeśli zatrudnisz malarza, oczekujesz, że dobrze wykona swoją pracę. Oczekujesz, że wynik jego pracy będzie wolny od błędów. Jeśli wystąpią błędy, oczekujesz, że weźmie odpowiedzialność za te błędy i naprawi je bezpłatnie. Co więcej, jeśli błędy kosztują twoje pieniądze, oczekujesz, że zwróci ci pieniądze. Dlaczego masz takie oczekiwania? Ponieważ malarz jest profesjonalistą.

Programiści lubią obwiniać innych za swoje błędy. „Mój program ma błędy z powodu wymagań, harmonogramu lub Księżyca w ósmym domu”. Ale tak naprawdę nikogo innego nie można winić. Jeśli program ma błędy, wy je tam umieścić.

Nasz zawód nigdy nie będzie zawodem, dopóki programiści nie zdadzą sobie sprawy, że złotówka się z nimi skończy. Że one są odpowiedzialne za jakość swoich programów.

Czy wiesz, dlaczego firmy stworzyły działy kontroli jakości oprogramowania? Ponieważ programiści nie wykonywali swoich zadań! Programiści wydawali tak dużo bzdur, że firmy musiały tworzyć zupełnie nowe działy, aby je sprawdzić.

Jak długa jest lista błędów? Profesjonalnie jest mieć tysiące błędów w bazie danych błędów? Z całą pewnością tak nie jest. Jest to odbicie złego zachowania, złej dyscypliny i, szczerze mówiąc, hańby.

Nigdy nie będziemy zawodem, dopóki nie uświadomimy sobie, że naszym zadaniem jest upewnienie się, że QA niczego nie znajdzie.

Wujek Bob.
źródło
+1, ale wolę myśleć o braku błędów jako o osobistym celu niż o rzeczywistości. Wszyscy powinniśmy to zrobić, ale jeśli nie otrzymamy nieskończonych zasobów, nie dotrzemy tam, przynajmniej nie biorąc pod uwagę, jak teraz tworzymy oprogramowanie.
rjnilsson
Nie mogłem mocniej zgodzić się z sentymentami wuja Boba. To w dużej mierze kwestia profesjonalizmu.
Johnsyweb,
1
To stanowisko jest nieco skomplikowane przez fakt, że moje kierownictwo jest absolutnie jasne , że wolą, żebym dał im teraz błędne oprogramowanie, niż poprawiać oprogramowanie później. Nie sądzę, żebym był sam w tej sytuacji.
Tom Anderson,
3

Niestety, brzmi to po prostu dla nich sposób na „zakrycie wszystkich baz”, i wyraźnie nie jest to zalecane i może wywołać rozczarowanie wśród programistów.

Jednak powiedziawszy to, naprawdę ma to znaczenie tylko wtedy, gdy zobaczysz, co robią z tym tekstem w okresie przeglądu. Więc nie reaguj zbyt szybko - na końcu tunelu może być zdrowy rozsądek.

Stephen Bailey
źródło
Biorąc pod uwagę moje obecne środowisko pracy, byłbym bardzo podejrzliwy, jak zastosują to sformułowanie.
Phil.Wheeler,
2

„Bezbłędnie” jak w „perfect?” Jak w „napisanym przez Boga i aniołów, a nie ludzi?” (mówimy tutaj o logice programu i być może błędach logiki sprzętowej)

Nie mogę rzetelnie powiedzieć nawet o jednym wierszu kodu, że jest bezbłędny. To dlatego, że my, ludzie, nie możemy udowodnić żadnych negatywnych hipotez!

Najlepsze, co mogę powiedzieć, to to, że prawdopodobieństwo błędu to liczba od 0 do 1. Osiągam tę liczbę poprzez dobrze lub źle zdefiniowane i źle lub źle zrozumiane zasady opracowywania i testowania oprogramowania; według liczby odnośnych linii oprogramowania źródłowego; rozumiejąc, jak dobrze lub słabo kandyduję, biedny kundel, stosuje te zasady przy tworzeniu tych wierszy kodu; i więcej.

I to zrozumienie mogę wyrazić jedynie jako prawdopodobieństwo. Zatem termin „bez błędów logicznych” oznacza prawie nic.

Gdybym zobaczył reklamę inżyniera oprogramowania, który wyprodukował „bezbłędny” kod, natychmiast zastosowałbym go lub od razu uciekłem: firma nie zastanawiała się zbytnio nad tym, jak się rozwija, testuje i dostarcza swoje oprogramowanie . Będzie to więc świetna okazja lub niekończący się koszmar.

Jednak z dowolnego oprogramowania mogę łatwo - i muszę - powiedzieć, że oczekuję kodu, który nie zawiera błędów wykraczających poza to podstępne, mętne, logiczne oczy: kod, który kompiluje się i łączy bez błędów lub ostrzeżeń; to jest „prawidłowy HTML” lub „prawidłowy css”; JavaScript (powiedzmy), który nie generuje niewyjaśnionych komunikatów o błędach lub błędów przeglądarki. Tę część mogę bezpośrednio zmierzyć i oznaczyć czarno-biało na wykresie.

Ta część jest łatwa jak ciasto. Każdy może zrobić to .

Hej, powodzenia w wyszukiwaniu :-)

Pete Wilson
źródło
1

Czy jestem głupi, czy „błąd” nie oznacza „fatalnego komunikatu kompilatora w postaci niekompilowalnego kodu”?

Według tej definicji jest to bardzo rozsądny wymóg ...

Chris Browne
źródło
1
Prawdziwe. Nieprawidłowy tekst w stopce strony może być błędem, ale z pewnością nie jest to ta sama klasa błędów, co coś, co uniemożliwia załadowanie strony i wyrzuca błędy środowiska wykonawczego z powrotem do użytkownika.
FrustratedWithFormsDesigner
W tworzeniu stron internetowych „błąd” może oznaczać wiele rzeczy. Wyświetlanie niewłaściwych cen dla wszystkich produktów może być uważane za poważny błąd, ale niekoniecznie uniemożliwia to uruchomienie niczego i może nie zgłaszać żadnych problemów w dziennikach serwera.
Simon B
W ciągu czterech lat od napisania tego komentarza zrobiłem o wiele więcej tworzenia stron internetowych i całkowicie się z tym zgadzam - choć niezwykle, będę trzymać się mojej odpowiedzi sprzed 4 lat i powiedzieć, że o to mi chodziło make polega na tym, że definicja „błędu” jest dowolna, a dla (bardzo) wybranych definicji jest to uzasadniony wymóg.
Chris Browne