El proyecto para el que me contrataron está descarrilado debido a los requisitos en constante cambio, ahora estoy yo en el lugar

Me contrataron como desarrollador frontend para desarrollar un backend de administración para una próspera startup europea. La estimación inicial que tenían en mente era de 6 meses, lo cual era apropiado. Es un equipo de 3 personas compuesto por el CEO/Propietario, un desarrollador Backend y un desarrollador Frontend.

Inmediatamente después de que me contrataron, me pidieron que me concentrara en hacer pruebas para su aplicación. Esto requirió cambios estructurales sustanciales para respaldar el marco de prueba y me tomó alrededor de 2 meses y medio.

La plataforma de administración, tal como se concibió originalmente, era del tipo de "edición en vivo", por lo que en este punto creé los componentes que vivían dentro del marco de frontend que admitiría esta funcionalidad. Esto, junto con convertirme en el único administrador del arnés de prueba que había desarrollado, me tomó alrededor de 2 meses.

Luego, el alcance cambió y se convirtió en un panel de administración en toda regla. En términos de estructura, esta es sustancialmente diferente y requiere una plataforma separada. Desarrollar la base para esto y mantener el trabajo anterior que había hecho me tomó alrededor de 1 mes.

Avance rápido 6 meses, y ni siquiera estamos cerca de terminar el proyecto para el que me contrataron. Solo tenemos una base, como máximo, y se están poniendo muy ansiosos. Se volvieron más "prácticos", solicitando reuniones diarias de pie. También comenzaron a desconfiar de mis recomendaciones, llevando el proyecto en direcciones que no creo que se deban seguir, pero no digo nada. También me pidieron que redujera mis horas, y que entregara más rápido, y han reducido la comunicación conmigo.

Como soy un profesional independiente que recibe calificaciones y reseñas por el trabajo, puedo ver claramente que se están frustrando y estoy haciendo todo lo posible para ayudar y cooperar, incluso si, dada mi experiencia, puedo ver que el proyecto no va. en la mejor dirección, pero temo que dada su mala experiencia conmigo, me den una mala crítica y eso baje mi reputación, así que estoy tratando de cumplir. Siento que simplemente seguir su dirección a ciegas dañará más el proyecto y, a su vez, me afectará aún más.

¿Hay alguna manera de que pueda revertir esta situación?

¿Qué dice su contrato sobre el caso cuando cambia el alcance? Si su alcance original era de 6 meses y ahora el alcance es mucho mayor, no es culpa suya.
No especificamos. Es un contrato ad-hoc y acabamos de tener una reunión antes de empezar. Estoy trabajando por horas para ellos como desarrollador frontend, eso es todo lo que dice nuestro contrato. El resto es acuerdo verbal.
Entonces, el software NO está listo, y NO porque no puedas probarlo, sino por su solicitud de eliminar a la mitad de los desarrolladores del desarrollo. ¿Cómo es ese tu problema?
Solo curiosidad por saber dónde te van a dar una mala calificación.
Parece que lo contrataron como desarrollador, no como gerente, y este es un gran problema de gestión de proyectos. Si bien siempre debe dar a conocer los posibles problemas (después de todo, usted es el experto), si no es el gerente del proyecto, las fallas de la administración no son su culpa.
¿" Bajar mis horas " significa trabajar menos horas o cobrar menos por hora? Me suena más a lo primero, pero lo segundo parece encajar mejor en el contexto.
Últimos 2 bloques TLDR: «[D]ada mi experiencia, puedo ver que el proyecto no va en la mejor dirección, [están] llevando el proyecto en direcciones que no creo que se deban seguir, solo seguir su dirección ciegamente lo hará daño más al proyecto, pero no voy a decir nada. Como soy un freelancer que recibe calificaciones y reseñas por el trabajo, tengo miedo de que […] me den una mala reseña y eso baje mi reputación, así que estoy tratando de cumplir.» ¿Ves el problema? Si un plomero/organizador de bodas/mecánico de automóviles le hiciera esto, ¿le gustaría que fuera "obediente" o sincero?
@PeterTaylor Leería " bajar mis horas " aquí como " hacer el mismo trabajo en menos horas ". Lo que cubre bastante lo anterior, pero dado que OP realmente no puede hacer eso para mantener la calidad, podría resultar en lo último.
Siempre es un error suponer que el tiempo previsto requerido para un cambio de software es cualquier cosa menos una conjetura. Cuando se está escribiendo, cualquier programa se está escribiendo por primera vez (al menos, desde la perspectiva de la persona que lo escribe). La posibilidad de que alguna dificultad imprevista retrase la finalización nunca es nula. Hacer "estimaciones" de finalización del tiempo que resultan ser consistentemente optimistas, y pensar que esto se puede arreglar "trabajando más", es el sello distintivo de la administración imbécil.

