¿Cómo escapas de una espiral de muerte de ingeniería?

He visto cómo se desarrolla este ciclo en una serie de situaciones, que van desde equipos de proyectos de ingeniería hasta empresas de inicio completas. Por ejemplo, el equipo está retrasado en la entrega de un importante lanzamiento de producto … Por lo tanto, se asigna un gerente de programa para realizar registros dos veces al día con el equipo. Lo que enfurece al ingeniero principal, que abandona la empresa. Dejando a los miembros restantes del equipo con poco personal, desmotivados y una fecha de entrega proyectada aún más tarde de lo previsto …

Cada situación es única y un factor crítico es qué tipo de choque causa la cascada. Por ejemplo, hace una diferencia si se trata de un problema de adopción del cliente frente a un tiempo de inactividad / crisis difícil frente a una parada debido a la deuda técnica, etc.

Un marco general que puede usar para pensar en la gestión de ingeniería es:

Gente, Proceso, Tecnología ==> Producto (Éxito)

Lea: “El producto (pero no necesariamente el éxito) proviene de la alineación de personas, procesos y tecnología”

Lea de otra manera: “Las personas, los procesos y la tecnología adecuados son necesarios, pero no requisitos previos suficientes para productos exitosos”

En general, una espiral es un problema sistémico, y los problemas del sistema casi siempre se benefician de un enfoque de “ir lento para ir rápido”. Es decir, invierta el tiempo por adelantado en el reclutamiento cuidadoso, la definición del proceso, la arquitectura y la definición del producto: esa inversión pagará dividendos acumulados más adelante en términos de un progreso mucho más rápido. Algunas cosas en las que debe pensar un gerente de ingeniería al diagnosticar una situación espiral:

Gente equivocada

  • Síntomas: no confiamos el uno en el otro y dudamos del trabajo del otro. Los miembros del equipo regularmente sobrescriben el trabajo de los demás (a propósito). Las personas hablan entre ellas en discusiones, o peor aún, se niegan a hablar entre ellas.
  • Sugerencias: Limpie la casa y libere a los miembros del equipo que no están contribuyendo al nivel que necesita. Si no tiene un marco para evaluar el desempeño de los ingenieros (p. Ej., Cinco comportamientos de ingenieros impresionantes), formule rápidamente uno y califique a los miembros de su equipo. No retenga a los miembros del equipo que son técnicamente brillantes pero que no encajan en la cultura del equipo (ver: ¿Por qué es necesario disparar pendejos brillantes para construir una gran cultura de ingeniería?). Reduzca el equipo a los jugadores de nivel A que realmente desea retener y luego vuelva a crear / reclutar al equipo que lo rodea.

Proceso equivocado

  • Síntomas: no estamos tomando decisiones de manera eficiente, las personas pasan mucho tiempo hablando entre ellas en las reuniones, pero no se van con acciones claras y fechas de vencimiento. Cuando tomamos decisiones, volvemos a revisar y adivinamos antes de que las decisiones tengan la oportunidad de implementarse. La gente no sabe quién está a cargo de cada decisión.
  • Sugerencias: Existen muchas prácticas de ingeniería (incluso estándares IEEE) que definen cómo los equipos deben reunir los requisitos y tomar decisiones sobre en qué trabajar. Soy un fanático de la simplicidad y los roles estrictos aquí: “Los gerentes de producto deciden QUÉ y en QUÉ ORDEN trabajamos en las cosas. Los ingenieros de software deciden CÓMO y CUÁNTO trabajamos”. Esta opinión particular tiene sus raíces en las prácticas de desarrollo de software ágil y Scrum (desarrollo de productos); aunque hay muchos enfoques que podrías seguir. El punto es ser claro sobre quién toma qué decisiones, comprometerse como equipo a seguir las decisiones y luego responsabilizarse mutuamente por los compromisos asumidos con el equipo.

Tecnología equivocada

  • Síntomas: pasamos todo nuestro tiempo luchando con herramientas y configuraciones de sistema en lugar de desarrollar características que impactan al cliente. Nuestra infraestructura técnica es demasiado complicada para que cualquiera pueda entenderla y tenemos miedo de hacer cambios debido a los efectos secundarios no deseados.
  • Sugerencias: No tengas miedo de comenzar de nuevo. A veces, eso es lo más pragmático que puede hacer y puede ofrecer la oportunidad de probar diferentes conjuntos técnicos, marcos o DSL que pueden ser más adecuados para el dominio del problema en el que intenta trabajar. Ya sea que elija construir desde cero y reemplazar su sistema actual o intente refactorizar los sistemas existentes en el lugar, su pila técnica debe cumplir con dos requisitos de ingeniería:
  1. en todos los momentos, deberíamos poder determinar si el sistema se comporta de la manera que esperamos que funcione; idealmente a través de Test-Driven Development (ver: Introducción al Test Driven Development (TDD))
  2. El sistema debe ser lo suficientemente simple como para saber que un nuevo ingeniero puede hacer una contribución impactante para el usuario en su primer día.

