Wie entscheiden Sie, ob Sie ein Projekt durchführen sollen?

11

Ich bin ein ziemlich neuer Entwickler. Beruflich habe ich zwei Jahre als Praktikant und sechs Monate als Junior-Entwickler in C # programmiert. Ein Freund meiner Familie braucht Hilfe bei einem Projekt, das in VB.net geschrieben ist. Ich habe VB.net noch nie benutzt, deshalb mache ich mir dort ein wenig Sorgen.

Die eigentliche Frage ist jedoch, dass ich nach dem Betrachten der Dokumente für das Projekt das Gefühl habe, dass nichts wirklich Gutes daraus entstehen wird. Ich habe das Gefühl, dass es mehr Stress verursachen wird, als ich derzeit in meinem Leben haben möchte.

Wie entscheiden erfahrene Entwickler, ob sie das Projekt übernehmen oder einfach loslassen? Was sind einige gute Metriken, um die Entscheidung zu erleichtern?

Bearbeiten

Dies scheint tatsächlich ein sehr großes ERP zu sein, an dem ich arbeiten soll, und ich glaube nicht, dass er etwas über Programmierung weiß, daher denke ich nicht, dass ihm die Tatsache, dass ich sehr jung bin, überhaupt in den Sinn gekommen ist.

J Lundberg
quelle
10
Ist das eine schwierige Entscheidung? Sie mögen die Spezifikationen nicht und glauben nicht an sie. Warum sollten Sie dieses Projekt nehmen wollen?
Vitor Py
2
Dies ist ein echtes Beispiel, das ich derzeit habe, aber ich hielt es im Allgemeinen für hilfreich, eine Diskussion darüber zu eröffnen, wie Sie Projekte auswählen, da es keine ähnlichen Fragen gibt.
J Lundberg
@J Lundberg: Ich habe meine Antwort als Antwort auf Ihr Update aktualisiert.
FrustratedWithFormsDesigner
3
Wenn er keine Programmierung kennt, warum besteht er dann auf VB.NET? Er wird offensichtlich nicht mit Ihnen an dem Projekt arbeiten. Es gibt keinen Grund, es über C # in .NET zu verwenden. Sie können das vorhandene VB.NET kompilieren und als Bibliothek in Ihrem C # -Code verwenden oder umgekehrt.
Jonathan Henson
"braucht Hilfe" - ist das bezahlt oder unbezahlt?

Antworten:

11

Aus meiner Erfahrung: Arbeiten Sie niemals mit Geld für Familienmitglieder, mit denen Sie Urlaub machen müssen, oder für Freunde, die Sie behalten möchten. Eine der beteiligten Parteien wird immer das Gefühl haben, dass die andere Partei entweder zu viel verlangt oder nicht genug zahlt und dass sie der anderen Partei einen Gefallen getan hat. Wenn die Frist abgelaufen ist, sind sie normalerweise am wenigsten verständnisvoll, und sie sind normalerweise Arschlöcher während des Betatests, denn wenn Sie einen Fehler haben - den Sie werden - werden sie ihn nicht verstehen. Es ist immer ein Chaos.

Früher war ich idealistisch und dachte, dass alle anderen nur bessere Fähigkeiten der Menschen brauchten, aber nein, so ist es eben. Menschen, die den Softwareentwicklungsprozess nicht verstehen, werden IMMER ausflippen, wenn etwas im ersten Moment, in dem sie es sehen, nicht ihren Erwartungen entspricht. Dies gilt sowohl für Unternehmen mit Projektmanagern als auch für Familienmitglieder. Das Problem ist, dass Sie eine Beziehung zu Familie und Freunden pflegen müssen und die Dinge niemals rein geschäftlich sind.

Das heißt, wenn das Projekt Ihren Stresspegel erhöhen wird und Sie das Geld nicht brauchen, warum dann nehmen Sie es? Vor allem, wenn Sie bereits einen Softwareentwicklungsjob haben, in dem Sie sich auszeichnen möchten, würde ich sagen, dass Sie so viel Arbeitsaufwand darauf verwenden sollten, in Ihrem Tagesjob hervorragend zu sein, da Sie dort letztendlich für qualitativ hochwertige Arbeit belohnt werden.

Wenn Sie das Geld brauchen und mit dem möglichen Verlust eines Freundes in der Familie einverstanden sind, nehmen Sie den Job an. Das Schlimmste, was passieren kann - abgesehen von den Dingen, die ich zuvor erwähnt habe - ist, dass Sie lernen, was Sie sind und was nicht, oder dass Sie mehr abbeißen, als Sie kauen können, was dazu führt, dass das Projekt schlecht wird Kopfschmerzen aufgrund Ihrer Unerfahrenheit. Ich habe das zweimal mit meinem aktuellen Job gemacht - zum Glück habe ich sehr verständnisvolle Arbeitgeber. Obwohl es ein Elend war, als ich mich tot im Wasser fühlte, entwickelte ich mich zu einem viel besseren Programmierer mit viel breiteren Fähigkeiten als zuvor.

