¿Cómo decides si debes tomar un proyecto?


11

Soy un desarrollador bastante nuevo. Profesionalmente, he programado en C # durante dos años como pasante y 6 meses como desarrollador junior. Un amigo de mi familia necesita ayuda con un proyecto escrito en VB.net. Nunca he usado VB.net, así que estoy un poco preocupado allí.

Pero, la verdadera pregunta viene en el hecho de que una vez que miré los documentos para el proyecto, tengo la sensación de que nada realmente bueno saldrá de él. Tengo la sensación de que causará más estrés de lo que me gustaría tener en mi vida actualmente.

¿Cómo toman la decisión los desarrolladores experimentados de tomar el proyecto o simplemente dejarlo ir? ¿Cuáles son algunas buenas métricas para facilitar la decisión?

Editar

Esto en realidad parece un ERP muy grande en el que le gustaría que trabajara y no creo que él sepa nada sobre programación, así que no creo que el hecho de que soy muy junior haya pasado por su mente.


10
¿Es esta una decisión difícil? No te gustan las especificaciones y no crees en ellas. ¿Por qué querrías tomar este proyecto?
Vitor Py

2
Este es un ejemplo real que tengo ahora, pero sentí que sería útil en general abrir una discusión sobre cómo elegir proyectos, porque no hay preguntas similares.
J Lundberg

@J Lundberg: He actualizado mi respuesta en respuesta a su actualización.
FrustratedWithFormsDesigner

3
Si no conoce ninguna programación, ¿por qué insiste en VB.NET? Obviamente no estará trabajando en el proyecto contigo. No hay razón para usarlo sobre C # en .NET. Puede compilar el VB.NET existente y usarlo como una biblioteca en su código C # o viceversa.
Jonathan Henson

"necesita ayuda": ¿se paga o no?

Respuestas:


11

Según mi experiencia: nunca trabaje con dinero para miembros de la familia con los que tenga que pasar vacaciones o amigos que desee conservar. Una de las partes involucradas siempre sentirá que la otra parte está cobrando demasiado o no está pagando lo suficiente y que le hicieron un favor a la otra parte. Cuando se acerca la fecha límite, generalmente son los menos comprensivos y, por lo general, son muy malos durante la prueba beta porque si tienes un error, que lo harás, no lo entenderán. Siempre es un desastre.

Solía ​​ser idealista y pensar que todos los demás solo necesitaban mejores habilidades con las personas, pero no, así es como es. Las personas que no entienden el proceso de desarrollo de software SIEMPRE se asustarán cuando algo no cumpla con sus expectativas en el primer momento en que lo vean. Esto es cierto en los negocios con los gerentes de proyectos tanto como con los miembros de la familia. El problema es que debes mantener una relación con familiares y amigos, y las cosas nunca son estrictamente comerciales.

Dicho esto, si el proyecto va a aumentar sus niveles de estrés y no necesita el dinero, ¿por qué tomarlo? Especialmente si ya tiene un trabajo de desarrollo de software en el que desea sobresalir, diría que debe dedicar la mayor parte de su esfuerzo de trabajo a ser excelente en su trabajo diario porque allí es donde finalmente será recompensado por un trabajo de calidad.

Si necesita el dinero y está de acuerdo con la posible pérdida de un amigo de la familia, entonces tome el trabajo. Lo peor que podría pasar, además de las cosas que mencioné antes, es que aprendes lo que eres y no eres bueno, o aprendes que muerdes más de lo que puedes masticar, lo que hace que el proyecto sea malo dolor de cabeza debido a su inexperiencia. Lo he hecho dos veces con mi trabajo actual, afortunadamente tengo muy buenos empleadores. Aunque fue una miseria mientras me sentía muerto en el agua, emergí como un programador mucho mejor con un conjunto de habilidades mucho más amplio que antes.

No hay cálculo para determinar qué trabajos dejar y mantener, solo la experiencia y su personalidad. Solo necesita decidir lo que valora y perseguirlo. Cosas para considerar:

¿Es este un proyecto en el que disfrutaré trabajando? ¿Es el equipo un equipo con el que disfrutaré trabajando?

¿Qué tipo de pago ofrecerán? Si no hay ninguno, ¿qué desarrollo profesional recibiré? ¿Ofrecen algún tipo de riesgo compartido (es decir, opciones sobre acciones, porcentaje de ganancias)? Este es un gran persuasor para mí.

De todos modos, estos son solo principios para usar en la toma de decisiones. Todo depende de lo que valores. Por ejemplo, valoro los desafíos intelectuales y el tiempo con mi familia, por lo que generalmente le doy una alta prioridad a lo que es el proyecto y las habilidades que aprenderé al hacerlo. Sin embargo, también me aseguro de decir por adelantado que solo estoy trabajando 2 o 3 noches a la semana para poder pasar tiempo con mi esposa e hijos, ya que ya trabajo todo el día. Ajuste el plazo para cumplir con esta demanda. Si no les gusta eso, entonces no acepto el trabajo.