Respuestas (8)

DOCUMENTAR TODO

Cada vez que haya un cambio de alcance, haga lo siguiente:

  • Documente el cambio.
  • Muestra los efectos que esto tendrá en tu trabajo
  • Enviar una nueva línea de tiempo
  • Haga que las partes interesadas firmen

El alcance del alcance ocurre, pero la única forma de evitar ser el culpable es documentar todo, demostrar el efecto, hacer que las personas firmen para que tenga un rastro en papel.

Entiendo cómo esto podría protegerme en el futuro, pero ¿cómo va a ser constructivo en la situación actual? ¿Sugiere que demos un paso atrás y replanteemos el proyecto? En el estado irracional en el que se encuentran, no les gustará ver que es probable que el proyecto tarde otros 6 meses en completarse.
@AlainJacomet Es tu única opción. Les va a gustar que el proyecto se prolongue sin un final a la vista y sin motivos mucho menos que tener los detalles expuestos frente a ellos. Es lo profesional que hay que hacer.
@Alain Jacomet demasiado tarde. Los dedos ya están apuntando. Lo que puede hacer es tratar de comprender tanto como sea posible y ser flexible, pero diga claramente que no puede trabajar más de lo que puede sostener.
Además, solo para extender la respuesta, no se apresure . No empieces a desarrollar cosas que aún no han sido finalizadas en un documento o que no son más que una idea que está flotando. No trabaje en un documento que pueda cambiar a mitad del desarrollo. Cuando comienzo una tarea, tomo una copia local del documento para evitar que esto suceda. Cualquier cambio realizado debe ser informado/documentado explícitamente o no responderé a ellos. Esto efectivamente requiere que otros también documenten las cosas (que se relacionan con usted), lo que amplía la idea de documentar todo usted mismo.
@AlainJacomet: Lo mejor que tiene es una repetición paso a paso de los eventos para explicar por qué se adelanta la fecha límite. Por ejemplo: (1) Querías [esto]. Iba a estar hecho para [entonces]. (2) Entonces dijiste que querías [eso]. Esto agrega [tiempo] a la fecha límite. (3) Luego cambiaste el desarrollo hacia [aquellos]. Tomará al menos [tiempo] cambiar el código existente para que se ajuste a eso (y así sucesivamente...). Esto demuestra claramente que el cambio de la fecha límite está relacionado con el cambio de los requisitos. Tienes que aclararles esa conexión.
Envíe un nuevo cronograma Esta es la parte más importante, cada vez que tenga la tarea de hacer algo diferente o nuevo , ajuste el cronograma/los plazos y aclare a la parte interesada cuáles son las repercusiones.
Creo que esta respuesta podría mejorarse con un mayor énfasis en por qué es tan importante proporcionar nuevas estimaciones actualizadas. En mi experiencia, cuando las personas piden cambios, piensan que solo será un reemplazo 1:1 de lo que pidieron antes. Rara vez se dan cuenta de que lo que están pidiendo significará más trabajo. Tienes que hacer que esto sea obvio de inmediato, para evitar que digan cosas como "si me hubieras dicho eso la primera vez, no te habría pedido que cambiaras esto".
+1 Exactamente lo que iba a decir. Los proyectos fracasan y la desconfianza se cuela por falta de comunicación. Al documentarlo todo y comunicarlo bien, el aumento del alcance no sería tan inesperado.
@ajf- esto no terminará bien para ti. Un freelancer no puede hacer ambas cosas. No pueden proporcionar al cliente estimaciones de tiempo y también facturar por horas. Si dices que una tarea lleva 10 horas. ¿Si terminas en 9 horas? El cliente se ahorra 1 hora en costes. Acordaron pagar 10 pero solo pagaron 9. Si dices que una tarea toma 10 horas y terminas en 11 horas. El cliente se queja de que pagó de más por 1 hora. Estás jodido de cualquier manera. Cuando un autónomo factura por horas. Debería ser "aquí estoy, hago lo que quieras, y cobro por hora, los riesgos ahora son tu problema".

