¿Cómo debo informar a mi cliente que los cambios en el backend después del lanzamiento de un producto no son solo una corrección de errores o una mejora?

Mi cliente y yo acordamos un diseño arquitectónico para una aplicación de Android, que incluía la base de datos MySQL. La aplicación ha sido lanzada y ha ganado una buena cantidad de usuarios y datos. De repente, el cliente me pide que modifique el back-end y use Firebase en lugar de MySQL porque habló con alguien de Google que sugirió que Firebase sería mejor.

El cliente tiene la noción de que integrar Firebase es una tarea muy sencilla. ¿Cómo puedo hacer que el cliente entienda que cambiar completamente el back-end no es una mejora menor o una corrección de errores, y que esto tomará algún tiempo para implementarse e incurrirá en un costo adicional? Me gustaría explicar cortésmente estos hechos, ya que existe una gran posibilidad de que obtenga otro proyecto de ellos que estoy particularmente interesado en hacer. Por favor, ofrezca sus sugerencias.

Envíale una cotización con los cambios paso a paso que se deben realizar. Incluya el tiempo esperado en cada paso y el costo del mismo. Prefacio que debido a esos cambios que deben realizarse, no se puede considerar una corrección de errores ya que la funcionalidad funciona correctamente.
Prefiero no perder mi tiempo haciendo una cotización detallada para un proyecto que puede no suceder.
La solución aquí no podría ser más simple, simplemente diga "Eso implicaría rehacer completamente el proyecto desde cero". No podría ser más simple de explicar. Y sí, ya no hagas backends personalizados :) Solo usa ably, firebase, pubnub o lo que sea
Creo que el problema principal aquí sería "¿por qué alguien que no tiene idea al respecto solicita un gran cambio como ese?". Si este tipo es un hombre de negocios, probablemente esté en la mejor posición para tomar decisiones técnicas, y asumo que hizo las mejores que pudo. Si este tipo es un tipo de TI, no debería ser tan complicado hacerle entender... En cualquier caso, usar analogías podría ayudar: "no es como pintar una pared de un color diferente, es como volver a cablear todos tus cables eléctricos". instalación empotrada en las paredes" o algo así.
Tenga en cuenta que podría decir que el título aquí es esencialmente incorrecto. Cuando dejas de tener un backend y pasas a un BAAS, para evitar tener un backend, eso es increíblemente diferente de los "cambios de backend". Los "cambios de back-end" son (¡simplemente!) Algo así como cambiar totalmente la base de datos, el alojamiento, el middleware y similares. no está "cambiando" su backend, está eliminando por completo la idea de tener un backend y optando por un BAAS/PAAS/SAAS ("lo que sea") en lugar de tener un backend.
gracias a todos ... algunos comentarios y comentarios realmente geniales ...

Respuestas (6)

Solo cuéntales los hechos.

Hola.

Desafortunadamente, usar Firebase no es un simple cambio en el proyecto e implicaría una cantidad significativa de reelaboración de la arquitectura. Como estimación muy aproximada, creo que tomaría alrededor de <algún número> de semanas de esfuerzo. ¿Hacemos una llamada para discutir más?

Sospecho que la respuesta aquí sería "OK, entonces no te preocupes por eso", pero nunca se sabe.

Lo único que agregaría es una advertencia, como: "En este punto, no estoy convencido de que el cambio agregue algún beneficio significativo sobre la solución existente".
@Fattie El OP también podría intentar usar una analogía como esa. "Actualmente, nuestro sistema es un Porche. Me está pidiendo que lo transforme en un Ferrari. Esto va a ser más que un simple cambio de aceite: estamos reconstruyendo efectivamente toda la máquina desde las ruedas".
@Fattie: si cambiar su motor de almacenamiento (incluso de mysql a nosql) es un "rehacer completo", entonces no ha diseñado muy bien la separación de preocupaciones en su software.
@Fredrik, No, no estoy de acuerdo. No agregue "En este punto, no estoy convencido de que el cambio agregue ningún beneficio significativo sobre la solución existente". No querrás dejarte atrapar por un debate. Cotice su precio. Deje que el cliente decida si ese precio vale la pena o no. Lo más probable es que diga "no". Si dice "sí", pregúntele qué beneficios percibidos cree que valen tanto, pero realmente dudo que diga "sí".

Por su naturaleza, los elementos de back-end de los sistemas son esencialmente invisibles para los clientes/usuarios finales y, como tales, a menudo tienen dificultades para comprender la cantidad de complejidad y trabajo que implican. No es su culpa, y depende de los desarrolladores como tú y yo ayudarlos a cerrar esa brecha y ponerlo en términos con los que puedan identificarse. Las metáforas son buenas para esto, especialmente si puede usarlas para mostrar las diferencias entre un cambio de tipo "corrección de errores" y un cambio más significativo como el que están hablando. El uso exacto depende de la persona con la que esté hablando, pero comparándolo con cosas como cambiar un neumático (corrección de errores) versus un cambio completo del motor (cambiar a base de fuego) en un automóvil, o reemplazar una ventana (corrección de errores) versus estructural trabajar en los cimientos de un edificio (firebase) es el tipo de cosas de las que estoy hablando.