Producto equivocado

  • Síntomas: estamos cumpliendo los compromisos de sprint, enviando productos de alta calidad que funcionan según lo especificado, pero los clientes no lo están adoptando a las tarifas que esperábamos.
  • Sugerencias: Esto puede parecer un problema menos inmediato que los demás porque, después de todo, el equipo de ingeniería puede estar funcionando sin problemas, enviando a tiempo y produciendo productos hermosos. Pero esta disfunción es quizás la más insidiosa de todas: un equipo que ha tenido un alto rendimiento durante unos meses puede caer repentinamente en una espiral descendente cuando comienzan a surgir temores sobre “¿mi trabajo es importante para alguien?” y “¿cuánta pista nos queda?” (Tenga en cuenta que los temores sobre la pista no están aislados de las nuevas empresas … El personal departamental en las grandes empresas a menudo es muy consciente de la posibilidad de recortes presupuestarios si el departamento no está contribuyendo al resultado final). Tan pronto como un gerente de ingeniería se da cuenta de que el hermoso producto su equipo recién enviado no está generando los niveles de adquisición, participación o retención de usuarios que su equipo esperaba, es hora de comenzar a pensar en cómo acercarse al cliente. Idealmente, esta es una buena ocasión para practicar Lean UX y Customer Development para ayudar al equipo a pasar menos tiempo creando código que nadie quiere.

Hay algunos aspectos interesantes a la pregunta.

La primera es cómo terminas en una espiral en primer lugar. Aquí están mis pensamientos sobre cómo comienza:

La entrada puede ser rápida y generalmente es causada por uno o más eventos traumáticos que incluyen: un fundador disfuncional o ingeniero principal, una falla importante en el lanzamiento del producto o una estrategia de golpe.

El siguiente es cuáles son los signos y cómo escapas.

Esto es lo que te sugiero que escuches y lo que puedes hacer si escuchas estas frases reveladoras.

“¿Por qué estamos construyendo esta característica?”
El problema
Si escucha esto directamente oa través de la red de susurros, el equipo no tiene clara la estrategia general o, peor aún, no está alineada con ella. Esto lleva a una segunda conjetura y miseria para todos los involucrados que simplemente están tratando de construir lo que importa. Este malestar se agrava aún más si se encuentra en una organización que emplea una nueva “estrategia del mes”. Si crea continuamente nuevas estrategias que conducen a nuevos esfuerzos y descarta el trabajo de ingeniería, ya está en la espiral o lo hará hasta pronto

Qué hacer al respecto
Construir un gran producto es difícil pero no debería ser insoportable. Un proceso de colaboración funciona mejor si todos están de acuerdo con la visión y la estrategia del producto. La gestión del producto debe involucrar la ingeniería al principio del proceso, comenzando con la colaboración sobre “por qué” un producto se dirige en una determinada dirección. La transparencia genera confianza y la confianza conduce a un gran esfuerzo. Involucre la ingeniería temprano y con frecuencia, para que todos tengan la oportunidad de contribuir a la visión del producto y comprar el producto hacia donde se dirige.

“No podemos lanzar hasta que la calidad sea mejor”
El problema
Esto a menudo se usa como una táctica de demora para evitar riesgos en organizaciones desmotivadas o ineficientes. En lugar de centrarse en la ventaja de ofrecer nuevas funcionalidades a los clientes, el énfasis está en “evitar fallas”. Esto es particularmente cierto en organizaciones más grandes donde hay un número significativo de clientes existentes u otros usuarios valiosos. No hacer nada a menudo parece ser una mejor opción que hacer cualquier cosa que pueda introducir un error o problema. Por lo tanto, es fácil respaldar la “calidad” como una razón para retrasar.

Qué hacer al respecto
En una organización saludable, los gerentes de producto y los ingenieros quieren la recompensa de entregar aquello en lo que han trabajado duro para que los clientes se beneficien de ello. Por lo general, construir algo significativo es lo que los atrajo hacia la planificación y el desarrollo de software en primer lugar. Los equipos productivos se centran en lo positivo y lo que es posible y aprenden a asumir riesgos. Si bien el fracaso realmente existe y los clientes enojados pueden desertar, la falta de progreso es una amenaza mucho peor para el éxito sostenido. Avanzar requiere liderazgo y el liderazgo toma responsabilidad. Por lo tanto, establezca metas, ayude al equipo a lograrlas, “adquiera” los problemas y otorgue crédito cuando el equipo tenga éxito.

“Estoy bloqueado”
El problema
Esto se escucha comúnmente en negocios establecidos donde los ingenieros individuales han sido despojados de la responsabilidad real. Sabes que tienes un problema cuando nadie da un paso adelante ante la adversidad para decir “no te preocupes, me aseguraré de que se resuelva”. Llamar a los bloqueos es una excelente manera de echarle la culpa y crear confusión cuando no es así. claro por qué un plazo o entrega se ha retrasado o se ha perdido. Solo cuando las personas y los gerentes sienten un profundo sentido de responsabilidad personal para completar el trabajo, se eliminan los bloqueos y se completa el trabajo.

Qué hacer al respecto
Los equipos de productos e ingeniería son típicamente malvados, pero en la mayoría de las organizaciones enfermas no son tratados como tales. Se ha roto la confianza, por lo que se les da trozos de trabajo del tamaño de un bocado, e incluso esos pequeños esfuerzos deben viajar a través de cinco puertas de aprobación donde, en cada fase, se examina a los propietarios y sus ideas. ¿Es de extrañar que la gente de estas organizaciones no pueda hacer algo significativo? Ponga fin a la locura eliminando las puertas de “aprobación” y las “revisiones” y generando más responsabilidad directamente en los grupos que realizan el trabajo central.

No especificó el problema inicial.

Por lo general, alguna variante en la entrega incremental:
– Haz que funcione
– Probar que el nivel de calidad es alto
– Establecer objetivos claros y ritmo
– Mantenga el nivel de calidad alto
– Entregar gotas regulares
– Coger velocidad

Probar el desarrollo desde el principio muy recomendable

Quien pueda responder esto puede salvar el mundo del software. “Muy emocionado” al ver las respuestas. 🙂