Hagas lo que hagas, asegúrate de indicar claramente lo que harás y lo que no harás, y asegúrate de que expresen claramente sus expectativas antes de que tomes el trabajo. Lo peor que puede pasar es que el cliente tenga expectativas no expresadas y que usted haya subestimado esas expectativas.

PD: Realmente desearía haber leído este artículo anteriormente en mi carrera. Se aplica a mi último párrafo. http://www.joelonsoftware.com/articles/fog0000000356.html


55
+1 para "nunca trabajar para la familia". No, a menos que ninguna de las partes haya invertido demasiado en él y lo vea como pura diversión, e incluso entonces uno debe tener cuidado.
Ethel Evans

11

¿Cómo toman la decisión los desarrolladores experimentados de tomar el proyecto o simplemente dejarlo ir?

¿Necesito el trabajo? Si es así, "tomo" el proyecto.

¿Cuáles son algunas buenas métricas para facilitar la decisión?

¿Cuántas opciones tengo? ¿Más de 1? Puedo elegir entre las alternativas.

¿Solo 1? Bien. Eso es entonces.

La cuestión del "estrés en mi vida" es discutible; no tomar un proyecto significa no mantener el empleo; que tiene consecuencias desastrosas.

Si tiene el tipo de libertad financiera donde el "estrés" es un factor decisivo, eso es realmente genial.


3
+1: Pensarías que habría más que eso, pero eso es más o menos lo que se reduce a cada vez.
Ryan Hayes

@ S.Lott- Estoy seguro de que con frecuencia tienes la oportunidad de trabajar en múltiples proyectos. Parece poco probable que se encuentre en situaciones de tipo "hacer o morir" muy a menudo. Podría estar asumiendo demasiado, pero esto parece ser un poco tonto, ya que alguien con su experiencia seguramente ha optado por rechazar un proyecto aquí y allá y probablemente también haya aceptado proyectos antes cuando no era necesario. sentido "atado por dinero en efectivo".
Morgan Herlocker

1
@ironcode: "Podría estar asumiendo demasiado". Cierto. Nunca he tenido la oportunidad de rechazar un proyecto debido al estrés.
S.Lott

@ S.Lott Me refiero al estrés en el sentido de que ya tengo un trabajo y hacer algo como esto podría dejarme sin tiempo para mi familia.
J Lundberg

@J Lundberg: Por favor, actualice su pregunta para incluir todos los hechos.
S.Lott

5

¿Qué ganarás con este proyecto? ¿Dinero? ¿Experiencia? ¿Algo más?

  • Dinero: es de un miembro de la familia (trato de no hacer negocios con la familia, pero esa es otra discusión), es pequeño (por lo que parece), eres bastante menor, así que no esperes mucho dinero de él (basado en mis experiencias).

  • Experiencia: ¡puedes aprender un nuevo idioma! Eso podría ser valioso en el futuro, puede darle una ligera ventaja sobre los desarrolladores de .NET que solo conocen C #.

Pero tu instinto te dice que este proyecto será malo . ¿Porqué es eso? Parece que al menos podrías obtener algo de experiencia de esto.

La mayoría de los contratistas comenzarían por ver cuánto dinero obtendrán para decidir asumir un proyecto. Idealmente, los proyectos más difíciles conducen a más dinero. Si esto es difícil, debería pagar bien, pero no sé los detalles para saber si realmente se le pagará bien ...


En respuesta a los detalles en su actualización: dígale que esto está más allá del alcance de un solo programador junior. Es posible que pueda investigar unos minutos y ver si hay un producto existente que pueda hacer lo que quiere y ver si la página "Características" habla de personalización / complementos / extensibilidad. También es posible que desee hablar con una tienda de software personalizado si no hay ningún producto existente, o si se necesita hacer un extenso trabajo de programación de complementos. No hay nada de malo en admitir que un proyecto es demasiado grande para que lo manejes; es mucho mejor que asumirlo y fallar por completo (especialmente si se trata de un miembro de la familia, las funciones familiares podrían ser incómodas y tensas durante años).


3
A friend of my family

Personalmente, si esta frase está involucrada, no tomo el proyecto.


2

Como profesional independiente, solo acepto proyectos en los que estoy seguro de poder completarlo a tiempo, dentro del presupuesto y de buena calidad. Rechazar un proyecto no significa desempleo, al menos no para siempre. Aceptar un proyecto que no puede entregar cuesta todo: dinero, reputación, salud.

A veces es un poco más difícil cuando un buen cliente necesita ayuda para un nuevo proyecto que simplemente no se ajusta a mis habilidades; pero aun así, es mejor ser honesto y dejar que alguien más lo haga.