Mea culpa

Creo que la respuesta de @ Neo está en el camino correcto, pero no estoy de acuerdo con la implementación. Considerar

Desde que estoy aquí, he cometido algunos errores. Uno de los primeros grandes fue que cuando me dijo que desarrollara un arnés de prueba para la aplicación, no insistí en que analizáramos ese cambio. En ese momento, simplemente acepté que un arnés de prueba era algo bueno y seguí adelante con eso. Eso tomó dos meses y medio. Mantenerlo también ha costado X meses.

Sin darme cuenta de ese error, cuando me dijiste que cambiara de "edición en vivo" a un panel administrativo completo, lo repetí. No insistí en evaluar el cambio. Pasamos otro mes haciendo ese cambio.

No puedo seguir cometiendo el mismo error. A partir de ahora, espere actualizaciones de la línea de tiempo cada vez que se proponga un cambio. Aquí está la situación tal como están las cosas hoy...

Luego, explique cuánto tiempo llevará terminar su conjunto actual de tareas según los requisitos actuales. Si están proponiendo nuevos cambios, explique cómo cambiarán esa línea de tiempo. También explique qué sucede si no hace esos cambios ahora y los hace más tarde. Incluso puede hacer eso con los cambios que han solicitado pero que no ha implementado.

Sigo con lo que dijiste aquí, por lo que es posible que me falten partes de la línea de tiempo. Si es así, asegúrese de escribir esas partes para ellos (realmente no necesitamos verlas a menos que necesite ayuda para hablar sobre ellas).

La ventaja de este enfoque es que involucra que usted asuma la culpa. Es de suponer que están de acuerdo en que has cometido errores, por lo que estás empezando por estar de acuerdo. Y no te señala con el dedo excepto a ti. Resalta los problemas y eventualmente pasa a las soluciones.

No olvide incluir el mantenimiento continuo del arnés de prueba en eso. Si eso está ocupando la mitad de tu tiempo, entonces díselo. Pueden cambiar el trabajo de usted (ya sea en la parte delantera o en el arnés de prueba) o pueden vivir con una línea de tiempo más larga.

Si no les cuentas la realidad de la situación, seguirás teniendo el mismo problema.

Avanzando

Cuando leo esto, lo que realmente me llama la atención es el arnés de prueba. Son dos meses y medio de un alcance de seis meses, incluso antes del mantenimiento. Por eso dije X. No sé qué es X, pero parece que era importante. Si pasó incluso medio mes en ello desde entonces, se convirtió en la mayor parte de sus primeros seis meses y posiblemente la mayor parte de su tiempo allí si fue más. Realmente necesitas cuantificar eso.

