Jestem dość nowym programistą. Zawodowo programuję w C # od dwóch lat jako stażysta i 6 miesięcy jako młodszy programista. Przyjaciel mojej rodziny potrzebuje pomocy przy projekcie napisanym w VB.net. Nigdy nie korzystałem z VB.net, więc trochę się tam martwię.
Ale prawdziwe pytanie pojawia się w tym, że kiedy spojrzę na dokumenty projektu, mam wrażenie, że nic naprawdę dobrego z tego nie wyniknie. Mam wrażenie, że spowoduje to więcej stresu, niż chciałbym mieć w życiu.
W jaki sposób doświadczeni programiści podejmują decyzję, czy wziąć projekt, czy po prostu go puścić? Jakie są dobre wskaźniki ułatwiające podejmowanie decyzji?
Edytować
To naprawdę wydaje się bardzo dużym ERP, nad którym chciałby, abym pracował i nie wierzę, że wie coś o programowaniu, więc nie sądzę, żebym był młodszy, nawet pomyślał.
Odpowiedzi:
Z mojego doświadczenia: nigdy nie pracuj za pieniądze dla członków rodziny, z którymi musisz spędzać wakacje lub przyjaciół, których chcesz zatrzymać. Jedna z zaangażowanych stron zawsze będzie miała wrażenie, że druga strona albo pobiera za dużo, albo nie płaci wystarczająco dużo, i że wyświadczyła drugiej stronie przysługę. Kiedy zbliża się termin, zwykle są najmniej wyrozumiali i zwykle są dupkami podczas testów beta, ponieważ jeśli masz błąd - który zechcesz - nie zrozumieją. Zawsze jest bałagan.
Kiedyś byłem idealistą i uważałem, że wszyscy potrzebowali po prostu lepszych umiejętności ludzi, ale nie, tak po prostu jest. Ludzie, którzy nie rozumieją procesu tworzenia oprogramowania, ZAWSZE będą wariować, gdy coś nie spełni ich oczekiwań, gdy tylko to zobaczą. Dotyczy to zarówno menedżerów projektów, jak i członków rodziny. Problem polega na tym, że musisz utrzymywać relacje z rodziną i przyjaciółmi, a rzeczy nigdy nie są ściśle biznesowe.
To powiedziawszy, jeśli projekt ma zwiększyć poziom stresu i nie potrzebujesz pieniędzy, to po co je brać? Zwłaszcza jeśli masz już pracę programistyczną, w której chcesz się wyróżniać, powiedziałbym, że powinieneś poświęcić tyle wysiłku pracy na bycie doskonałym w swojej codziennej pracy, ponieważ to tam ostatecznie zostaniesz nagrodzony za pracę wysokiej jakości.
Jeśli potrzebujesz pieniędzy i nie masz nic przeciwko potencjalnej stracie przyjaciela rodziny, to podejmij pracę. Najgorsze, co może się zdarzyć - inne niż rzeczy, o których wspomniałem wcześniej - polega na tym, że dowiadujesz się, kim jesteś i nie jesteś dobry, lub dowiadujesz się, że gryziesz więcej, niż możesz żuć, co powoduje, że projekt jest zły ból głowy z powodu twojego braku doświadczenia. Zrobiłem to dwa razy z moją obecną pracą - na szczęście bardzo rozumiem pracodawców. Choć nędznie czułem się martwy w wodzie, okazało się, że jestem znacznie lepszym programistą z dużo szerszym zestawem umiejętności niż wcześniej.
Nie ma rachunku służącego do określenia, które prace pozostawić i zachować, tylko doświadczenie i swoją osobowość. Musisz tylko zdecydować, co cenisz i dążyć do tego. Rzeczy do rozważenia:
Czy to projekt, który sprawi mi przyjemność? Czy zespół to zespół, z którym lubię pracować?
Jaki rodzaj płatności będą oferować? Jeśli nie, to jaki rozwój zawodowy otrzymam? Czy oferują jakiekolwiek wspólne ryzyko (tj. Opcje na akcje, procent zysków)? To dla mnie duży perswaader.
Tak czy inaczej, są to tylko zasady, które należy stosować przy podejmowaniu decyzji. Wszystko zależy od tego, co cenisz. Na przykład cenię sobie wyzwania intelektualne i czas spędzany z rodziną, dlatego zwykle przywiązuję dużą wagę do tego, czym jest projekt i umiejętności, których się nauczy. Jednak upewniam się również z góry, że pracuję tylko 2 lub 3 noce w tygodniu, aby móc spędzać czas z żoną i dziećmi, ponieważ pracuję już cały dzień. Dostosowuję termin, aby spełnić to żądanie. Jeśli im się to nie podoba, to nie podejmę pracy.
Cokolwiek zrobisz, upewnij się, że jasno określisz, co zrobisz, a czego nie zrobisz, i upewnij się, że jasno określają swoje oczekiwania przed podjęciem pracy. Najgorsze, co może się zdarzyć, to mieć niepotwierdzone oczekiwania klienta i nie docenić tych oczekiwań.
PS Naprawdę chciałbym przeczytać ten artykuł wcześniej w mojej karierze. Dotyczy to mojego ostatniego akapitu. http://www.joelonsoftware.com/articles/fog0000000356.html
źródło
Czy potrzebuję pracy? Jeśli tak, „biorę” projekt.
Ile mam wyborów? Więcej niż 1? Mogę wybierać między alternatywami.
Tylko 1? Dobrze. To tyle.
Pytanie „stres w moim życiu” jest dyskusyjne; niepodjęcie projektu oznacza brak utrzymania zatrudnienia; co ma katastrofalne konsekwencje.
Jeśli masz taką swobodę finansową, w której decydującym czynnikiem jest „stres”, to naprawdę świetnie.
źródło
Co zyskasz na tym projekcie? Pieniądze? Doświadczenie? Coś innego?
Pieniądze: Pochodzi od członka rodziny (staram się nie robić interesów z rodziną, ale to zupełnie inna dyskusja), jest mały (więc brzmisz tak), jesteś dość młodszy, więc nie oczekuj dużo pieniądze z tego (na podstawie moich doświadczeń).
Doświadczenie: musisz nauczyć się nowego języka! To może być cenne w przyszłości, może dać ci przewagę nad programistami .NET, którzy znają tylko C #.
Ale twój instynkt podpowiada ci, że ten projekt będzie zły . Dlaczego? Wygląda na to, że możesz przynajmniej trochę z tego skorzystać.
Większość kontrahentów zaczynałaby od sprawdzenia, ile pieniędzy dostaną na decyzję o podjęciu projektu. Idealnie trudniejsze projekty przynoszą więcej pieniędzy. Jeśli jest to trudne, powinno dobrze zapłacić, ale nie znam danych szczegółowych, aby wiedzieć, czy naprawdę dostaniesz dobre wynagrodzenie ...
W odpowiedzi na szczegóły zawarte w aktualizacji: Powiedz mu, że wykracza to daleko poza zakres pojedynczego młodszego programisty. Być może będziesz w stanie przeprowadzić kilka minut badań i sprawdzić, czy istnieje istniejący produkt, który może zrobić, co chce, i sprawdzić, czy strona „Funkcje” mówi o dostosowaniu / wtyczkach / rozszerzalności. Może także chcieć porozmawiać ze sklepem z oprogramowaniem niestandardowym, jeśli nie ma tam żadnego istniejącego produktu lub konieczne jest wykonanie obszernych prac związanych z programowaniem wtyczek. Nie ma nic złego w przyznaniu, że projekt jest zbyt duży, abyś mógł sobie z nim poradzić - jest to o wiele lepsze niż przyjęcie go i całkowite niepowodzenie (szczególnie jeśli jest to członek rodziny - funkcje rodzinne mogą być niewygodne i obciążone przez lata).
źródło
Osobiście, jeśli to wyrażenie jest zaangażowane, nie biorę projektu.
źródło
Jako freelancer akceptuję tylko projekty, w których jestem przekonany, że mogę je ukończyć na czas, w budżecie i w dobrej jakości. Odrzucenie projektu nie oznacza bezrobocia - przynajmniej nie na zawsze. Akceptując projekt, nie możesz dostarczyć wszystkiego, co kosztuje - pieniądze, reputacja, zdrowie.
Czasami jest to trochę trudniejsze, gdy dobry klient potrzebuje pomocy przy nowym projekcie, który po prostu nie pasuje do moich umiejętności; ale nawet wtedy lepiej być uczciwym i pozwolić komuś innemu to zrobić.
W twoim przypadku możesz i powinieneś zaprzeczyć projektowi - nie masz wystarczającego doświadczenia, nie znasz języka, jest dla ciebie za duży.
źródło
Zajmuję się programowaniem zewnętrznym od ponad dwudziestu lat. Aby projekt odniósł prawdziwy sukces, musi mieć co najmniej następujące elementy:
Opisujesz przyjaciela rodziny, który nic nie wie o programowaniu, który chce, abyś - niedoświadczony programista - zbudował system ERP przy użyciu nieznanej technologii.
Wydaje mi się, że ta sytuacja zdecydowanie brakuje na numerach 1, 3, 6 i 7, a może wszystkich. Jak mówi Adam w „Mythbusters”: „To przepis na katastrofę”.
Cholera, sam bym tego nie dotknął drążkiem na dziesięć stóp. Mógłbym w kółko mówić o innych czerwonych flagach, które tu widzę, ale w zasadzie moja rada jest zgodna z twoim przeczuciem, ponieważ masz rację: „nic naprawdę dobrego z tego nie wyjdzie”.
Ponieważ jest to przyjaciel rodziny, gdybym był tobą, powiedziałbym tylko: „Masz świetny projekt i potrzebujesz kogoś naprawdę dobrego, a ja jestem zbyt niedoświadczony, aby dać ci wyniki, które powinieneś”. Zostaw to w tym.
Przekonałem się również, że gdy masz klienta, który ma problem w jednym obszarze, może on stanowić problem w innych. Potencjalny klient, który nawet rozważyłby zaprojektowanie i wdrożenie systemu ERP przez młodszego programistę, jest albo tak nieświadomy, że stanowi zagrożenie dla siebie i innych, albo jest absurdalnie tani, i którykolwiek z nich umieściłby ich na mojej liście „trzymaj się z dala” .
FWIW, jako konsultant / freelancer, kończę sam wypełniając role po mojej stronie, radą mojej żony. Odkryliśmy, czym są te wszystkie przedmioty, widząc niepowodzenia projektów z powodu ich braku - czasami były to nasze własne projekty. I nawet po dwudziestu latach i pomimo sprawdzenia tych kryteriów wciąż kończę od czasu do czasu projekt, który się nie udaje - ryzyko to zawsze jest częścią biznesu. Po prostu upewniam się teraz, że projekty nie zawodzą z powodu niczego, co zrobiłem źle, i że umowy są ustrukturyzowane, więc dostanę zapłatę, jeśli druga strona się zepsuje.
źródło
Czy chcesz współpracować z innymi zaangażowanymi osobami?
Projekt jest tylko pretekstem do spotkania się i obcowania z ludźmi.
źródło
Moim osobistym podejściem byłoby zbadanie, czego on chce, jakiej osi czasu, jakich kosztów oczekuje, itp. Jeśli to w rzeczywistości duży ERP, pomoc może trwać latami i być może naprawdę brzydka. Zarządzanie odpadami w porównaniu z SAP byłoby przykładem tego, jak drogie mogłoby to być, jeśli naprawdę masz na myśli duże, jak w 9-cyfrowych budżetach projektów.
Moim celem podczas eksploracji jest narysowanie linii na piasku, aby było jasne, dlaczego zadaję pytania i co mam w rezultacie uzyskać. „Jak opłacalne jest to istnienie?” to pytanie, które chciałbym zadać, ponieważ z góry kwestionuję metodologię, budżet i ramy czasowe, a następnie robię małe badania, aby sprawdzić, czy rzeczy wydają się być na poziomie, czy też może to skończyć na stronie z humorami IT jak The Daily WTF .
źródło