Comment décidez-vous si vous devez prendre un projet?

11

Je suis un développeur relativement nouveau. Professionnellement, j'ai programmé en C # pendant deux ans en tant que stagiaire et 6 mois en tant que développeur junior. Un ami de ma famille a besoin d'aide pour un projet écrit sur VB.net. Je n'ai jamais utilisé VB.net, donc je suis un peu inquiet.

Mais la vraie question vient du fait qu'une fois que j'ai regardé les documents du projet, j'ai le sentiment que rien de vraiment bon n'en sortira. J'ai le sentiment que cela causera plus de stress que ce que j'aimerais avoir dans ma vie actuellement.

Comment les développeurs expérimentés prennent-ils la décision de prendre ou non le projet? Quelles sont les bonnes mesures pour faciliter la décision?

Éditer

Cela ressemble en fait à un très gros ERP sur lequel il aimerait que je travaille et je ne pense pas qu'il sache quoi que ce soit sur la programmation, donc je ne pense pas que le fait que je sois très junior lui ait même traversé l'esprit.

J Lundberg
la source
10
Est-ce une décision difficile? Vous n'aimez pas les spécifications et n'y croyez pas. Pourquoi voudriez-vous prendre ce projet?
Vitor Py
2
C'est un véritable exemple que j'ai en ce moment, mais j'ai pensé qu'il serait utile en général d'ouvrir une discussion sur la façon dont vous choisissez les projets, car il n'y a pas de questions similaires.
J Lundberg
@J Lundberg: J'ai mis à jour ma réponse en réponse à votre mise à jour.
FrustratedWithFormsDesigner
3
S'il ne connaît aucune programmation, pourquoi insiste-t-il sur VB.NET? Il ne travaillera évidemment pas sur le projet avec vous. Il n'y a aucune raison de l'utiliser sur C # dans .NET. Vous pouvez compiler le VB.NET existant et l'utiliser comme bibliothèque dans votre code C # ou vice versa.
Jonathan Henson
"a besoin d'aide" - est-ce payé ou non?

Réponses:

11

D'après mon expérience: Ne faites jamais de travail impliquant de l'argent pour des membres de votre famille avec lesquels vous devez passer des vacances ou des amis que vous souhaitez conserver. L'une des parties impliquées aura toujours l'impression que l'autre partie facture trop ou ne paie pas assez et qu'elle a rendu service à l'autre partie. Lorsque la date limite arrive, ils sont généralement les moins compréhensifs, et ce sont généralement des trous de cul pendant le test bêta parce que si vous avez un bug - que vous allez - ils ne comprendront pas. C'est toujours un gâchis.

J'étais idéaliste et je pensais que tout le monde avait juste besoin de meilleures compétences interpersonnelles, mais non, c'est comme ça. Les personnes qui ne comprennent pas le processus de développement logiciel paniquent TOUJOURS lorsque quelque chose ne répond pas à leurs attentes dès le premier moment où elles le voient. Cela est vrai dans les affaires avec les chefs de projet autant qu'avec les membres de la famille. Le problème est que vous devez maintenir une relation avec votre famille et vos amis, et les choses ne sont jamais strictement commerciales.

Cela dit, si le projet va augmenter votre niveau de stress et que vous n'avez pas besoin d'argent, alors pourquoi le prendre? Surtout si vous avez déjà un travail de développement logiciel dans lequel vous souhaitez exceller, je dirais que vous devriez consacrer autant d'efforts à être excellent dans votre travail de jour car c'est là que vous serez finalement récompensé pour un travail de qualité.

Si vous avez besoin d'argent et que vous êtes d'accord avec la perte potentielle d'un ami de la famille, prenez le travail. La pire chose qui puisse arriver - à part les choses que j'ai mentionnées auparavant - est que vous apprenez ce que vous êtes et n'êtes pas bon, ou vous apprenez que vous mordez plus que vous ne pouvez mâcher, ce qui fait que le projet est mauvais maux de tête dus à votre inexpérience. Je l'ai fait deux fois avec mon emploi actuel - heureusement, j'ai des employeurs très compréhensifs. Bien que ce fut la misère alors que je me sentais mort dans l'eau, j'ai émergé un bien meilleur programmeur avec un ensemble de compétences beaucoup plus large qu'auparavant.