Calcule cuánto tiempo tomaría hacer el proyecto original desde aquí. Tal vez con algunas campanas y silbatos adicionales que ya ha agregado. No es necesario que saques las cosas. Pero si no agregara nada más que no estuviera en los requisitos originales, ¿cuál sería su cronograma? Luego muéstreles cómo cualquier requisito nuevo afecta ese cronograma. Luego muéstreles cómo sus sugerencias actuales impactarían el cronograma. Nunca necesita decir que no, pero dígales cuánto tiempo están agregando.

Pueden tener Agile o Waterfall. No se pueden mezclar y combinar. Agile acepta requisitos cambiantes porque el sistema siempre funciona en algún nivel. Entonces, todos los requisitos están en el sprint actual o no existen. Waterfall intenta programar todo el proyecto a la vez. Eso significa que cada vez que cambian los requisitos de tiempo, debe cambiar todo el programa. En teoría, el gerente del proyecto debe manejar eso, pero en la práctica, si eso no sucede, entonces es parte de su responsabilidad como contratista. Necesitas manejar tu horario.

Considere también la posibilidad de que parte del trabajo que está planeando hacer actualmente en el front-end se pueda hacer en el back-end en su lugar. Si es así, debe cuantificar cuánto de su tiempo le tomaría. Deje que el desarrollador de back-end cuantifique cuánto tiempo le llevaría codificar en el back-end. Deje que el gerente elija dónde sería mejor hacerlo. Incluso si lleva más tiempo en el back-end, aún puede tener sentido hacerlo allí si está más atrasado y el desarrollador del back-end lo está esperando actualmente.

Es posible que el desarrollador de back-end se haga cargo del arnés de prueba. Si solo hay dos desarrolladores y le está quitando demasiado tiempo, no hay muchas otras opciones. Y estaría mucho mejor si pudiera concentrarse en su proyecto original. Si el desarrollador de back-end lo ha estado esperando, entonces esto le da trabajo mientras tanto.

Esta respuesta tiene mi voto. Las otras respuestas dicen muchas cosas buenas sobre cómo evitar que el escenario descrito en la pregunta ocurra en el futuro, pero esta hace mucho más para explicar cómo proceder en este momento , para pasar del escenario actual a uno donde las otras respuestas puede ser aplicado.
Con más ofertas (cada una con un error de estimación independiente), es más probable que el comprador elija una que subestime el esfuerzo requerido. Más ofertas (ya sea más de una oferta en un problema u ofertas en un conjunto de problemas) significa un factor de carga más alto para tener en cuenta eso. Pero +1, esto está bien hecho.
Además de asumir la responsabilidad de tus acciones, estás aliviando la culpa implícita de la que tal vez ni siquiera se den cuenta. Haces que sea más fácil asumir la responsabilidad de lo que han hecho; tiende a alentar a las otras partes a "bajar la guardia"
Esto es genial. Como decía Anaximandro, no solo se trata de evitarlo en el futuro, sino que da una acción inmediata de mejora. Una cosa que mencionas que quiero ampliar es la idea de Waterfall vs. Agile. Lo mencionas, pero creo que cambiar a Agile (o un sistema similar a Agile) sería un paso importante para mejorar la situación actual. Les da más control, transparencia y retroalimentación sobre el estado del proyecto. Agregué una respuesta para profundizar más en esto.
@Brythan OP debe consultar a un abogado antes de asumir cualquier culpa. Dependiendo del contrato y del país, esto puede tener ramificaciones graves con respecto a las sanciones contractuales y la responsabilidad en el caso de que el cliente pierda ganancias, etc. debido a que OP no cumplió con el plazo. Es más prudente no jugar el juego de la culpa y permanecer neutral al señalar las circunstancias que llevaron a la situación actual, así como al presentar soluciones inmediatas.

¿Hay alguna manera de que pueda revertir esta situación?

Creo que estás en un pequeño problema aquí, ya que no me parece que hayas manejado sus expectativas .

