To była moja praca jako freelancer w oDesk. Wykonałem kilka prac wcześniej w danym czasie, ale po raz pierwszy przekroczyłem termin. To była bardzo długa praca i starałem się jak najlepiej, ale wciąż nie dotrzymałem terminu. Teraz się bardzo boję. Ponieważ to moja wina, że nie dotrzymałem terminu.
Moje pytanie brzmi: czy jest to poważny problem, czy nie dotrzymujesz terminów wspólnych dla zadań programistycznych, więc nie powinienem się tym zbytnio przejmować?
Odpowiedzi:
Tak. Przekroczenia terminów są powszechne przy tworzeniu oprogramowania.
Wielu freelancerów dotrzymuje terminów, zaciągając dług techniczny lub chowając brud pod dywan.
Parafrazując Miesiąc mitycznego człowieka Fredericka Brooksa :
Terminy często się nie dotrzymują, ponieważ liderzy projektów nadal oceniają zadania związane z oprogramowaniem w taki sam sposób, jak robią to zadania z zakresu inżynierii lądowej, co jest błędem, ponieważ oprogramowanie to nowatorski przemysł rękodzielniczy bez wyraźnego zbioru norm. Jest to tak prawdziwe, że nie można odwołać „zezwolenia” programisty na kodowanie błędów, ani też nie można pozwać kogoś za programowanie bez tytułu.
Tworzenie oprogramowania ma naturalną złożoność, której brakuje innym dyscyplinom. Duży program może mieć więcej komponentów niż samochód, a komponenty te mogą oddziaływać na wiele różnych sposobów.
Oprogramowanie jest trudne do wizualizacji, więc różne rodzaje diagramów są wykorzystywane do wyświetlania różnych aspektów projektu, a te aspekty mogą nie być ortogonalne. Z drugiej strony inżynieria lądowa ma plany, które pozwalają zobaczyć orurowanie, okablowanie itp. Na tej samej mapie (lub warstwach) w ortogonalny sposób.
Po całkowitym zbudowaniu mostu lub budynku nie jest powszechne, aby klient całkowicie zmienił zakres projektu. Często dzieje się tak w projektach oprogramowania.
Stan techniki w zakresie tworzenia oprogramowania nie osiągnął punktu, w którym projekty oprogramowania są powtarzalne i prawie pozbawione ryzyka. Nawet największe firmy produkujące oprogramowanie, takie jak Microsoft, mogą przekroczyć terminy o miesiące lub lata.
Większość vaporware to tylko projekty oprogramowania, które zostały wycięte z powodu tego rodzaju problemów.
Podsumowując:
Złe oszacowania i niedocenianie złożoności wynikające z rękodzieła procesu tworzenia oprogramowania oznaczają, że pozostaje on niedojrzałą dyscypliną.
źródło
make
lub cokolwiek). Czym jest „plan” w informatyce byłby „planem” planu ”w inżynierii. Różnica polega na tym, żemake
w informatyce zajmuje co najwyżej kilka godzin, podczas gdy pisanie kodu źródłowego (w tym testów i integracji) zajmuje miesiące, podczas gdy w inżynierii planowanie może zająć miesiące (w tym obliczenia konstrukcyjne), a budowanie trwa lata, więc wariancja planowania ma mniejszy wpływ na tym drugim.Przekroczenia terminów nie powinny stać się powszechną praktyką, jeśli chcesz nadal otrzymywać pracę.
To powiedziawszy, zazwyczaj chcesz zostawić sobie trochę dodatkowego „poruszenia” w swoich szacunkach na wypadek, gdyby coś się wydarzyło (i zawsze tak się dzieje). Nie musisz ujawniać, że dodałeś w dogrywce, po prostu nie rób tego nierozsądnie. Może od 5 do 10% całkowitego czasu? Jedynym sposobem, aby się dowiedzieć, jest zrobienie tego kilka razy.
Aby naprawdę dobrze oszacować, musisz wiedzieć, ile czasu zajmuje kodowanie określonego typu widżetu ... na przykład załóżmy, że musisz utworzyć nieskończony widżet przewijania dla klienta X. Jeśli zajmie Ci to tydzień aby wdrożyć go do produkcji bez błędów, możesz użyć go jako podstawy dla swoich nieskończonych oszacowań przewijania.
źródło
Niedotrzymywanie terminów nie jest rzadkością w tworzeniu oprogramowania. Dokładne oszacowanie czasu trwania projektu oprogramowania jest prawie niemożliwe.
Profesjonalizm przejawia się w tym, jak sobie z tym radzisz. Jeśli wiesz, że nie dotrzymasz terminu, poinformuj go jak najwcześniej, aby mógł odpowiednio zaplanować.
źródło
To dość powszechne, ale możesz być lepszy. Możesz spojrzeć na szacowanie za pomocą czegoś abstrakcyjnego, takiego jak punkty opowieści , i śledzić swoją prędkość, aby obliczyć swoje rzeczywiste oszacowania. Te pojęcia są najczęściej kojarzone ze scrumem, ale można ich użyć, nawet jeśli nie robisz scruma.
Niesamowite w prędkości jest to, że obejmuje wszystkie rzeczy niematerialne, takie jak przerwy i nieoczekiwana złożoność, którą programiści mają trudności z rozliczeniem w swoich szacunkach. Wszystkie prawdopodobieństwa uśredniają się w czasie. Uśrednione w ciągu 10 tygodni nasze oszacowania prędkości były dokładne w granicach około 5%. Jednak gdy oceniamy te same zadania w godzinach, dokładnie ten sam zespół konsekwentnie nie docenia o 30-50%.
źródło
Moja teoria (niepotwierdzona) jest taka, że ludzie ewoluowali, by nie doceniać skomplikowanych prac o dwa lub trzy do jednego. Za każdym razem, gdy Kongres pyta NASA o coś takiego: ile kosztuje zbudowanie promu lub podróż na księżyc, wracają w ciągu tygodnia z liczbą. Po wyczerpaniu wszystkich oczekiwanych kosztów odkryją, że będzie to kosztować trzy razy więcej.
W latach 70. mieliśmy żart: weź dowolny programista, podwoj liczbę, a następnie przenieś ją do następnej jednostki czasu. Dlatego jeśli programista powie, że można to zrobić za dwa tygodnie, skończy to za cztery miesiące.
Jeśli ktoś przebudował kuchnię, na ogół myśli „Cóż, zrobię to za dwa tygodnie”. Kończą to około sześć tygodni później.
źródło