Es gibt keinen Kalkül, um zu bestimmen, welche Jobs losgelassen und behalten werden sollen, nur Erfahrung und Ihre Persönlichkeit. Sie müssen nur entscheiden, was Sie wertschätzen und es verfolgen. Dinge, die man beachten muss:

Ist das ein Projekt, an dem ich gerne arbeiten werde? Ist das Team ein Team, mit dem ich gerne zusammenarbeiten werde?

Welche Art von Zahlung werden sie anbieten? Wenn keine, welche berufliche Entwicklung werde ich dann erhalten? Bieten sie ein geteiltes Risiko (dh Aktienoptionen, Prozentsatz des Gewinns)? Das ist ein großer Überzeuger für mich.

Auf jeden Fall sind dies nur Grundsätze, die Sie bei Ihrer Entscheidungsfindung anwenden können. Es hängt alles davon ab, was Sie schätzen. Zum Beispiel schätze ich intellektuelle Herausforderungen und Zeit mit meiner Familie, daher lege ich normalerweise großen Wert auf das Projekt und die Fähigkeiten, die ich dabei erlernen werde. Ich stelle jedoch auch sicher, dass ich nur 2 oder 3 Nächte pro Woche arbeite, damit ich Zeit mit meiner Frau und meinen Kindern verbringen kann, da ich bereits den ganzen Tag arbeite. Ich passe die Frist an, um dieser Nachfrage gerecht zu werden. Wenn sie das nicht mögen, dann nehme ich den Job nicht an.

Was auch immer Sie tun, stellen Sie sicher, dass Sie klar angeben, was Sie tun und was nicht, und dass sie ihre Erwartungen klar angeben, bevor Sie den Job annehmen. Das Schlimmste, was passieren kann, ist, dass der Kunde nicht angegebene Erwartungen hat und dass Sie diese Erwartungen unterschätzt haben.

PS Ich wünschte wirklich, ich hätte diesen Artikel früher in meiner Karriere gelesen. Es gilt für meinen letzten Absatz. http://www.joelonsoftware.com/articles/fog0000000356.html

Jonathan Henson
quelle
5
+1 für "nie für die Familie arbeiten". Nicht, wenn keine Partei zu viel investiert hat und es als puren Spaß ansieht, und selbst dann sollte man vorsichtig sein.
Ethel Evans
11

Wie entscheiden erfahrene Entwickler, ob sie das Projekt übernehmen oder einfach loslassen?

Brauche ich den job Wenn ja, "nehme" ich das Projekt.

Was sind einige gute Metriken, um die Entscheidung zu erleichtern?

Wie viele Möglichkeiten habe ich? Mehr als 1? Ich kann zwischen den Alternativen wählen.

Nur 1? Gut. Das war's dann.

Die Frage "Stress in meinem Leben" ist strittig; Das Versäumnis, ein Projekt anzunehmen, bedeutet das Versäumnis, die Beschäftigung aufrechtzuerhalten. das hat katastrophale Folgen.

Wenn Sie die Art von finanzieller Freiheit haben, in der "Stress" ein entscheidender Faktor ist, ist das wirklich großartig.

S.Lott
quelle
3
+1: Man könnte meinen, es steckt mehr dahinter, aber darauf kommt es jedes Mal an.
Ryan Hayes
@ S.Lott- Ich bin sicher, dass Sie häufig die Möglichkeit haben, an mehreren Projekten zu arbeiten. Es ist unwahrscheinlich, dass Sie sich sehr oft in Situationen vom Typ "Do or Die" befinden. Ich nehme vielleicht zu viel an, aber dies scheint ein Strohmann zu sein, da sich jemand mit Ihrer Erfahrung sicherlich dafür entschieden hat, hier und da ein Projekt abzulehnen, und wahrscheinlich auch Projekte angenommen hat, als Sie dies nicht mussten Sinn für "Geld geschnallt".
Morgan Herlocker
1
@ironcode: "Ich könnte zu viel annehmen". Wahr. Ich hatte noch nie die Gelegenheit, ein Projekt aufgrund von Stress abzulehnen.
S.Lott
@ S.Lott Ich meine Stress in dem Sinne, dass ich bereits einen Job habe und so etwas zu tun, könnte mir einfach keine Zeit für meine Familie lassen.
J Lundberg
@J Lundberg: Bitte aktualisieren Sie Ihre Frage, um alle Fakten aufzunehmen.
S.Lott
5