En su caso, puede y debe negar el proyecto: no tiene suficiente experiencia, no conoce el idioma, es demasiado grande para usted.


1

He estado haciendo programación independiente por más de veinte años. Para que un proyecto sea realmente exitoso, necesita al menos lo siguiente:

  1. Alguien que conozca las tecnologías de programación, software y hardware utilizadas para la implementación, o tecnologías lo suficientemente similares como para aprender las tecnologías de implementación realmente rápido
  2. Alguien que conoce el dominio del problema, y ​​es capaz y está dispuesto a traducirlo en especificaciones que el programador puede usar. (Si el programador también es el experto en el dominio y el proyecto es lo suficientemente simple, las especificaciones pueden estar en su cabeza o en notas informales).
  3. Alguien que es capaz, dispuesto y con experiencia en la gestión de las tareas del proyecto, el cronograma, etc., y conoce los tipos de dificultades que puede enfrentar con cosas como la estimación y cómo evitarlas.
  4. Alguien para gestionar las comunicaciones y las relaciones entre todos los interesados ​​del proyecto, incluidos los programadores y los clientes.
  5. Personas de ambos lados, consultores y clientes, que tienen experiencia en mantener sólidos los asuntos comerciales actuales, incluidos los contratos y el dinero. Si no tiene esta experiencia usted mismo, puede sobrevivir con un asesor experimentado hasta que lo tenga.
  6. Una relación comercial independiente donde, si tiene que tomar una decisión comercial difícil, no tiene problemas fuera del trabajo
  7. Un equipo lo suficientemente grande, con la combinación adecuada de experiencia, herramientas y recursos, para entregar un producto de calidad dentro del plazo requerido

Describe a un amigo de la familia que no sabe nada sobre programación, que lo quiere a usted, un programador inexperto, para construir un sistema ERP utilizando una tecnología que no conoce.

Me parece que esta situación definitivamente falla en el # 1, # 3, # 6 y # 7, y tal vez en todos ellos. Como Adam dice en Mythbusters, "Esta es una receta para el desastre".

Diablos, yo tampoco tocaría este con un poste de diez pies. Podría seguir y seguir sobre las otras banderas rojas que veo aquí, pero básicamente, mi consejo es que sigas con tu instinto, porque tienes razón: "nada realmente bueno saldrá de eso".

Dado que este es un amigo de la familia, si yo fuera usted, solo diría: "Tiene un gran proyecto y necesita a alguien realmente bueno, y soy demasiado inexperto para darle los resultados que debería tener", y dejarlo así.

También descubrí que cuando tienes un cliente que tiene un problema en un área, es probable que lo sea en otras. Un cliente potencial que incluso consideraría tener un sistema ERP diseñado e implementado por un programador junior es tan ignorante como para ser un peligro para sí mismo y para los demás, o ridículamente barato, y cualquiera de ellos los pondría en mi lista de "mantenerse alejado" .


FWIW, como consultor / freelance, termino desempeñando los roles de mi lado, con el consejo de mi esposa. Hemos descubierto cuáles son todos esos elementos al ver que los proyectos fallan debido a la falta de ellos; a veces, han sido nuestros propios proyectos. E incluso después de veinte años, y a pesar de verificar estos criterios, todavía termino con un proyecto ocasional que no funciona: ese riesgo siempre es parte de estar en el negocio. Ahora me aseguro de que los proyectos no fracasen por algo que he hecho mal, y que los contratos están estructurados para que me paguen si la otra parte se equivoca.


0

¿Quieres trabajar con las otras personas involucradas?

El proyecto es solo una excusa para conocer y asociarse con personas.


Me gusta ese punto de vista. Deberíamos trabajar juntos en un proyecto.
Jonathan Henson

Me ha servido muy bien. Los detalles del proyecto pueden cambiar como arenas en una tormenta. La gente aún puede sorprenderte, pero cambian más lentamente.
bmike

0

Mi opinión personal sería hacer una pequeña exploración de lo que quiere, qué línea de tiempo, qué tipo de costos espera, etc. Si de hecho se trata de un gran ERP, la ayuda podría durar años y ser realmente fea. Waste Management vs SAP sería un ejemplo de lo costoso que esto podría ser si realmente quiere decir grandes presupuestos de proyectos de 9 dígitos.

Mi objetivo al hacer la exploración es dibujar una línea en la arena para que quede claro por qué estoy haciendo las preguntas y qué pretendo tener como resultado. "¿Qué tan viable veo este ser?" es la pregunta que tendría, ya que cuestionaría la metodología, el presupuesto y los plazos por adelantado y luego investigaré un poco para ver si las cosas parecen estar a nivel o no, o es algo que puede terminar en algún sitio de humor de TI como The Daily WTF .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.