¿Cuándo es demasiado tarde para despedir a los desarrolladores de software? Se suponía que el proyecto estaría completo en 4 meses, pero han pasado 10 meses. Hay muchos errores en la aplicación y parece barata. ¿Qué tengo que hacer?

En primer lugar, realmente cuestionaría su noción de “97% completado”. Un proyecto de software rara vez se completa, a menos que estemos hablando de una aplicación con un período de uso muy limitado (como una aplicación de campaña de corta duración). Para el resto de la respuesta, supondré que ese no es el caso.

Según su pregunta, nadie tiene ningún control de calidad en ese proyecto. Esto ha causado una gran cantidad de errores. El hecho de que las aplicaciones tengan muchos errores de bloqueo hace que esto parezca aún peor porque los bloqueadores son los errores más fáciles de encontrar y resolver para los desarrolladores en el momento del desarrollo, antes de cualquier entrega de compilación al cliente. Si no pueden manejar esos errores, estoy casi seguro de que hay muchos errores de diferentes tipos en la aplicación.

Cuando tiene un proyecto de software lleno de errores, cualquier intento de estimación del esfuerzo restante se eliminará de la nada. Simplemente no puede estimar un proyecto en un estado donde tiene muchos problemas desconocidos. Pueden entregarle aplicaciones fijas en 2 semanas o en 6 meses. Nadie sabe.

Mi primera preocupación en este momento no sería cuando el equipo arregle todos los errores restantes en las aplicaciones iOS / Android. Sería esto: ¿qué vas a hacer después de que te envíen las aplicaciones (y, supongo, el código fuente) ?

Como dije al principio, el proyecto de software rara vez se completa. Deberá desarrollar esta aplicación aún más, agregar nuevas funciones, admitir nuevas versiones del sistema operativo, optimizar los nuevos tamaños de pantalla del dispositivo, etc.

Recuerde, el código fuente siempre es una responsabilidad, no un activo. Si el código fuente que obtendrá de ese equipo es de mala calidad (que, según su descripción, sin duda lo será), hará que el desarrollo del proyecto sea extremadamente lento y costoso. Con un código lo suficientemente malo, la mejor decisión (tanto financiera como cronológica) podría ser desecharlo completamente y comenzar de nuevo con un nuevo equipo que se centre en la calidad.

Por mala calidad, no solo estoy hablando de errores en el producto final. Me refiero a cuestiones como cómo está organizada la base de código, si la arquitectura de la aplicación está bien diseñada, si las clases están aisladas, si las responsabilidades y dependencias están claramente definidas, si el código es comprobable, si hay bibliotecas de código externas y marcos elegidos con cuidado. se ha evaluado su calidad, todos los casos de error se manejan siempre de manera adecuada y sistemática, queda mucha deuda técnica en el código, etc. Si no se solucionan estos problemas, tendrá una pila muy costosa de archivos fuente con resultados negativos valor en tus manos.

En su situación, recomendaría el siguiente curso de acción:

  • Si aún no lo ha hecho, obtenga acceso al código fuente y su historial de versiones completo (Github, BitBucket, etc.)
  • Continúe exigiendo la entrega oportuna y sin errores de su equipo de desarrollo actual.
  • Mientras tanto, encuentre dos o tres ingenieros de software senior independientes o compañías de software especializadas en el desarrollo de aplicaciones móviles. Firma un NDA con ellos si es necesario y pídeles que auditen la base de código. Querrá su opinión sobre la calidad interna del proyecto, cuáles son los principales puntos débiles y qué tan extensible y sostenible es el proyecto en su opinión. Obtenga 2-3 opiniones independientes y honestas. No sé qué tan grande es el proyecto, pero no esperaría que esto tome más de 2-3 días.
  • Con estos nuevos datos en la mano, planifique sus próximos pasos. Si la base de código es un desastre, comience a buscar un nuevo equipo de inmediato. Tal vez pueda reutilizar algunas partes del código fuente, pero prepárese mentalmente para comenzar desde cero si es necesario. Si la base de código está bien (lo cual sospecho que no lo estará, pero de nuevo, los problemas podrían estar en otro lugar, como en componentes de terceros), querrá abordar la falla de administración de este proyecto ahora. Solicite un reembolso / amenaza de no pagar, y vea si puede reemplazar la administración.

