Convencer a la gerencia para rehacer el trabajo que ya se ha hecho

Mi agencia ha estado desarrollando una aplicación que esperan genere muchos ingresos y lo están haciendo de manera equivocada. La agencia generalmente solo trata con sitios de tipo wordpress y drupal. Nuestro cliente típico se acerca a nosotros para trabajar de 3 a 6 meses en un tema personalizado y luego continúa con el trabajo de mantenimiento.

A principios del año pasado, la agencia se hizo cargo de un tipo de cliente completamente nuevo que quería crear una aplicación web, tanto para escritorio como para una versión móvil para teléfono. Fui contratado como líder del equipo debido a mi experiencia con React, React Native y Node. Este ámbito de trabajo es todavía bastante nuevo para mí. Entonces, durante los últimos 18 meses, esa aplicación web ha sido la vida de mi equipo y nos han apartado de otros proyectos.

A fines del año pasado, los otros equipos comenzaron a trabajar en una nueva aplicación web, sin embargo, dado que su experiencia principal es en wordpress, intentaron construir todo en wordpress. Mi proyecto está llegando a su fin y han comenzado a notar que la aplicación que construimos actúa mucho más como una aplicación real que como un sitio web y quieren que aplique eso a su proyecto. La cuestión es que, para la escala a la que quieren aplicar esto, el proyecto nunca debería haber comenzado en wordpress. Están tratando de convertir un CMS en algo que no es. Por lo menos, la única forma en que reaccionar va a funcionar bien con su back-end es cambiar todo a una API sin cabeza.

Esto me deja diciéndoles que los meses de trabajo que han puesto en el proyecto fueron una especie de pérdida de tiempo ya que usaron las herramientas equivocadas desde el principio. No es que no usaran reaccionar, sino que no usaron ningún marco. Casi toda la manipulación de su front-end se realiza con jQuery. El otro problema es que quieren aplicar un análisis de datos muy pesado al back-end y wordpress nunca tuvo la intención de hacer cosas así, por lo que está provocando una ralentización masiva de todo.

Sin embargo, la persona que tomaría la decisión final sobre esto tiene una mente muy enfocada en las ganancias (como debería ser el dueño de un negocio) y realmente se enfocará en el "tiempo de comercialización". La idea de que yo diga que el concepto es genial, pero que todo necesita ser renovado, inmediatamente le hará dudar de cualquier cosa que diga después de eso. Más aún, como muchos de los miembros originales del equipo no están familiarizados con reaccionar, angular o cualquier otro marco, los pone en una pérdida inmediata. Definitivamente puedo entender la fuerza de construir lo que sabes frente a aprender algo nuevo.

Por ejemplo, la semana pasada, mientras discutíamos un paquete npm que habíamos usado para la versión móvil de nuestra aplicación anterior, el otro equipo notó que habíamos resuelto un gran problema que tenían y nos pidió que lo implementáramos para ellos. Después de mirar su código, me di cuenta de que no había forma de usar este módulo npm sin configurar webpack o browserify en el proyecto y no se trataba de eso en absoluto. Después de 3 días, pudimos escribir un script de vanilla js que hizo lo que necesitaban, pero tengo la sensación de que esta batalla cuesta arriba es en lo que estaríamos todo el tiempo.

¿Cuál es la mejor manera de presentarles todo esto? No quiero decir directamente "no, no trabajaremos en esto tal como está", pero tampoco quiero que mi equipo se haga cargo de la parte delantera del proyecto solo para responsabilizarse por unas pocas semanas o meses. a partir de ahora cuando no pueda rendir como ellos quieren. Básicamente, siento que esto nos va a preparar para fallar monumentalmente.