Lo mejor que puede hacer tan tarde en el juego es documentar todo el escenario , incluida la línea de tiempo , tal como lo ha hecho con nosotros. A veces, los clientes tienen poca memoria y solo recuerdan el pasado inmediato (ahora) o a corto plazo. Dudo que recuerden lo que te pidieron que hicieras hace varios meses.

Recordarles

Asegúrese de que cuando detalle el trabajo, tenga en cuenta todas y cada una de las decisiones que le obligaron a modificar drásticamente la arquitectura.

Más allá de eso, no estoy seguro de qué más se puede hacer.

por tu futuro

Asegúrese de documentar todo lo que hace y, si tiene una solicitud de cambio (cambio en la declaración de trabajo original), asegúrese de documentar el cambio y el impacto en la línea de tiempo .

A nadie le gusta una persona que comienza a señalar con el dedo y dice "no es mi culpa" cuando las cosas están en llamas. En todo caso, me gustaría hacer algo que sea productivo.
@AlainJacomet No estoy sugiriendo señalar con el dedo en absoluto, solo describo lo que se acordó y el impacto que han causado los cambios que el cliente solicitó. ¿Qué otra opción tienes en este momento? (Control de daños si lo desea)
El control de daños suena apropiado, tal vez junto con los otros puntos que describiste.
@AlainJacomet Estuve allí, hice eso. No pude encontrar otra forma de salvarlo en mi caso.
@AlainJacomet Una pequeña corrección. A nadie le gusta una persona que argumenta "no es mi culpa" cuando las cosas están en llamas Y cuando ese argumento no tiene sentido . Por ejemplo, cuando es obvio de quién es la culpa o es culpa de todos. Pero si argumentas "no es mi culpa" y es realmente relevante, realmente no importa que alguien se oponga estéticamente a eso.

pero no digo nada

¿No es eso una gran parte del trabajo de cualquier desarrollador, especialmente los autónomos?

Sus gerentes no son desarrolladores, no pueden diferenciar los cambios de requisitos pesados ​​de los más ligeros, ni las direcciones buenas (desde el punto de vista del desarrollador) de las direcciones malas (todavía pueden tener buenas razones de marketing para probar esas direcciones, por ejemplo).

Cada vez que discuta cosas nuevas para hacer, debe decirles cuánto tiempo llevará (o cuán impredecible es este tiempo), incluso si no preguntan .

¡Exactamente! El autor de la pregunta parece preocupado por el cronograma y el presupuesto. Alguien que tiene alguna responsabilidad en estos temas no puede esperar lograr un buen resultado en ellos sin ofrecer orientación.

Tienes que controlar los daños porque, en mi opinión, mucho de esto es culpa tuya.

Debería haber gestionado los cambios más rápido o haberse asegurado de que quedara claro que los 6 meses ya no se aplicarían si querían que se hiciera algo más. En su lugar, simplemente recaudó dinero mientras observaba cómo los plazos se desvanecían.

¿Hay alguna manera de que pueda revertir esta situación?

Opción 1: Haz el trabajo y deja de perder el tiempo.

Opción 2: Infórmeles sobre los plazos basados ​​en la realidad, las razones por las que no se cumplirá el original y siga adelante a partir de ahí. Las personas inteligentes entenderán, puede que no estén contentas o impresionadas, pero entenderán.

Como freelancer, tu reputación es tu mayor activo, necesitas ser mejor, más organizado, más rápido y más profesional de lo normal para construir una reputación, a veces esto significa trabajar unas horas extra gratis en situaciones de presión.

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
@Jon Los comentarios se movieron, no se eliminaron. No tenemos la opción de moverlos selectivamente. Las discusiones extensas en los comentarios casi siempre conducirán a que se mueva el conjunto completo. Podríamos recuperar selectivamente algunos de esos comentarios, pero debería haber una buena razón para ello. Además, no debe haber expectativas de que los comentarios se queden para siempre. La ventana emergente sugiere dejar un comentario para mejorar la publicación , no para explicar el voto negativo. El OP vio claramente la sugerencia y decidió no cambiar la respuesta. Por lo tanto, el comentario está obsoleto. No estoy seguro de por qué quieres que se quede.