Il n'y a pas de calcul pour déterminer quels emplois abandonner et garder, seulement l'expérience et votre personnalité. Vous avez juste besoin de décider ce que vous appréciez et de le poursuivre. Choses à considérer:

Est-ce un projet sur lequel j'aimerais travailler? L'équipe est-elle une équipe avec laquelle j'aime travailler?

Quel type de paiement offriront-ils? Sinon, quel perfectionnement professionnel vais-je recevoir? Offrent-ils une sorte de risque partagé (c.-à-d. Options d'achat d'actions, pourcentage des bénéfices)? C'est un grand persuasif pour moi.

Quoi qu'il en soit, ce ne sont que des principes à utiliser dans votre prise de décision. Tout dépend de ce que vous appréciez. Par exemple, j'apprécie les défis intellectuels et le temps passé avec ma famille, donc j'accorde généralement une grande priorité à ce qu'est le projet et aux compétences que j'apprendrai à le faire. Cependant, je m'assure également de déclarer à l'avance que je ne travaille que 2 ou 3 nuits par semaine afin de pouvoir passer du temps avec ma femme et mes enfants car je travaille déjà toute la journée. J'ajuste le délai pour répondre à cette demande. S'ils n'aiment pas ça, alors je ne prends pas le travail.

Quoi que vous fassiez, assurez-vous d'indiquer clairement ce que vous ferez et ne ferez pas, et assurez-vous qu'ils énoncent clairement leurs attentes avant de prendre le poste. La pire chose qui puisse arriver est que le client ait des attentes non exprimées et que vous sous-estimiez ces attentes.

PS J'aimerais vraiment avoir lu cet article plus tôt dans ma carrière. Cela s'applique à mon dernier paragraphe. http://www.joelonsoftware.com/articles/fog0000000356.html

Jonathan Henson
la source
5
+1 pour "ne jamais travailler pour la famille". Sauf si aucune des parties n'y a trop investi et ne la considère comme un pur plaisir, et même alors, il faut faire attention.
Ethel Evans
11

Comment les développeurs expérimentés prennent-ils la décision de prendre ou non le projet?

Ai-je besoin du travail? Si oui, je "prends" le projet.

Quelles sont les bonnes mesures pour faciliter la décision?

Combien de choix ai-je? Plus de 1? Je peux choisir entre les alternatives.

Seulement 1? Bien. C'est tout.

La question du «stress dans ma vie» est sans objet; le fait de ne pas prendre un projet signifie le non-maintien d'un emploi; ce qui a des conséquences désastreuses.

Si vous avez le genre de liberté financière où le «stress» est un facteur décisif, c'est vraiment génial.

S.Lott
la source
3
+1: On pourrait penser qu'il y aurait plus que cela, mais c'est à peu près à quoi cela se résume à chaque fois.
Ryan Hayes
@ S.Lott- Je suis sûr que vous avez souvent l'occasion de travailler sur plusieurs projets. Il semble peu probable que vous soyez très souvent dans des situations de type «faire ou mourir». Je suppose peut-être trop, mais cela semble être un peu un homme de paille, car quelqu'un avec votre expérience a sûrement choisi de refuser un projet ici et là et a probablement accepté des projets avant quand vous n'en aviez pas besoin sens "à court d'argent".
Morgan Herlocker
1
@ironcode: "Je suppose peut-être trop". Vrai. Je n'ai jamais eu l'occasion de refuser un projet à cause du stress.
S.Lott
@ S.Lott Je veux dire le stress dans le sens où j'ai déjà un travail et faire quelque chose comme ça pourrait me laisser un temps nul pour ma famille.
J Lundberg
@J Lundberg: Veuillez mettre à jour votre question pour inclure tous les faits.
S.Lott
5

