Wszyscy więc słyszeliśmy o Programme Bill of Rights, a XP ma podobną koncepcję.
W dzisiejszych czasach powszechną skargą jest to, że dużo słyszymy o prawach ludzi, ale nie tyle o ich obowiązkach, więc co powinno być na liście obowiązków programistów. Są to rzeczy, które powinni robić, co mogą być dla nich niesmaczne, ale które oddzielają programistów działających profesjonalnie i odpowiedzialnie od tych, którzy tego nie robią.
Interesują mnie przede wszystkim te niesmaczne i te, które zwykle się nie zdarzają. To są te, których programiści unikają, a nie te, które 90% programistów naprawdę chce zrobić (takie jak zawsze refaktoryzacja i użycie kontroli źródła).
Co zatem powinno znajdować się w Karcie odpowiedzialności programistów?
development-process
Jon Hopkins
źródło
źródło
Odpowiedzi:
Programista jest odpowiedzialny za odepchnięcie złych wymagań zamiast ich ślepego ich wdrażania. Obejmuje to mówienie klientom, że to, czego chcą, jest droższe niż inne opcje lub wiąże się z określonym zestawem ryzyka. Obejmuje to również przekazywanie złych wiadomości w profesjonalny sposób - nie krzyczenie, nazywanie ludzi głupimi, sugerowanie, że są głupie lub inne dziecinne zachowanie. Jeśli odpycha, powinien mieć szereg powodów (więcej niż „Nie lubię SQL Servera i nie będę go używać”) oraz alternatywny plan przedstawienia.
Jednak programista jest również odpowiedzialny za przyjmowanie decyzji i korzystanie z narzędzi lub projektów, które mogą im się nie podobać, jeśli ich odpowiedź zwrotna nie zostanie zaakceptowana. Jeśli zażądano raportu w SSRS, dostarczenie go w Crystal Reports (którego klient może nie mieć) jest niedopuszczalne. Jeśli wymagane było rozwiązanie .net, dostarczenie go w Haskell jest niedopuszczalne. Jeśli nikt w zespole nie używa narzędzia lub języka, którego chcesz używać, nieprofesjonalne jest korzystanie z niego, jeśli kierownictwo nie zgadza się, że jest to najlepsze narzędzie do danego zadania.
Programista ma obowiązek przetestować swoją pracę. (To nie powinien być jedyny test, ale żaden profesjonalny programista nie powinien wysyłać kodu, którego nie przetestował). Obejmuje to testowanie nawet gałęzi kodu, których nie spodziewasz się zbyt często. Jeśli masz zestaw zagnieżdżonych IF, przetestuj wszystkie możliwe trasy.
Programista ma obowiązek łagodnie obsługiwać błędy i wyjątki oraz pisać komunikaty o błędach, które zobaczy użytkownik, które są profesjonalne i neutralne, a nie żarty i obelgi.
Programista ma obowiązek chronić prywatne dane, chronić własny kod, który pisze dla firmy oraz chronić użytkowników przed katastrofą (nawet własną) przed użyciem aplikacji.
Programista ma obowiązek upewnić się, że jego kod jest łatwy do utrzymania i że ma kontrolę nad źródłem.
Programista ma obowiązek koordynować z innymi, aby upewnić się, że jego zmiany nie wpływają negatywnie na to, co robią.
Programista ma obowiązek polecić klientowi najlepszy wybór narzędzi lub języków w fazie projektowania, a nie narzędzie / język, w którym chce się bawić i uczyć.
Programista ma obowiązek współpracować z całym odpowiednim personelem projektu, w tym z tymi, których nie lubi. Lubienie ludzi nie jest twoim obowiązkiem, praca z nimi i bycie grzecznym.
Programista ma obowiązek wyprodukować produkt, który spełnia wymagania określone w rozsądnych ramach czasowych. Jeżeli termin nie zostanie dotrzymany, on lub ona ma obowiązek poinformować o tym zarząd, gdy tylko będzie to znane.
Programista ma obowiązek poinformować kierownictwo projektu o przeszkodach w wykonaniu zadania. Nie mogą naprawić tego, o czym nie wiedzą.
Programista jest odpowiedzialny za wykonanie całego zadania, a nie tylko zabawnych, interesujących części. Każda praca ma nudne części, które wciąż trzeba wykonać. Obejmuje to między innymi karty czasu pracy i dodawanie elementów dyskusji do oprogramowania do zarządzania projektami. Zawiera rzeczy takie jak dokumentacja, przegląd kodu itp.
Programista ma obowiązek dowiedzieć się, jaką domenę biznesową wspiera, nie tylko koncepcje programistyczne.
Programista ma obowiązek aktualizować swoje umiejętności.
Kiedy programiści wpadają w błąd, ma obowiązek zrobić wszystko, co w jego mocy, aby rozwiązać problemy tak szybko, jak to możliwe. Może to obejmować przekazanie złych wiadomości kierownictwu, a nie próbowanie ukrywania, że właśnie usunąłeś krytyczną tabelę w produkcyjnej bazie danych.
Programista ma takie same obowiązki jak każdy inny pracownik - stawić się na czas, pracować na podstawie umówionych godzin, poprosić z wyprzedzeniem o urlop, odpowiadać na wiadomości telefoniczne i e-mailowe (poczytaj, aby przeczytać e-maile), wypełnić wymagane formularze HR itp.
źródło
Każdy programista powinien udostępnić swój kod innym użytkownikom.
źródło
Programista jest odpowiedzialny za prywatność i bezpieczeństwo wszystkich danych dostarczonych przez użytkownika. Zwłaszcza hasła, numery kart kredytowych, adresy e-mail i fizyczna lokalizacja.
źródło
Nie zmuszaj użytkownika do utraty pracy.
Jest to trudniejsze niż się wydaje ... praca to coś więcej niż „dane w pliku” ... to czas, który użytkownik spędza z oprogramowaniem.
Na przykład, jeśli użytkownik wypełni 30-polowy formularz z 29 ważnymi pozycjami i 1 nieprawidłowym, nie usuwaj wszystkich swoich ważnych danych, aby złożyć skargę na 1 nieprawidłowy (cholera, nawet nie usuwaj nieprawidłowego .. (być może jest długi i wymaga tylko niewielkiej korekty, inaczej użytkownik nie pamięta, co to było wcześniej, jeśli go wyczyścisz)
Nieoczywistym, ale ważnym przykładem jest to, co dzieje się w systemie Windows i praktycznie w każdym innym oprogramowaniu do „zarządzania plikami” ... jeśli spędziłem pół godziny ostrożnie, przytrzymując klawisz Ctrl-Click'ing, aby wybrać zestaw plików i przypadkowo wykonałem Click zamiast Ctrl-kliknięcie, nie powinno wyczyścić wszystkich wcześniej wybranych plików, dzięki czemu zacznę od nowa.
Kolejny, że się pomylili ... jeśli przypadkowo uderzę Ctrl-A (zamiast Ctrl-S tuż obok), nie powinien stracić mojego miejsca w pliku i umieścić kursor na początku .... właściwe miejsce w pliku „praca”, które program „utracił”.
Jeszcze jedno: okno dialogowe „zatwierdzenia” TortoiseSVN ma długą listę plików. Przed naciśnięciem przycisku „Zatwierdź” możesz przejść do listy plików, klikając dwukrotnie każdy z nich, aby zobaczyć jego zmiany w drugim oknie dialogowym. Aby to zrobić szybko, czasami używam tylko klawiatury, naciskając,
<Esc>
by zamknąć drugie okno dialogowe i wrócić do pierwszego. Jeśli przypadkowo uderzę<Esc>
dwa razy, to również zamyka pierwsze okno dialogowe, co powoduje, że zapominam, do którego pliku byłem.źródło
Programista jest odpowiedzialny za przestrzeganie systemu, na którym będzie działał jego program. Po zakończeniu programowania i testowania program zostanie wdrożony w celu użycia zgodnie z jego przeznaczeniem, co zwykle wiąże się z uruchomieniem go przez inne osoby na jego komputerach. Programista musi o tym pamiętać: jego program działa na czyimś cudzym majątku , a nie na jego własnej, i musi zachowywać się jak gość w domu, zamiast się wtrącać, jakby to było jego miejsce.
Na przykład jego program nie powinien:
źródło
Z Manifestu dla Rzemieślnika Oprogramowania :
źródło
Spójrz w lustro i prawdopodobnie rozpoznaj w sobie najgorsze cechy programisty. Następnie pracuj nad ich eliminowaniem każdego dnia.
źródło
Niektóre z nich dotyczą obowiązków „ firmy programistycznej ”.
źródło
Zwłaszcza, gdy programista pochodzi z innej platformy / języka. Strasznie jest znaleźć programistę walczącego o coś, co zapewnia biblioteka podstawowa lub niewłaściwie wykorzystać przewagę platformy z powodu niewiedzy.
Bardzo ważne jest, aby kod udokumentować do użycia w inny sposób, ale jeśli chodzi o łatwość konserwacji, kod samodokumentujący może dosłownie zaoszczędzić wiele godzin frustracji.
Na przykład porównaj:
do
źródło
Programowanie to zawód, a nie umiejętność. Oznacza to, że programista ma obowiązek utrzymywania aktualności w swojej dziedzinie w zakresie najnowszych narzędzi, technik i technologii.
Może to oznaczać odpychanie się od menedżerów, aby dać czas na ciągłe uczenie się i szkolenie lub robienie tego we własnym czasie.
źródło
1) Wyjaśnij jasno, że rozwiązaniem każdego problemu będzie kompromis między wydajnością, kosztami, czasem i jakością.
2) Uzupełnij odpowiednią dokumentację, niezależnie od tego, czy wydaje ona notatki czy plany testów. (dokumentacja będzie się różnić w zależności od rodzaju i wielkości firmy)
3) Poproś o odpowiednie narzędzia do swojej pracy (tak wielu po prostu narzeka na to, ale nigdy nie podchodzi do szefa z uzasadnionym powodem, aby dostać to, czego potrzebują)
... Inni bez wątpienia podążą.
źródło
Pytaj o cokolwiek - programista powinien być odpowiedzialny za zapytanie o wszystko, co może być wymagane do wykonania lub obsługi przez system. Może to obejmować zadawanie pytań, które użytkownicy mogą uznać za głupie pytania, ponieważ istnieją różne witryny poświęcone pokazaniu, co użytkownicy mogą zrobić. Codzienne WTF i SharkTank to kilka przykładów, choć jestem pewien, że są jeszcze inne.
źródło
Dlatego menedżerowie powinni upewnić się, że mają wszystko do osiągnięcia celu.
źródło
Oto moja propozycja.
(Dla „programisty” mam na myśli „programistę”, a nie „weekendowego hakera”, więc sugerowane są wszystkie standardowe rzeczy, które programista powinien zrobić).
źródło
5 zasad gildii programisty
1.) sprawdzaj swój kod co tydzień i w święta.
2.) uwzględniać potrzeby społeczności programistów.
3.) czytaj przynajmniej jedną książkę programową rocznie.
4.) udaj się na przynajmniej jedną konferencję programową rocznie.
5.) przyznać się do swoich błędów.
źródło
Dodam „zawsze dokumentuj wszelkie przyjęte założenia” do listy. :-)
źródło
Programista nie powinien robić ani implementować niczego, co jest nieetyczne lub nielegalne, np. Pisać wirusów lub hakować systemy innych osób (chyba że ma to na celu wykrycie luk bezpieczeństwa, a następnie poinformowanie ofiary o tym i co może zrobić, aby tego uniknąć wykorzystywane przez złośliwych hakerów).
źródło