Como una pequeña nota al margen, parece que no está convencido de que el cambio ofrezca algún valor real (o al menos no lo suficiente como para justificar el trabajo involucrado), si es así, diría que vale la pena explicar los pros y los contras del cambio, diga que está feliz de hacer el trabajo si ellos quieren, pero que no está seguro de que les dará valor por dinero.

Lo compararía con cambiar el material utilizado para construir un puente, en comparación con arreglar un bache que se encuentra en el puente.
Creo que debería señalar un curso gratuito en Udacity sobre "Fundamentos de Firebase para Android" realizado por Google. Si ese curso no logra comprender la complejidad de la tarea, no estoy seguro de qué lo hará. aula.udacity.com/courses/ud009

Diría que, en última instancia, ayudar a su cliente a comprender el alcance técnico completo del cambio deseado no es su problema. En realidad, esto suena más como si no hubiera instituido un muy buen proceso de control de cambios en sus interacciones pasadas con el cliente, es decir:

  • Tienes un contrato de precio fijo
  • Ha permitido que el alcance del proyecto se deslice repetidamente en el pasado
  • Es poco probable que le hayan pagado en "hitos", prefiriendo tal vez un depósito al principio y una gran cantidad de dinero al final.

Si ha "entrenado" a su cliente para que crea que el aumento del alcance es un regalo de promoción, no debería sorprenderse ni un poco en esta etapa. He visto muchas situaciones en las que el cliente retiene el pago final como rehén de grandes cambios de última hora, y no es justo para el desarrollador, pero muchos desarrolladores toleran ese comportamiento por ignorancia (inocente).

No se preocupe por el proyecto n.º 2, porque, sinceramente, puede ir a la sección 'Conciertos informáticos' en Craigslist en cualquier ciudad importante y ver cuántas partes intentan, a diario, realizar el trabajo de forma gratuita con promesas de más trabajar más tarde. Es un ajetreo muy común.

Preocúpate más de que este cliente no intente superarte para el proyecto n.º 1. Establece tu precio y apégate a él. Le recomiendo que cobre por hora, porque además de los cambios en su código, el cliente también esperará que migre los datos existentes a Firebase. Desarrolle un documento escrito del alcance del trabajo y pídale a su cliente que lo firme antes de comenzar cualquier trabajo. Este paso reduce los malentendidos posteriores.

Supongo que tienes un contrato con el cliente.

Para que este cambio se produzca, necesita un nuevo contrato porque es un trabajo que no está cubierto por el acuerdo inicial.

Entonces, para comunicarle que esto no es algo baladí, hágale una oferta donde especifique las horas que necesita y un precio por su trabajo.

Esa es la mejor manera de comunicar esto.

Prepararía una estimación detallada que incluyera todas las tareas que se necesitarían hacer y las horas para hacerlas y el costo total. No olvide el costo de mover los datos existentes a la nueva fuente de datos. Como suposición, estimaría que esto son varios miles de horas de trabajo, pero debe ser mucho más específico que eso, mostrarles lo que se debe hacer y lo que requeriría cada tarea importante.

También incluiría un análisis de riesgos que describa el riesgo de introducir nuevos errores, la falta de integridad de los datos, la posibilidad de que se pierdan algunos datos al transferirlos a la nueva base de datos, etc.

Una vez que lo presentes, o te pagarán una gran cantidad de dinero por hacer el cambio o no volverás a saber de él.

Hay una regla muy simple: el cliente siempre tiene la razón. Siempre y cuando el cliente pague.

El costo es: Migrar todos tus datos de MySQL a Firebase (sin perder nada). Actualización del software del cliente. Convence a todos los usuarios finales para que actualicen sus aplicaciones; eso es complicado, porque los usuarios finales odian ese tipo de cosas y tendrás pérdidas.

La actualización del software del cliente no es trivial. Pasará de una aplicación bien probada a algo que está nuevamente en un estado alfa. Pasará de un entorno estándar y probado a una solución propietaria. Hay un costo involucrado, Firebase no es gratis y, dependiendo de lo que estés haciendo, puede que no sea barato. Y de las cosas que leo aquí y allá en Internet, Firebase es fácil para cosas simples, pero puede convertirse en una pesadilla cuando te pasas de los límites. MySQL estará aquí dentro de cinco, diez o 20 años. No hay garantía con Firebase. Firebase cambiará cada vez que Google tenga ganas de cambiarlo.

Finalmente, ¿cuál es su fuente de información? ¿Habló con alguien de Google? Firebase es un producto de Google. Por supuesto, alguien de Google lo alabará hasta el cielo.

Entonces harás una estimación para este cambio "simple". El presupuesto se basará en sus estimaciones, no en la opinión de los clientes. Si cree que su estimación es demasiado alta, puede ofrecerle como alternativa para hacer este trabajo, pagado por cada día de trabajo real. Seguramente no vas a hacerlo en base a su baja estimación. Dígale que usted es un desarrollador de software profesional y que sabe más que un vendedor de Google.