Hagas lo que hagas, exige el siguiente proceso de tu equipo de desarrollo en el futuro:

  • Entrega continua de nuevas compilaciones de aplicaciones desde el principio. Alguna “fase de configuración” es aceptable al comienzo del proyecto, pero rara vez debería tomar más de 1-2 semanas.
  • Todo el proyecto debe mantenerse siempre en un estado liberable. Es posible que no se complete la función, pero los bloqueadores u otros errores que se introduzcan en el proyecto recibirán la prioridad expedita y se solucionarán en la próxima compilación como máximo. No permita que la mala calidad del producto se filtre en ningún momento. Para aislar el desarrollo en progreso y asegurarse de que no afecte la capacidad de liberación de la base de código, use métodos de desarrollo como ramas de características (por ejemplo, gitflow / hgflow) o alternar características.
  • Centrarse en la calidad del código: programación de pares y / o revisiones de código. No permita que la mala calidad del código se arrastre en ningún momento. Asegúrese de que el equipo de desarrollo tenga suficiente experiencia para producir código de alta calidad y fácil de mantener.

En lugar de sus desarrolladores, buscaría a la persona que los administra. Un desarrollador que sale mal es un problema de los empleados. Los proyectos que salen mal son un problema de gestión.

Si usted es el que administra, tal vez necesite despedirse y contratar a otra persona para administrar.

Si siempre estás a dos semanas de terminar, ¿por qué es eso? ¿Es una estrategia de desarrollo de software que va mal (como, por ejemplo, el arrastre de características o la falta de timeboxing)? Quizás el tipo de progreso que está midiendo la administración es perjudicial para los desarrolladores.

Más que nada, diría que probablemente necesites algo de transparencia en la administración y que debes ser directo con los desarrolladores. Es difícil unirse detrás de las personas y una visión si tienes la sensación de que te están ocultando algo y si no confías en ellos. Momentos como este en una empresa pueden ser difíciles, pero si no quieres que sean divisivos, tendrás que fomentar la confianza.

No malinterpretes esto como algo suave para los desarrolladores. Es posible que necesiten ser conducidos para hacer las cosas, pero recuerde que las personas se quedan sin energía y a menudo necesitan una recarga. Tal vez un día libre obligatorio es en el futuro cercano?

Más que nada, recomendaría no despedir a sus desarrolladores. Es posible que los desarrolladores que contrató sean pobres para medir el tiempo que lleva completar las tareas, pero hágales saber eso y encontrar formas de trabajar juntos. ¡Asumir que tienes mal talento e intentar tirar todo es una receta para el desastre! El tiempo que lleva sumergirse en una base de código no va a ser rápido, y si los problemas han estado afectando al equipo durante meses, atraer nuevas personas probablemente no lo hará mucho más fácil a menos que planee comenzar de nuevo.

En cierto sentido, a veces los programadores son como mecánicos. ¿Prefiere que el mecánico A trabaje en su automóvil un viernes, salga a almorzar y deje que el mecánico B termine antes del fin de semana sin que ninguno de los dos hable, o que el mecánico A trabaje en él para comenzar a terminar un martes por la mañana ?

Habiendo sido gerente de ingeniería y desarrollador para empresas nuevas y empresas de Fortune 500 durante docenas de años, diría que este es un escenario común. La respuesta breve es que es demasiado tarde, su proyecto nunca se realizará si despide a su personal actual o si necesita una inyección de efectivo y un gerente de desarrollo de software profesional que sepa cómo entregarlo al mercado comercial. Tenga en cuenta que la mayoría de las veces, el inversionista ángel también quiere cambios sobre la marcha a medida que continuamente inventan y reinventan el software (su bebé). Lo que parece una gran idea en la ducha puede agregar fácilmente varios meses a un proyecto.

