Jak decydujesz, czy powinieneś wziąć projekt?

11

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ł.

J Lundberg
źródło
10
Czy to trudna decyzja? Nie lubisz specyfikacji i nie wierzysz w nie. Dlaczego chcesz wziąć ten projekt?
Vitor Py
2
To prawdziwy przykład, jaki mam teraz, ale czułem, że ogólnie pomocne byłoby otwarcie dyskusji na temat wyboru projektów, ponieważ nie ma podobnych pytań.
J Lundberg,
@J Lundberg: Zaktualizowałem odpowiedź w odpowiedzi na twoją aktualizację.
FrustratedWithFormsDesigner
3
Jeśli nie zna żadnego programowania, to dlaczego nalega na VB.NET? On oczywiście nie będzie pracował z tobą nad projektem. Nie ma powodu, aby używać go przez C # w .NET. Możesz skompilować istniejący VB.NET i używać go jako biblioteki w kodzie C # lub odwrotnie.
Jonathan Henson
„potrzebuje pomocy” - czy jest to płatne czy nieopłacane?

Odpowiedzi:

11

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

Jonathan Henson
źródło
5
+1 za „nigdy nie pracuj dla rodziny”. Nie, chyba że żadna ze stron nie zainwestuje w to zbyt wiele i nie uzna tego za czystą zabawę, i nawet wtedy należy zachować ostrożność.
Ethel Evans,
11

W jaki sposób doświadczeni programiści podejmują decyzję, czy wziąć projekt, czy po prostu go puścić?

Czy potrzebuję pracy? Jeśli tak, „biorę” projekt.

Jakie są dobre wskaźniki ułatwiające podejmowanie decyzji?

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.

S.Lott
źródło
3
+1: Można by pomyśleć, że byłoby w tym coś więcej, ale to w zasadzie to za każdym razem.
Ryan Hayes
@ S.Lott - Jestem pewien, że często masz okazję pracować nad wieloma projektami. Wydaje się mało prawdopodobne, abyś często znajdował się w sytuacjach typu „zrób lub zgiń”. Być może zakładam za dużo, ale wydaje się, że to trochę słaby człowiek, ponieważ ktoś z twoim doświadczeniem z pewnością zdecydował się odrzucić projekt tu i tam, a także prawdopodobnie zaakceptował projekty wcześniej, kiedy nie musiałeś tego robić sens „przywiązany do gotówki”.
Morgan Herlocker
1
@ironcode: „Być może zakładam za dużo”. Prawdziwe. Nigdy nie miałem okazji odrzucić projektu z powodu stresu.
S.Lott,
@ S.Lott Mam na myśli stres w tym sensie, że już mam pracę i robienie czegoś takiego może po prostu zostawić mi zero czasu dla mojej rodziny.
J Lundberg,
@J Lundberg: Zaktualizuj swoje pytanie, aby uwzględnić wszystkie fakty.
S.Lott,
5

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).

FrustratedWithFormsDesigner
źródło
3
A friend of my family

Osobiście, jeśli to wyrażenie jest zaangażowane, nie biorę projektu.


źródło
2

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.

użytkownik 281377
źródło
1

Zajmuję się programowaniem zewnętrznym od ponad dwudziestu lat. Aby projekt odniósł prawdziwy sukces, musi mieć co najmniej następujące elementy:

  1. Ktoś, kto zna technologie programowania, oprogramowania i sprzętu używane do wdrażania - lub technologie wystarczająco podobne, aby naprawdę szybko nauczyć się technologii wdrażania
  2. Ktoś, kto zna domenę problemową i jest w stanie i chętnie przetłumaczy to na specyfikacje, których może użyć programista. (Jeśli programista jest również ekspertem w dziedzinie, a projekt jest dość prosty, specyfikacje mogą znajdować się w ich głowie lub nieformalnych notatkach.)
  3. Ktoś, kto jest w stanie, chętnie i ma doświadczenie w zarządzaniu zadaniami projektu, harmonogramem itp., I zna rodzaje pułapek, które możesz napotkać przy pomocy takich rzeczy jak szacowanie i jak ich uniknąć
  4. Ktoś zarządzający komunikacją i relacjami między wszystkimi interesariuszami projektu, w tym programistą (programistami) i klientem (klientami)
  5. Ludzie po obu stronach, konsultanci i klienci, którzy mają doświadczenie w utrzymywaniu rzetelności bieżących spraw biznesowych, w tym umów i pieniędzy. Jeśli nie masz tego doświadczenia, możesz poradzić sobie z doświadczonym doradcą, dopóki nie będziesz.
  6. Bezkonkurencyjne relacje biznesowe, w których, jeśli musisz podjąć trudną decyzję biznesową, nie masz problemów poza pracą
  7. Wystarczająco duży zespół, z odpowiednim połączeniem wiedzy, narzędzi i zasobów, aby dostarczyć produkt wysokiej jakości w wymaganym terminie

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.

Bob Murphy
źródło
0

Czy chcesz współpracować z innymi zaangażowanymi osobami?

Projekt jest tylko pretekstem do spotkania się i obcowania z ludźmi.

bmike
źródło
Podoba mi się ten punkt widzenia. Powinniśmy wspólnie pracować nad projektem.
Jonathan Henson
Służyło mi to bardzo dobrze. Szczegóły projektu mogą się przesuwać jak piaski podczas burzy. Ludzie mogą cię nadal zaskakiwać, ale zmieniają się wolniej.
bmike
0

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 .

JB King
źródło