Was werden Sie von diesem Projekt profitieren? Geld? Erfahrung? Etwas anderes?

  • Geld: Es ist von einem Familienmitglied (ich versuche, keine Geschäfte mit der Familie zu machen, aber das ist eine ganz andere Diskussion), es ist klein (damit es klingt), du bist ziemlich jung, also erwarte nicht viel Geld daraus (basierend auf meinen Erfahrungen).

  • Erfahrung: Sie lernen eine neue Sprache! Das könnte in Zukunft wertvoll sein und Ihnen einen kleinen Vorteil gegenüber .NET-Entwicklern verschaffen, die nur C # kennen.

Aber dein Bauchgefühl sagt dir, dass dieses Projekt schlecht sein wird . Warum das? Es hört sich so an, als könnten Sie zumindest etwas Erfahrung daraus machen.

Die meisten Auftragnehmer würden zunächst prüfen, wie viel Geld sie erhalten, um sich für ein Projekt zu entscheiden. Im Idealfall führen schwierigere Projekte zu mehr Geld. Wenn dies schwierig ist, sollte es sich auszahlen, aber ich kenne die Einzelheiten nicht, um zu wissen, ob Sie tatsächlich gut bezahlt werden ...


Als Antwort auf die Details in Ihrem Update: Sagen Sie ihm, dass dies weit über den Rahmen eines einzelnen Junior-Programmierers hinausgeht. Möglicherweise können Sie einige Minuten lang nachforschen, ob es ein vorhandenes Produkt gibt, das das tun kann, was er möchte, und ob auf der Seite "Funktionen" über Anpassung / Plugins / Erweiterbarkeit gesprochen wird. Möglicherweise möchte er auch mit einem Shop für kundenspezifische Software sprechen, wenn kein vorhandenes Produkt verfügbar ist oder umfangreiche Plugin-Programmierarbeiten durchgeführt werden müssen. Es ist nichts Falsches daran, zuzugeben, dass ein Projekt zu groß für Sie ist - es ist weitaus besser, als es zu übernehmen und vollständig zu scheitern (insbesondere wenn es sich um ein Familienmitglied handelt - Familienfunktionen können jahrelang umständlich und überlastet sein).

FrustratedWithFormsDesigner
quelle
3
A friend of my family

Persönlich, wenn dieser Satz beteiligt ist, nehme ich das Projekt nicht.


quelle
2

Als Freiberufler akzeptiere ich nur Projekte, bei denen ich zuversichtlich bin, dass sie rechtzeitig, im Budget und in guter Qualität abgeschlossen werden können. Ein Projekt abzulehnen bedeutet nicht Arbeitslosigkeit - zumindest nicht für immer. Wenn Sie ein Projekt annehmen, können Sie nicht alles liefern - Geld, Ansehen, Gesundheit.

Es ist manchmal etwas schwieriger, wenn ein guter Kunde Hilfe für ein neues Projekt benötigt, das einfach nicht zu meinen Fähigkeiten passt. Aber selbst dann ist es besser, ehrlich zu sein und es jemand anderem überlassen zu lassen.

In Ihrem Fall können und sollten Sie das Projekt ablehnen - Sie sind nicht erfahren genug, Sie kennen die Sprache nicht, sie ist zu groß für Sie.

user281377
quelle
1

Ich programmiere seit über zwanzig Jahren freiberuflich. Damit ein Projekt wirklich erfolgreich ist, benötigt es mindestens Folgendes:

  1. Jemand, der die für die Bereitstellung verwendeten Programmier-, Software- und Hardwaretechnologien kennt - oder Technologien, die ähnlich genug sind, um die Bereitstellungstechnologien wirklich schnell zu erlernen
  2. Jemand, der die Problemdomäne kennt und in der Lage und bereit ist, diese in Spezifikationen zu übersetzen, die der Programmierer verwenden kann. (Wenn der Programmierer auch der Domain-Experte ist und das Projekt einfach genug ist, können die Spezifikationen im Kopf oder in informellen Notizen enthalten sein.)
  3. Jemand, der in der Lage, willens und erfahren ist, die Projektaufgaben, den Zeitplan usw. gut zu verwalten, und der die Art von Fallstricken kennt, in die Sie mit Dingen wie Schätzen und deren Vermeidung geraten können
  4. Jemand, der die Kommunikation und die Beziehungen zwischen allen Projektbeteiligten verwaltet, einschließlich der Programmierer und Kunden.
  5. Menschen auf beiden Seiten, Berater und Kunden, die Erfahrung darin haben, die laufenden Geschäftsangelegenheiten solide zu halten, einschließlich Verträge und Geld. Wenn Sie diese Erfahrung nicht selbst haben, können Sie mit einem erfahrenen Berater auskommen, bis Sie es sind.
  6. Eine Geschäftsbeziehung zu marktüblichen Bedingungen, bei der Sie keine Probleme außerhalb der Arbeit haben, wenn Sie eine schwierige Geschäftsentscheidung treffen müssen
  7. Ein ausreichend großes Team mit der richtigen Kombination aus Fachwissen, Tools und Ressourcen, um ein Qualitätsprodukt innerhalb des erforderlichen Zeitrahmens zu liefern