Para decirlo sin rodeos, si esto es su culpa, terminará recibiendo un golpe en su reputación o en su billetera.

Como profesional, generalmente se espera que pueda proporcionar estimaciones razonables de cuánto tiempo tomará el trabajo y que notifique a su empleador de inmediato si el cronograma deja de ser realista.

No digo que tú seas el único culpable, pero si hay algo que realmente deberías haberles dicho hace 4 meses, entonces cometiste un error que les está costando . Y cuanto más tiempo permaneces en silencio, peor se vuelve la situación.

Dicho esto, tengo entendido que ya hay un desarrollador Frontend y Backend en el equipo que también debería tener una idea razonable del impacto de los cambios de alcance. Entonces parece que todos están entrando en pánico y apretando a los demás, o tal vez simplemente confían más entre ellos que en ti, por lo que te están apretando.

Una cosa para recordar es que muchas veces, cuando todos están estresados, las personas se desincronizan por completo y malinterpretan por completo lo que hacen los demás. Por ejemplo, tal vez lo que usted ve como "manos a la obra" es que ellos quieren superar los obstáculos rápidamente, y lo que usted ve como "disminuir la comunicación" es en realidad que todos tienen prisa. De la misma manera, pueden estar tomando las cosas que haces de manera incorrecta. La solución a estos problemas es la COMUNICACIÓN.

Que haría yo

Esto se basa en una serie de suposiciones que estoy haciendo sobre la situación, así que ajuste según sea necesario.

Primero, propondría rápidamente un cronograma realista para el proyecto en papel y calcularía el tiempo máximo que puede trabajar y el dinero mínimo que aceptaría si la alternativa es perder el trabajo y una crítica muy mala. Necesita este tipo de cifras en su cabeza porque las cosas pueden estallar rápidamente en un proceso de negociación. Y averigüe si están más preocupados por el presupuesto o por el cronograma, si puede.

Luego entre y diga "Chicos, este proyecto obviamente está estresando a todos. ¿Podemos dar un paso atrás y tener una discusión tranquila al respecto? Quiero entender y tal vez contribuir a cómo vamos a abordarlo desde aquí".

Si se niegan, entonces diles que aunque seguirás dando tu mejor esfuerzo, no puedes cumplir con las expectativas que tienen de ti en este momento porque hay demasiado trabajo y poco tiempo.

De lo contrario, puede tener una discusión con ellos sobre el proyecto. No seas conflictivo. Haga hincapié en que comprende que existen presiones comerciales complejas y que las decisiones finales dependen de ellos, pero presente lo que cree que es el mejor curso de acción desde su punto de vista. Si le lanzan una bola curva (por ejemplo, una función de la que no está seguro de cuánto tiempo se necesitaría), dígales que tendrá que investigarla antes de poder confirmar que es realista.

Lo más importante es presentar soluciones , no problemas. En lugar de "No me dijeron nada sobre bla", di "¿Podrías informarme sobre bla en el futuro?"