Que retirerez-vous de ce projet? Argent? Expérience? Autre chose?

  • Argent: il vient d'un membre de la famille (j'essaie de ne pas faire affaire avec la famille, mais c'est une toute autre discussion), il est petit (donc vous le dites bien), vous êtes assez junior, alors ne vous attendez pas à beaucoup de de l'argent (d'après mes expériences).

  • Expérience: vous apprenez une nouvelle langue! Cela pourrait être utile à l'avenir, peut vous donner un léger avantage sur les développeurs .NET qui ne connaissent que C #.

Mais votre instinct vous dit que ce projet sera mauvais . Pourquoi donc? Il semble que vous pourriez au moins en tirer une expérience.

La plupart des entrepreneurs commenceraient par regarder combien d'argent ils obtiendront pour décider d'entreprendre un projet. Idéalement, des projets plus difficiles génèrent plus d'argent. Si cela est difficile, il faut bien payer, mais je ne sais pas les détails de savoir si vous réellement aurez bien payé ...


En réponse aux détails de votre mise à jour: dites-lui que cela dépasse largement le cadre d'un seul programmeur junior. Vous pourrez peut-être faire quelques minutes de recherche et voir s'il existe un produit existant qui peut faire ce qu'il veut et voir si la page "Fonctionnalités" parle de personnalisation / plugins / extensibilité. Il peut également vouloir parler à un magasin de logiciels personnalisés si aucun produit existant n'est disponible, ou si un travail de programmation de plug-in approfondi doit être effectué. Il n'y a rien de mal à admettre qu'un projet est trop gros pour que vous puissiez le gérer - c'est beaucoup mieux que de le prendre en charge et d'échouer complètement (surtout s'il s'agit d'un membre de la famille - les fonctions familiales peuvent être maladroites et tendues pendant des années).

FrustratedWithFormsDesigner
la source
3
A friend of my family

Personnellement si cette phrase est impliquée, je ne prends pas le projet.


la source
2

En tant que pigiste, je n'accepte que les projets où je suis confiant de pouvoir le terminer à temps, dans le budget, de bonne qualité. Refuser un projet ne signifie pas chômage - du moins pas pour toujours. Accepter un projet que vous ne pouvez pas livrer coûte tout - argent, réputation, santé.

C'est parfois un peu plus difficile lorsqu'un bon client a besoin d'aide pour un nouveau projet qui ne correspond tout simplement pas à mes compétences; mais même alors, il vaut mieux être honnête et laisser quelqu'un d'autre le faire.

Dans votre cas, vous pouvez et devez refuser le projet - vous n'êtes pas assez expérimenté, vous ne connaissez pas la langue, c'est trop gros pour vous.

user281377
la source
1

Je fais de la programmation indépendante depuis plus de vingt ans. Pour qu'un projet réussisse vraiment, il faut au moins ce qui suit:

  1. Quelqu'un qui connaît les technologies de programmation, logicielles et matérielles utilisées pour le déploiement - ou des technologies suffisamment similaires pour apprendre les technologies de déploiement très rapidement
  2. Quelqu'un qui connaît le domaine du problème et qui est capable et désireux de traduire cela en spécifications que le programmeur peut utiliser. (Si le programmeur est également l'expert du domaine et que le projet est assez simple, les spécifications peuvent être dans leur tête ou des notes informelles.)
  3. Quelqu'un qui est capable, disposé et expérimenté dans la gestion des tâches du projet, du calendrier, etc., et qui connaît les types d'embûches que vous pouvez rencontrer avec des choses comme l'estimation et comment les éviter
  4. Quelqu'un pour gérer les communications et les relations entre toutes les parties prenantes du projet, y compris le (s) programmeur (s) et le (s) client (s)
  5. Des gens des deux côtés, consultant et client, qui sont expérimentés pour garder les affaires en cours solides, y compris les contrats et l'argent. Si vous n'avez pas cette expérience vous-même, vous pouvez vous en sortir avec un conseiller expérimenté jusqu'à ce que vous soyez.
  6. Une relation d'affaires indépendante où, si vous devez prendre une décision commerciale difficile, vous n'avez pas de problèmes en dehors du travail
  7. Une équipe suffisamment nombreuse, avec la bonne combinaison d'expertise, d'outils et de ressources, pour livrer un produit de qualité dans les délais requis

Vous décrivez un ami de la famille qui ne connaît rien à la programmation, qui veut que vous - un programmeur inexpérimenté - construisiez un système ERP en utilisant une technologie que vous ne connaissez pas.

Il me semble que cette situation manque définitivement sur # 1, # 3, # 6 et # 7, et peut-être tous. Comme le dit Adam sur Mythbusters, "c'est une recette pour un désastre."

Heck, je ne toucherais pas celui-ci avec un poteau de dix pieds moi-même. Je pourrais continuer encore et encore sur les autres drapeaux rouges que je vois ici, mais en gros, mon conseil est d'aller avec votre intuition, parce que vous avez raison: "rien de vraiment bon n'en sortira."

Puisque c'est un ami de la famille, si j'étais vous, je dirais simplement: "Vous avez un grand projet, et vous avez besoin de quelqu'un de vraiment bon, et je suis trop inexpérimenté pour vous donner les résultats que vous devriez avoir", et en rester là.

J'ai également constaté que lorsqu'un client a un problème dans un domaine, il est probable qu'il soit un problème dans d'autres. Un client potentiel qui envisagerait même de faire concevoir et mettre en œuvre un système ERP par un programmeur débutant est soit tellement ignorant qu'il constitue un danger pour lui-même et pour les autres, soit ridiculement bon marché, et l'un ou l'autre le mettrait dans ma liste de "rester à l'écart" .


FWIW, en tant que consultante / pigiste, je termine moi-même en remplissant les rôles de mon côté, avec les conseils de ma femme. Nous avons compris ce que sont tous ces éléments en voyant les projets échouer par manque - parfois, ce sont nos propres projets. Et même après vingt ans, et malgré la vérification de ces critères, je me retrouve toujours avec un projet occasionnel qui ne fonctionne pas - ce risque fait toujours partie du fait d'être en affaires. Je m'assure juste maintenant que les projets n'échouent pas à cause de tout ce que j'ai fait de mal et que les contrats sont structurés, donc je suis payé si l'autre côté échoue.

Bob Murphy
la source
0

Voulez-vous travailler avec les autres personnes impliquées?

Le projet n'est qu'une excuse pour rencontrer et s'associer avec les gens.

bmike
la source
J'aime ce point de vue. Nous devrions travailler ensemble sur un projet.
Jonathan Henson
Cela m'a très bien servi. Les détails du projet peuvent changer comme des sables dans une tempête. Les gens peuvent toujours vous surprendre, mais ils changent plus lentement.
bmike
0

Mon point de vue personnel serait de faire une petite exploration de ce qu'il veut, de quel calendrier, de quel type de coûts s'attend-il, etc. S'il s'agit en fait d'un gros ERP, l'aide pourrait durer des années et devenir vraiment laide. La gestion des déchets vs SAP serait un exemple de la façon dont cela pourrait coûter cher si vous voulez vraiment dire gros comme dans les budgets de projet à 9 chiffres.

Mon but en faisant l'exploration est de tracer une ligne dans le sable afin que ce soit clair pourquoi je pose les questions et ce que j'ai l'intention d'avoir en conséquence. "Dans quelle mesure est-ce que je vois cet être viable?" est la question que je me poserais en posant des questions sur la méthodologie, le budget et les délais, puis faire une petite recherche pour voir si les choses semblent être au niveau ou est-ce quelque chose qui peut se retrouver dans un site d'humour informatique comme The Daily WTF .

JB King
la source