Sie beschreiben einen Freund der Familie, der nichts über Programmierung weiß und der möchte, dass Sie - ein unerfahrener Programmierer - ein ERP-System mit einer Technologie erstellen, die Sie nicht kennen.

Es hört sich für mich so an, als würde diese Situation definitiv bei # 1, # 3, # 6 und # 7 fehlen, und vielleicht bei allen. Wie Adam auf Mythbusters sagt: "Dies ist ein Rezept für eine Katastrophe."

Heck, ich würde diesen nicht mit einer zehn Fuß Stange selbst berühren. Ich könnte weiter und weiter über die anderen roten Fahnen sprechen, die ich hier sehe, aber im Grunde ist mein Rat an Sie, mit Ihrem Bauchgefühl zu gehen, weil Sie Recht haben: "Es wird nichts wirklich Gutes daraus werden."

Da dies ein Freund der Familie ist, würde ich, wenn ich Sie wäre, nur sagen: "Sie haben ein großartiges Projekt, und Sie brauchen jemanden, der wirklich gut ist, und ich bin zu unerfahren, um Ihnen die Ergebnisse zu liefern, die Sie haben sollten." Lass es so wie es ist.

Ich habe auch festgestellt, dass ein Kunde, der in einem Bereich ein Problem hat, in anderen wahrscheinlich ein Problem darstellt. Ein potenzieller Kunde, der sogar in Betracht ziehen würde, ein ERP-System von einem Junior-Programmierer entwerfen und implementieren zu lassen, ist entweder so unwissend, dass es eine Gefahr für sich selbst und andere darstellt, oder lächerlich billig, und einer von beiden würde sie in meine Liste "Fernbleiben" aufnehmen .


FWIW, als Berater / Freiberufler, besetze ich die Rollen auf meiner Seite selbst mit Ratschlägen meiner Frau. Wir haben herausgefunden, was all diese Elemente sind, indem wir gesehen haben, dass Projekte aufgrund fehlender Elemente fehlschlagen - manchmal waren es unsere eigenen Projekte. Und selbst nach zwanzig Jahren und trotz der Überprüfung dieser Kriterien habe ich immer noch ein gelegentliches Projekt, das nicht funktioniert - dieses Risiko ist immer Teil des Geschäfts. Ich stelle jetzt nur sicher, dass Projekte nicht an irgendetwas scheitern, was ich falsch gemacht habe, und dass Verträge so strukturiert sind, dass ich bezahlt werde, wenn die andere Seite versagt.

Bob Murphy
quelle
0

Möchten Sie mit den anderen Beteiligten zusammenarbeiten?

Das Projekt ist nur eine Ausrede, um Menschen zu treffen und mit ihnen in Kontakt zu treten.

bmike
quelle
Ich mag diesen Standpunkt. Wir sollten gemeinsam an einem Projekt arbeiten.
Jonathan Henson
Es hat mir sehr gut gedient. Projektdetails können sich wie Sand im Sturm verschieben. Die Leute können dich immer noch überraschen, aber sie ändern sich langsamer.
Mike
0

Meine persönliche Aufgabe wäre es, ein wenig zu untersuchen, was er will, welchen Zeitplan, welche Kosten er erwartet usw. Wenn dies tatsächlich ein großes ERP ist, könnte die Hilfe jahrelang dauern und möglicherweise wirklich hässlich werden. Waste Management vs SAP wäre ein Beispiel dafür, wie teuer dies werden könnte, wenn Sie wirklich groß wie in 9-stelligen Projektbudgets meinen.

Mein Ziel bei der Erkundung ist es, eine Linie in den Sand zu ziehen, damit klar ist, warum ich die Fragen stelle und was ich als Ergebnis haben möchte. "Wie lebensfähig sehe ich dieses Wesen?" ist die Frage, die ich haben würde, wenn ich Methodik, Budget und Zeitpläne im Voraus hinterfragen und dann ein wenig nachforschen würde, ob die Dinge auf dem Niveau zu sein scheinen oder nicht, oder ist dies etwas, das auf einer IT-Humor-Site landen könnte wie The Daily WTF .

JB King
quelle