La reputación se vería afectada, ¿exactamente a los ojos de quién ? Muchos desarrolladores han visto proyectos mal administrados, por lo que reconocerían uno incluso si escucharan los primeros síntomas.
@mathreadler "Oh, no contrates a ese profesional independiente. ¡Nos dijo que llevaría 6 meses hacer nuestro proyecto y realmente tomó 1 1/2 años!". La mayoría de los freelancers trabajan para clientes y no directamente para otros desarrolladores. Lo primero que debe aprender un freelancer es que no es solo un desarrollador.
@Voo, podría responder fácilmente a eso diciendo "bueno, los requisitos se cambiaron continuamente, por lo que, por supuesto, el tiempo estimado para terminar también cambió".
@mathreadler Además de que el desarrollador no informa al cliente sobre ese cambio de marco de tiempo antes de implementarlo (un error que se ha discutido en detalle, por lo que no vale la pena entrar), el punto es que, como trabajador independiente, vives de boca en boca. Si un posible cliente hablara con su ex empleador y escuchara la oración anterior, nunca tendría la oportunidad de decirle eso, porque el cliente acudiría a una de las docenas de competidores directos.
@Voo, ¿un cliente simplemente asume que los cambios en los requisitos no provocan cambios en el tiempo estimado para terminar? Bueno, supongo que se lo merecían entonces...
@mathreadler Nunca trabajaste directamente con ningún cliente no técnico antes de que lo tomara. Si una empresa te contrata, se supone que eres el experto. No es trabajo del cliente obtener suficiente conocimiento técnico y comprensión de la base del código (¿cómo funcionaría eso?) Si pasa más tiempo con usuarios no técnicos, aprenderá que les resulta muy difícil estimar qué es un problema difícil y qué no lo es .
Y al final del día, simplemente no importa. Como freelance, vives y mueres de boca en boca. No importa si el boca a boca es correcto o no: teniendo en cuenta cuántas personas están haciendo este tipo de trabajo, si alguien escucha comentarios negativos sobre usted, elegirán a uno de las docenas de sus competidores.
Pueden tener dificultades para estimar la dificultad técnica o el tiempo de implementación de las cosas, @Voo, pero también debería ser de su interés mantenerse informados al respecto. Sí, buena suerte encontrando personas que puedan hacer las mismas cosas.

Usted escribió: "No especificamos. Es un contrato ad-hoc y solo tuvimos una reunión antes de comenzar".

Esta es su causa raíz. Hay suficiente trabajo por ahí que cualquier éxito de este proyecto le causará solo pequeños problemas, en mi opinión. Además, muchas empresas también entienden cómo sucedió esto y no lo culpan.

Recuerde, si bien ellos tienen influencia sobre su reputación, usted tiene influencia en el sentido de que han gastado una gran cantidad de dinero y tiempo en esto y gastarían más en otra persona. Has aprendido tu lección también en la planificación. El 80% de un proyecto debe estar en planificación y el 20% en implementación.

Ha aprendido la lección sobre el uso de un buen contrato en el trabajo por contrato y, siempre que cumpla con sus obligaciones contractuales, no debería preocuparse por su reputación. De hecho, siempre que cumpla con sus requisitos, corren peligro si le dan calificaciones bajas o una revisión.

En resumen, ¡cree un buen contrato y haga verdaderas reuniones de planificación! Puede recuperarse de esto, pero ahora debe hacerlo de la manera correcta, que es protegerse a sí mismo y a su cliente mediante el uso de un contrato y un plan real paso a paso, paso a paso, que cubra todo, desde el idea general a la ubicación exacta de los elementos de la ventana.

Aún así, en mi experiencia, consideraría esto como una buena lección aprendida y buscaría un nuevo comienzo en otro lugar, tomando mis bultos con calma.

O adopte una metodología más ágil y evite el paso de planificación pero reemplácelo con ciclos de comunicación constante.

Me gustaría ampliar un poco la respuesta de Brythan. Uno de los puntos planteados, pero pasado por alto, fue el uso de Waterfall o Agile. Por su descripción, dudo seriamente que estén usando Agile, y por la descripción de su empresa, probablemente ni siquiera sepan qué es. Voy a escribir mi respuesta suponiendo que quien la lea no esté familiarizado con Agile (o Waterfall). Como mínimo, podría ser útil para explicarle a la empresa lo que quiere hacer, ya que Agile puede ser complejo, especialmente si están acostumbrados a Waterfall. Si no está familiarizado con este término, Waterfall es el viejo "planee todo desde el principio, déle un marco de tiempo a todo y rece para que nada salga mal y que haya acertado con su estimación de cuánto tiempo". tomará"