Mi experiencia con los inversores ángeles es que, para ahorrar dinero, a menudo se convencen de que la entrega de un producto de software no es diferente a cualquier otro tipo de gestión que hayan realizado y tratan de gestionar estos proyectos sin experiencia en el campo. Hay una razón por la cual las compañías de software exitosas son fundadas y administradas por programadores, es mucho más fácil administrar un negocio que construir e implementar buenos productos de software. Sin habilidad en la entrega de software, el gerente no técnico es una receta para desastres o quiebras.

Hace aproximadamente 10 meses, al consultar con personas que estaban motivadas para obtener un contrato a toda costa, todos llegaron a la conclusión de que tomaría cuatro meses crear algo increíble desde cero basado en una idea y algunos documentos de diseño tosco y entusiasmo jubiloso.

Cuatro meses de trabajo más tarde y te sorprendes al descubrir que no está hecho o que no has avanzado lo suficiente como para ver un progreso real. La respuesta es fácil, ya sea cuatro meses fue una estimación imposible desde el principio (problema muy común cuando el inversionista ángel tiene fondos y tiempo disponibles limitados), o el proyecto estuvo mal administrado desde el principio y debería haberlo examinado antes de que hubieran transcurrido cuatro meses como estabas

Gestión adecuada de tareas como SCRUM junto con entornos de integración continua y habría podido monitorear el progreso desde el primer día. Debería estar avanzando a través de su cartera de pedidos y sus sprints deberían avanzar a un ritmo muy predecible. Debería haber estado evaluando el progreso y la calidad todo el tiempo y cambiando de rumbo a menudo cuando se toparon obstáculos. El principio de fallar rápido podría haberlo salvado de 10 meses de esfuerzo desarticulado y falta de progreso. En diez meses, la mayoría de las compañías de software bien administradas (su competencia) presentarán muchos, muchos, muchos proyectos exitosos de alta calidad.

Si tiene el dinero y quiere continuar, es mejor que busque un buen gerente (espere pagar por uno bueno, los malos administradores son abundantes y baratos).

Si decide despedir a los desarrolladores (o la empresa consultora, o lo que sea), ASEGÚRESE de tener TODO el código fuente. Asegúrese de que sea la versión más actualizada posible (y si es posible, mantenga copias de seguridad del sistema de control del código fuente también – TFS, GIT, Mercurial, lo que sea – para que pueda revertir los cambios y / o buscar en el historial) . No olvide tampoco ninguna DLL o paquete de terceros. Asegúrese de tener todo lo que necesita para continuar el desarrollo, incluso si uno de esos programadores decide hacer algo nefasto como eliminar todos los archivos, insertar errores intencionales, etc.

Antes de despedirlos, vale la pena reunir a todos y decidir qué se debe hacer en detalle para producir un producto liberable.

Si realmente estás listo para dos semanas, esto debería ser fácil. Por otro lado (y así es como suena esto) nadie tiene idea de lo que se necesita para lanzar, y esto se revelará por el análisis que he sugerido.

Dependiendo de dónde se encuentre, podría sugerir algunas personas que pueden ayudar con esto. Te cobrarán una cantidad que valdrá la pena pagar. No haré nada de eso.

El equipo de desarrollo sigue diciendo que el 97% está listo. Esa es una gran oportunidad: pídales que expliquen cómo llegaron a ese número, cuantitativamente, en función de algún tipo de hito representable. Obtenga una idea del proceso rápidamente. Vea si realmente prueban algo, vea si tienen un plan.

¿Detalla los errores e informa a los desarrolladores?
Utilice Trello para informar y rastrear errores, ¡si nada más!

¿Le está dando a sus desarrolladores un plan de implementación para que sigan, para que sepan en qué deberían estar trabajando con qué prioridades? En otras palabras, ¿saben que no quieres que el “glitz” tenga prioridad sobre el “glitch”?
Utilice Trello para la gestión de tareas y la priorización, ¡si nada más!

¿Está rastreando la base de código del proyecto, realizando revisiones de código, proporcionando comentarios sobre lo que le gustaría ver hecho de manera diferente, mejorada o más clara en el código?
Use Trello para el seguimiento de tareas de revisión de código, ¡si nada más!