¡Bienvenido nuevo usuario! Le insto a que haga clic en "Editar" y acorte drásticamente su pregunta.
Parece que no es un problema, Brian. Es totalmente común, la norma, que las opiniones difieran enormemente sobre el paradigma básico de cómo hacer un sitio web o una aplicación. No es un problema. Es como decir "Soy programador, hoy escribí algo de código". Simplemente hable libre y abiertamente en cualquier momento "Oh, creo que esto debería hacerse con XYZ". Vale la pena señalar, por cierto, que muchos arquitectos descartan por completo React/ecosystem como una pérdida total de tiempo y dinero. Las opiniones significan poco o nada en software, todo el mundo tiene una.
"La idea de que yo diga que el concepto es genial, pero que todo necesita ser renovado, inmediatamente le hará dudar de todo lo que diga después de eso", y ¿cómo pensará en ti, si no hablas y todo el asunto? cosa termina en lágrimas?
A veces llegas a la mitad de la montaña, miras a tu alrededor y ves que estás escalando la montaña equivocada.
@Fattie No estoy muy seguro de lo que estás tratando de decir. Mi pregunta se relaciona con cómo están construyendo algo y qué esperan. Mi ejemplo, el uso de un paquete NPM en un proyecto vanilla js ejemplifica esto. no puedes hacerlo Sí, pudimos solucionarlo, pero en 3 días frente a < 1 hora. No necesitaba ser React, pero defender que todos los paradigmas de programación son iguales es ingenuo. Mi pregunta era cómo impresionarles adecuadamente la gravedad de esto. Decir simplemente "solo di eso" no hace nada. Si fuera tan simple lo hubiera hecho. Estaba buscando otros enfoques.
Hola Brian ! "Sí, pudimos solucionarlo, pero en 3 días frente a < 1 hora" ese tipo de error es totalmente común en el software, es la norma.
"Simplemente decir 'solo di eso' no hace nada" Las únicas opciones concebibles son (1) usar la comunicación verbal, es decir, hablar. (2) comunicaciones escritas. Si piensa que es un problema "particularmente grande", simplemente exprese ese pensamiento claramente.

Respuestas (4)

Construir un consenso entre el equipo técnico. Tome lo que ha escrito aquí y llévelo al desarrollador principal del otro equipo y vea lo que dice. Prefacio con "Podemos hacerlo, pero tengo algunas reservas" y exponga sus preocupaciones.

Si logra que la otra persona esté de acuerdo con usted, ambos se lo presentan al jefe presentando un frente unido. Para las decisiones comerciales, debe establecer estimaciones de tiempo y costos asociados con cualquiera de los cursos: el que brinda la mayor cantidad de beneficios financieros generalmente será elegido por un actor racional.

A nivel comercial, no importa cuán bonito sea, siempre y cuando funcione lo suficientemente bien como para que suficientes personas estén dispuestas a pagar por él para obtener ganancias, y todo lo demás está subordinado a eso.

Después de eso, verás lo que dice el jefe. Si están de acuerdo, bien. Si no lo hacen, haz lo mejor que puedas. Al final del día, no es su empresa, todo lo que debe preocuparse es que le paguen.

Lo que desconfiaría de esto es que el otro líder seguramente no estará de acuerdo con cambiar nada, dejándonos cojeando desde el principio. ¿Hay alguna manera de establecer la rendición de cuentas para que no asumamos la culpa de las "inquietudes" sobre las que les advertimos pero optaron por no escuchar?
@Brian, la forma de evitar la responsabilidad es exponer todas sus inquietudes y documentarlas por correo electrónico. Si y cuando se desmorona, lo agitas y dices "Te lo dije". Cualquier reunión cara a cara donde no se toman registros, lo escribes en un correo electrónico y lo envías a todas las partes involucradas.
El "qué hay para mí" puede complementar este enfoque. Esto también puede ser útil cuando hablamos de refactorización de negocios, ya que puede preguntar "gastamos esta cantidad de dinero para hacer esto y ahora dice que tenemos que rehacer todo".

No se involucra con otro proyecto de equipo sobre el cual no tiene control en términos de hacer cumplir lo que se usa y cómo.

Si solicitan algo, los remite a los tomadores de decisiones que luego pueden preguntarle si quieren. Si lo hacen, este es el punto en el que lo trata como proyecto de su equipo y les informa lo que se requerirá, los plazos, etc.

Idealmente, no lo tocaría a menos que se convierta en su responsabilidad junto con la autoridad para hacerlo a su manera.

Si la cultura de la empresa lo permite, mantendría una conversación abierta con el tomador de decisiones y, sin difamar al otro equipo, le explicaría que revisó los requisitos y, para aplicar su solución de mejor desempeño, la forma más eficiente es recrear el otro proyecto desde rascar. Nadie quiere peleas internas o hacer que otro equipo se sienta como una mierda, y el líder del otro equipo probablemente se pondría a la defensiva, como debería, debido a la elección original y subóptima. Entonces: hable con el tomador de decisiones y déjelo tomar la decisión. Pero deja en claro que no quieres causar una ruptura en las relaciones con el otro equipo. Este es un ejercicio masivo en política, pero pareces tener la sensibilidad adecuada para hacerlo.

Otro resultado posible es que el gerente decida que la característica no es importante después de todo, o no lo suficientemente importante como para reescribir lo que tiene. Usted menciona que requerirá un gran gasto, pero no cuánto ayudará.