En el ejemplo de qué decir en la respuesta de Brythan, cambiaría el párrafo final a algo como esto:

En un esfuerzo por evitar esta situación en el futuro y traer más transparencia al proyecto, me gustaría proponer lo siguiente:

Primero, cada dos semanas, tendríamos una reunión para decidir qué se debe hacer en las próximas dos semanas. Proporcionaré una lista de tareas que aún deben realizarse, y podemos decidir juntos cuál es la prioridad y qué puedo lograr razonablemente en esas dos semanas. Al final de las dos semanas, tendríamos otra reunión para demostrar lo que se ha completado para que pueda aprobarlo.

Por lo general, el proceso de dividir un proyecto en "tareas" (o Historias de usuario, como las llama Agile) lo realizarían usted y el administrador del proyecto, pero es posible que deba manejarlo usted mismo. Divídalos en partes que se puedan completar en dos semanas o menos. Y al final de esas dos semanas, cada tarea debe ser algo que pueda demostrar a la empresa como un componente completamente funcional. A veces, lo que crea no es algo que realmente pueda entregar de forma independiente, pero aun así, intente encontrar alguna forma de mostrar la funcionalidad. La idea es que vean avances.

Además, me gustaría tener una reunión diaria, de no más de 15 minutos, para discutir el progreso diario. De esta manera, siempre puede saber exactamente cuál es el estado del proyecto y, si surge algún problema, puede abordarse de inmediato.

Esta es una implementación muy básica de Agile, pero es una gran mejora con respecto a Waterfall y brinda a los propietarios del proyecto comentarios inmediatos y continuos sobre dónde está el proyecto.

la cascada sería mucho mejor para ellos, ya que parece que no saben exactamente lo que quieren y los grandes cambios, incluso usando Agile, en un tiempo limitado nunca funcionan. Waterfall los habría hecho pensar por adelantado, y esto es lo que realmente falta.
@gbjbaanb eso está mal. Agile en realidad sería mucho mejor para el descubrimiento y la comprensión. El problema de OP es que él / ella no los actualizó a tiempo, lo que tomaría hacer las cosas a medida que cambiaron las expectativas. Waterfall simplemente habría garantizado que las personas que lo contrataron no estaban contentas con el producto. Realmente, esto es solo un desafortunado error con ágil.
@Steve para un proyecto de 6 meses, saber lo que quiere es más importante que poder adaptarse al cambio: no tiene suficiente tiempo para cambiar en ese plazo, dado lo que dijo el OP. Claro, si te pagan por día.... pero este parece ser un freelancer más pagado por proyecto.
@gbjbaanb querían que redujera sus horas para que parezca que le pagan por hora. El problema con lo que sugieres es que en 6 meses habrás creado para el cliente lo que pidió y no lo que quiere o necesita.
Ambos requieren que tenga un alcance definido al principio. Para Agile, debe tener todas las características desarrolladas desde el principio y crear historias de usuario a partir de ellas. Así que ese argumento es irrelevante. Pero Waterfall requiere que seas capaz de predecir el futuro. También podría basar sus estimaciones en las cartas del tarot o en las hojas de té, será casi tan preciso. Incluso con un alcance completamente definido e inalterable, es difícil predecir un período de tiempo exacto para tanto trabajo. Aunque, Agile puede ayudar. Si desglosa todas las historias en historias factibles de sprint, se vuelve mucho más fácil de estimar.
@Steve seguro, pero como trabajador independiente, tu trabajo es construir lo que piden, para eso te pagan, y si construyes algo más, existe la posibilidad de que no te paguen (incluso si es lo que querían ). Depende de ellos resolver lo que necesitan, y pueden volver a contratarlo para que lo haga de nuevo si así lo desean.
@gbjbaanb Tienes razón, pero eso desperdicia recursos considerables. Siento que ágil es un mejor enfoque. Supongo que es por eso que escribimos código funcional y orientado a objetos.