No funciona solo tener una idea y lanzarla a los desarrolladores y esperar un producto terminado en un período fijo de tiempo. Debe tener una comunicación constante con el equipo, o al menos con alguien dedicado al cliente, usted. Quizás su interpretación de la idea que les diste es un desorden lleno de animaciones cutres. Quizás el equipo no tenga experiencia en gráficos internos.

Debería poder saber si son inadecuados … si los está rastreando. Parece que solo tienes una reunión cada dos semanas y te cuentan la misma historia porque te sacan de la espalda con cierto éxito con esa historia.

Descargo de responsabilidad: nunca he administrado un equipo de desarrolladores de aplicaciones, o esperaba una aplicación como resultado de una idea que le pasé a un equipo de desarrolladores de aplicaciones. Pero en mi opinión, me gustaría tener un control directo y directo sobre lo que sea que esté haciendo el equipo para asegurarme de que mi idea salió bien, o asegurarme de que descubrí desde el principio que mi idea es mala y El equipo debe disolverse.

Si no está obteniendo lo que quiere, probablemente ya haya esperado demasiado, pero eso no significa que sea “demasiado tarde” para despedirlos. Haz eso rápidamente. Hay muchas tiendas de desarrollo de software capaces que podrán recoger las piezas y entregar lo que desea.

¡Parece que no están enfocados en tu proyecto!
¡Es demasiado tarde para despedirlos y le costará mucho dinero!
En cambio, tendrás que cambiar algo en la relación con la empresa: hazles una promesa (dinero o bonificación o algo) para cambiar su enfoque. Después de eso, no respetará la promesa, pero tenga cuidado con la seguridad del proyecto. Además, si desea continuar con ellos, ¡tenga cuidado de cómo lo hará!

¡Buena suerte!

Por experiencia, parece que tiene un problema con sus procesos y la gestión de los mismos.

Recomendaría llamar a un tipo de control de calidad, además del software roto también arreglamos procesos rotos 🙂

Puede ponerse en contacto conmigo si es necesario.
Identificación de Skype: kain.victor

Bueno, parece que en otros seis meses todavía estarías “a dos semanas de distancia”. Su equipo suena altamente disfuncional e irresponsable. Deshazte de ellos lo antes posible. Esa fue la decisión fácil. Averiguar cómo conseguir un nuevo equipo que pueda completar el proyecto, * ese * es un desafío digno para usted. Probablemente necesitarían dos meses para terminar el trabajo.

More Interesting

Estoy trabajando en una empresa de TI como desarrollador de software y necesito cambiar a roles de administración. ¿Hay alguna salida sin hacer MBA?

¿Cómo utilizan los usuarios avanzados Stack Overflow?

¿Cuál es el papel de Yahoo en el desarrollo de software de código abierto?

¿Por qué los ingenieros, programadores de software y profesionales de hardware y TI piensan que tienen respuestas a preguntas sobre las que no saben nada?

¿Qué se entiende por desarrollador de software?

Cómo ganar dinero con mi software, he desarrollado un software que NO es más complicado pero que es realmente necesario en las empresas.

¿Cuál es la vergüenza de tu desarrollador de software?

¿Cuáles son las cosas más importantes que hacen que un ingeniero de software se destaque de sus pares?

¿Sugeriría el MacBook Pro 2017 o 2015 (ambos de 15 pulgadas) para un desarrollador?

Si otro sistema operativo supera a iOS, ¿los desarrolladores seguirán creando aplicaciones para iOS?

¿Cómo es trabajar como desarrollador de software graduado?

¿Hay programadores que aprenden mejor leyendo libros que haciendo?

Con suficiente práctica, ¿alguien puede ser lo suficientemente bueno en los algoritmos de codificación para ser contratado como desarrollador de software?

Estoy trabajando como ingeniero de redes. No estoy interesado en este campo. Estoy cambiando mi perfil a desarrollador de software. ¿Qué idioma debo elegir que tenga un futuro muy brillante para los próximos 5 años al menos?

¿Cuáles son las 10 principales compañías para comenzar su carrera como desarrollador de software para nuevos en la India?