Los desarrolladores no pueden ver lo que están haciendo mal

Soy gerente de proyectos tecnológicos y recientemente me mudé a Estados Unidos después de 13 años en Europa, donde trabajé como ingeniero de software. Trabajé para importantes clientes y me desarrollé en cualquier tipo de ambiente.

Ahora dirijo un equipo de dos backend senior y junior, dos desarrolladores frontend y dos ingenieros de DevOps .

Después de un mes, obtuve una lista de deudas técnicas que cubrir, incluidas las importantes (contraseña y clave expuestas, entorno de desarrollo no protegido, duplicación de código, falta de integración y pruebas de interfaz de usuario, etc.).

Cada vez que solicito una reunión con los desarrolladores, simplemente dicen: "Funciona, ¿por qué cambiar?". Una vez me dijeron: "¡Te equivocas!" de una manera muy grosera.

Recientemente dejé un comentario sobre un PR por no respetar uno de los principios SOLID y su respuesta fue que los estaba criticando. (Tenga en cuenta que no fui grosero en mi comentario).

El CTO confía completamente en mí, dijo: "Si no quieren hacer lo que les dices que hagan, ¡simplemente pueden dejar el trabajo!"

Siempre me consideré un líder (es decir, "¡Hagamos esto!") y no un jefe ("¡Haz esto!"). Que despidan a la gente es lo último que quiero, especialmente ahora que uno de ellos tiene un hijo pequeño.

Me gustaría que entendieran por qué quiero hacer algo. La ex PM se fue por este motivo y me avisó.

PD: No, no quiero cambiar de compañía. Me pagan muy bien y tengo un excelente plan de salud para mí y mi familia.

Si no quieren hacer lo que les dices que hagan, ¡simplemente pueden dejar el trabajo! Tu CTO entiende perfectamente la situación y te dice que está bien perder gente si no mejora. Que despidan a la gente es lo último que quiero, sobre todo ahora que uno de ellos tiene un hijo pequeño. Entonces, ¿un empleado hace un mal trabajo en el trabajo pero está bien porque tiene un niño pequeño? Sé que suena duro, pero usted no es responsable del niño, son sus padres. Si el padre se porta mal en el trabajo y es despedido por ello, es su culpa, no la culpa del gerente que hizo el despido.
No estoy completamente seguro de que esta sea una pregunta sobre la gestión de proyectos (para ser honesto, no estoy seguro de que sea una pregunta...) ¿Podría revisar para aclarar cómo encaja esto en la gestión de proyectos? ¿Sería esto más apropiado para un sitio dedicado a temas laborales o un sitio de discusión?
@Bogdan, tengo un niño pequeño y, lamentablemente, en los EE. UU., cuando cambias de trabajo, lo más probable es que también cambies tu seguro médico y puede tomar hasta dos meses para ser elegible para él. No quiero que el bebé se quede sin seguro médico durante dos meses en este país.
@MCW Estoy feliz de mover la pregunta a otro lugar, si puede proporcionar un lugar mejor.
@Bananajoe A primera vista en HNQ, parecía una pregunta de The Workplace . Luego vi que estaba en Project Management .
@Bananajoe: Entiendo tu preocupación (eres una buena persona), pero eso aún te deja con el problema que estás tratando de solucionar. Puede probar lo que menciona la respuesta más votada, por ejemplo, pero a partir de su pregunta parece que también hay un problema de actitud. He trabajado con muchos desarrolladores buenos y malos y ¿sabes qué tenían en común los buenos? Estuvieron abiertos a escuchar cuando les dijiste que había formas de mejorar su trabajo. Una cosa es ser inexperto o no saber nada mejor y hacer un lío, pero es una cosa totalmente diferente negarse a arreglar el lío.
@Bananajoe: ¿sabes cómo se pusieron las cosas como están ahora?
Esto suena como el mismo tipo de actitud de empleador que encontrará en cientos de respuestas en Workplace.SE. "Me pagaron por escribir este código c ** p, y no me pagarán más por limpiarlo y no crear más, entonces, ¿por qué debería cambiar?". Bienvenido a la "tierra de la libertad". :)
Probablemente faltan (algunos) detalles importantes en la pregunta (al menos en mi opinión): obtuve una lista de deudas técnicas para cubrir ¿por qué hiciste esto? ¿Era esto parte de sus actividades? ¿La empresa lo contrató para averiguar cosas que podrían ser mejores? ¿Es el proyecto que está liderando actualmente el proyecto que necesita estas mejoras? ¿Son estas mejoras parte del trabajo en progreso? Probablemente demasiadas preguntas, pero mi punto es que tal vez la "mala actitud" proviene del hecho de que el "chico nuevo que no sabe todo lo que hemos hecho está tratando de decirnos cómo hacer las cosas", o tal vez es ...
... (continuación) que hay un nuevo proyecto brillante en el que se supone que están trabajando, y estás tratando de hacer que arreglen su trabajo anterior que ya se lanzó.
@Josh Estoy de acuerdo, eso es exactamente lo que está sucediendo. Un breve resumen de mí: soy un ingeniero de software que recientemente cambió a gerente de proyecto. Me contrataron para ser el Ingeniero Principal, pero el nuevo CTO cambió mis tareas y mi título. Me pidió que encontrara deudas tecnológicas y mejorar el código está en su plan Q3.
@A todos, no les estoy diciendo que el código apesta, estoy tratando de enseñarles el concepto obvio que ya deberían saber (SÓLIDO, BESO, SECO, etc.).
Espero que no considere que la duplicación de código tenga la misma gravedad que una contraseña/clave expuesta.
"Simplemente dicen: 'Funciona, ¿por qué cambiar?'" - ¿Y cómo respondiste a eso? ¿Trató de explicarles por qué las cosas que sugiere son importantes y qué problemas resuelve o evita? Es necesario tener buenos argumentos de por qué se debe hacer algo si no se desea simplemente dar órdenes a los subordinados que se desea que sigan ciegamente. Además, ¿realmente existen estos problemas en el proyecto? Si es solo una buena práctica que no está resolviendo un problema real, ¿está seguro de que vale la pena invertir tiempo para cambiarlo?
¿Les ha preguntado qué creen que se podría mejorar en el sistema? ¿Que dijeron?
@Bananajoe Sé que su pregunta no es sobre el sistema de atención médica de EE. UU., ni estoy diciendo que deba renunciar, pero definitivamente es posible encontrar un nuevo trabajo (antes de renunciar al actual) y comenzar uno nuevo sin un espacio en la cobertura de seguro de salud. La mayoría de los trabajos de tipo profesional no tendrán un período de espera hasta que sea elegible para el seguro de salud, y la opción de cobertura retroactiva de COBRA brinda una forma de cubrir un período corto si ocurre uno.
¿Cuál es el tiempo de operación? ¿Hay tiempo suficiente para abordar estas preocupaciones? ¿Y cuáles son las ramificaciones si no escuchan? Si no los denuncia, los castiga o, en última instancia, los despide... ¿por qué deberían cambiar de actitud? Hay mucha información sobre los beneficios de IE: SOLID... pero si están demasiado ocupados, estresados ​​y lo que hacen es "trabajar", y saben que no cumplirás con los escritos (y más allá... )... y finalmente, ¿ustedes son AGILE o similar? ¿Qué tipo de circuitos de retroalimentación tienes para ayudar?
(Desarrollador de software, no PM) Mi respuesta a "Funciona, ¿por qué arreglarlo?" sería "¿Cómo lo sabes?". Si tiene un fragmento de código heredado que no está cubierto por las pruebas, no es fácil de entender, tiene demasiadas dependencias y tiene contratos poco claros, ¿cómo sabe que realmente funciona y que seguirá funcionando en el futuro?
como desarrollador daría cualquier cosa por tener un gerente que criticara mi trabajo por no ser SÓLIDO
Me parece que una parte clave del proceso "ágil" es la aceptación del equipo. Sugeriría que, en lugar de tratar de coaccionarlos o incluso convencerlos de que hagan las cosas de la manera que usted cree (o sabe) que es correcto, reúnalos y dígales sin ambigüedades, tenemos este problema y debemos resolverlo, y el status quo no es aceptable. Luego, pídales que presenten la solución y se comprometan con su propia solución, y siempre que sea un intento serio de resolver el problema, usted lo acepta. [continúa en el siguiente comentario]
Por supuesto, debe recopilar datos... métricas reales para mostrarlos. O su solución funcionará, en cuyo caso, hurra, acaba de descubrir un nuevo enfoque, o no lo hará y luego extraiga los datos para mostrarles la prueba, y luego nuevamente permita que ajusten su enfoque. El punto es conseguir que se comprometan con su propio plan de calidad del software. Si algunos no quieren cooperar, bueno, por mucho que apeste, no los quieres en tu equipo. Cambiar la cultura del equipo es difícil y llevará tiempo. Se cometerán errores. Mientras se ajusten honestamente, puede funcionar.
Tal vez Categorizar los problemas en un vocabulario hará que la gente se asuste, como Security Vulnerabilitiesla categoría de contraseñas expuestas, etc. (Soy un desarrollador de pila completa, sin experiencia en la gestión).
¿QUIZÁS sus líneas de tiempo NO están adaptadas para el trabajo adicional? es decir. ¿Los desarrolladores tienen que dedicar más tiempo (que las horas de trabajo) para realizar los cambios? ¿O son los Hitos considerados para los nuevos cambios?
Hola a todos. La situación está empeorando cada día. Ya no me saludan. Me agregué como copropietario de github para el proyecto, comenzaron a gritar que necesitaba su permiso para hacer algo así (¡le pedí permiso al CTO!), Lo hice porque descubrí que fusionaban ramas para dominar sin dejarme ver el código primero. ¡Esto era requerido e inaceptable!
Escribí un correo electrónico al CTO, hablaré con él el lunes. El problema es que el Product Manager los ve como buenos desarrolladores (no programa). Ojalá pudieran simplemente dejar la empresa...

Respuestas (7)

Me gustaría que entendieran por qué quiero hacer algo. [...] ¿Algún consejo?

No teorices, muéstrales.

Su estado mental actual es que saben que lo que hacen funciona . Y te acercas y les dices que teóricamente esto es malo. Nunca ganará a nadie diciéndole que está haciendo un mal trabajo, mientras que usted podría hacer uno mucho mejor. Todo el mundo puede decir eso. Es como si la gente sentada en su sofá viendo la televisión le gritara a los atletas profesionales que podrían haber mejorado su juego.

Si quieres que te sigan, predica con el ejemplo. Si ve algo que necesita mejorar, muéstreles cómo falla. Proporcióneles una solución práctica del mundo real.

¿Quiere un código que se adhiera más a los principios SOLID? Luego bríndeles un ejemplo práctico de por qué el código actual no es óptimo ("Si hago esto, se rompe") y luego sugiera una alternativa real ("Lo he cambiado a esto, ahora ya no puede suceder").

¿Tiene muchos errores de regresión que no ocurrirían con mejores pruebas? Bueno, compila una lista y haz que prueben todos y cada uno de ellos con cada lanzamiento. Eso es lo que es necesario para el negocio. Y luego escriba uno de esos como una prueba unitaria, muéstreles lo simple que podría ser su vida y déjelos decidir si quieren pasar su tiempo haciendo trabajo pesado revisando manualmente una lista de pruebas durante horas o si quieren tener un sofisticado automatizado. conjunto de pruebas que pueden ejecutar con solo chasquear los dedos.

El punto aquí es no decirles qué podría ser mejor. En teoría, todo podría ser mejor para ellos si simplemente ganaran la lotería. Elija un caso específico, muéstreles por qué es malo y luego proporcione una solución funcional. No es una palabra de moda o una teoría, sino un primer paso práctico que pueden tomar ahora mismo.

El problema con este enfoque es que puede terminar en argumentos muy largos. Lo que cuesta tiempo y energía para todos los involucrados. Si, por supuesto, si hace que las cosas cambien para mejor, aún puede valer la pena.
Tenga en cuenta que el ejemplo con las pruebas de regresión aún probablemente provocará un rechazo mental, porque OP tendrá que establecer primero el requisito de probar manualmente las pruebas de regresión. Entonces, si obtuvieron esa ruta, es probable que necesiten discutir con la autoridad al menos para establecer esa regla de calidad (o engañar a un tercero como el departamento de control de calidad para que asuma la culpa^^). No digo que no funcione a largo plazo o similar, solo como una advertencia para quizás abordar.

Decir simplemente a sus subordinados que hagan algo de lo que no pueden ver el beneficio es una receta para el desastre, que usted ya reconoce, así que hágalo divertido para ellos. La gamificación puede no ser fácil para ti, pero puede funcionar para suavizar otros puntos más ásperos.

En un estudio realizado por Sharp et al. (2009), los investigadores sugieren que el factor más influyente en la motivación de los desarrolladores fue su capacidad para identificarse con su trabajo. Esto significa que la mayoría de los desarrolladores deben encontrar un sentido de propósito en el trabajo que realizan, o su motivación para seguir trabajando disminuirá.

https://medium.com/gameful-design/does-gamification-work-in-the-software-development-process-76780e49e545

También es posible que desee reservar algo de tiempo para mostrarles no solo cómo hacer algo, sino también cómo mejora su código, su capacidad para mantenerlo y cómo puede acelerar su proceso de desarrollo. Otra respuesta de nvoigt habla de eso, pero lo diré de manera ligeramente diferente: mostrar, no decir.

Probablemente deba comenzar lentamente, como 2-3 horas un día a la semana. Comience con algo que sea un completo desastre, o simplemente demasiado complicado y difícil de entender. Tal vez sea algo en lo que todos odien trabajar, pero aún no les muestres cómo solucionarlo. Solo úselo como ejemplo, luego tenga algo más, algo más simple, para mostrarles cómo hacer mejoras menores en el código que pueden tener efectos importantes. Una vez que haya pasado por 2 o 4 de estas pequeñas mejoras en un par de semanas, vuelva al "lío de monstruos" y use las mismas técnicas que les mostró anteriormente para reducir, reutilizar y, en general, simplificar el código de espagueti que primero les mostró.

Es posible que incluso desee iterar a través de este enfoque. Enséñales un par de cosas y luego úsalas en el "desastre de monstruos". Enséñales algunas cosas más, luego úsalas para mejorar aún más al monstruo. Hacer espuma, enjuagar, repetir.

Y no lo hagas todo tú solo. Pregunte por las formas en que las personas pueden ver para mejorar el código. Es solo en parte una conferencia, necesita involucrar a su gente en el proceso. Para respuestas correctas o incluso conceptos cercanos, puede entregar mini barras de chocolate , como dulces de Halloween (las cosas buenas, no la chatarra barata). Esto también les da un impulso extra de azúcar para que el cerebro funcione mejor.

Puede encontrar que algunos de ellos ya saben lo que quiere usar, pero tienen la impresión de que no lo saben. Soy sobre todo un programador autodidacta. He investigado mucho a lo largo de los años y entiendo todo tipo de conceptos, pero no necesariamente conozco los términos para esos conceptos. (Recientemente arruiné una entrevista debido a esto). También es posible que ya usen los conceptos y piensen que no los está reconociendo por ello. O los están usando incorrectamente y solo necesitan pequeños ajustes para hacerlo correctamente, en lugar de una revisión de su proceso. Hay muchos problemas sociales o culturales diferentes con los que te puedes encontrar que son la causa de la fricción, en lugar de tener algo que ver con la tecnología.

ayuda externa

También hay muchos sitios web que se centran en la codificación de juegos, incluso si no necesariamente enseñan SOLID o los otros principios que está tratando de implementar. Solo tendrás que investigar para encontrar uno que lo haga. He usado CodinGame para mejorar mis habilidades de codificación, pero no recuerdo específicamente qué principios, si es que hubo alguno, enseñaron los desafíos. Hay muchos desafíos en el sitio y la mayoría son creados por miembros, por lo que se siguen agregando, por lo que es posible que haya algo que pueda usar. Solo asegúrese de obtener la aprobación para hacer esto en el horario de la empresa primero. Y sí, debe hacerse en el horario de la empresa, de lo contrario se convierte en una "tarea" que probablemente no se hará.

La implementación de la programación entre pares también puede ayudar. Juntar a un senior y un junior para trabajar en una tarea puede enseñarles a ambos cosas nuevas. También puede ayudarlos a superar un obstáculo en su aprendizaje. Esto puede ser el equivalente a la enseñanza 1 a 1, sin que usted tenga que hacer la enseñanza. Además, una de las mejores formas de aprender es enseñando. Si puedes explicárselo a alguien más, lo entiendes. Y cuanto más fácil puedas explicárselo a otra persona, más probable es que realmente lo entiendas y no estés simplemente repitiendo lo que dice un libro o un artículo.

no lo fuerces

No importa lo que haga mientras intenta que su equipo aplique estos "nuevos" principios, hágalo atractivo para ellos como desarrollador. No utilice un Plan de mejora del rendimiento (PIP), como sugiere otra respuesta. Poner los trabajos de las personas en la línea es casi una forma garantizada de lograr que se vayan independientemente de si completan el PIP. Y si se quedan, no confiarán en usted para intentar implementar más cambios y otro PIP. Al igual que cualquier otra parte de la vida, los ultimátum rara vez funcionan y casi nunca mejoran la confianza.

Explíqueles cómo va a mejorar su trabajo y su vida personal. Una contraseña expuesta/no encriptada puede dar lugar a infracciones que los dejarán trabajando las 24 horas del día para tratar de parchear y restaurar cualquier cosa dañada por el hackeo. No deje esto al azar o en algún momento lejano imaginario/no especificado en el futuro, pregúnteles cómo reaccionarían si esto sucediera durante un momento importante en su vida, como una boda, vacaciones, un juego deportivo infantil o lo que sea. Que sea un ejemplo práctico, relevante para ellos. Luego recuérdeles que arreglarlo ahora previene ese tipo de desastre.

Explique cómo hacer las cosas más simples reduce su carga mental al hacer cambios futuros. Explique cómo reutilizar los mismos métodos no solo puede simplificar el código, sino que también facilita encontrar el código que están buscando. Explique cómo el polimorfismo puede reducir las líneas de código y cómo a veces puede no ser apropiado. Sí, explique cómo algunos de los conceptos que desea implementar no siempre son necesarios o, a veces, complican demasiado las cosas innecesariamente. También explique que la mayoría de estos cambios se pueden hacer iterativamente a medida que se necesiten, no "solo porque yo lo diga". La mayoría de estos conceptos son solo "reglas empíricas", en lugar de ser inamovibles, que es probablemente lo que realmente están rechazando.

Claro, esto deja la puerta abierta a que los cambios sucedan más lentamente, pero eso probablemente hará que funcione mejor. Al igual que con una dieta, si hace demasiados cambios demasiado rápido, dejará la dieta más rápido de lo que la empezó y nunca podrá volver a la dieta.

Advertencia

No trate de hacer demasiado de una vez. Hice que un gerente le diera a mi departamento un libro de varios cientos de páginas sobre los principios de SOLID y nos hizo leerlo a todos. Era tan aburrido que no podía pasar ni 5 páginas sin quedarme dormido. Esto fue mientras el gerente intentaba hacernos cambiar una cantidad muy significativa de cómo escribimos el código casi de la noche a la mañana. Sí, necesitábamos hacer esos cambios, pero hubo tantos cambios que no pudimos seguir el ritmo de todo. Y todo fue una orden, sin espacio para preguntas o incluso explicaciones de qué o por qué se necesitaban los cambios. Junto con otros cambios significativos en la actitud de la gerencia, esto me llevó a encontrar un trabajo diferente después de 4 años de estar allí.

Es probable que su gente se haya sentido cómoda en sus posiciones. Eso no es necesariamente algo malo, pero los cambios que está intentando hacer los hacen sentir incómodos. Estar incómodo es generalmente cuando las personas aprenden cosas, simplemente no lo hagas demasiado incómodo o perderás a la gente. Y puedes perderlos sin que realmente encuentren un trabajo diferente. Asegúrese de trabajar con ellos cuando tengan dificultades y sea comprensivo cuando tengan reservas.

No estoy diciendo que los mimen o los mimen, simplemente no sean una pared de ladrillos, donde todo rebota y no pueden obtener ninguna respuesta.

¡Buena respuesta! Realmente aprecio que viene junto y ayuda a los desarrolladores a sentirse cómodos con el cambio y trata su experiencia como válida (pero actualizable), en lugar de oponerse a ellos como rebeldes por no apoyar algo que aún no entienden el valor. Elévelos para que entiendan los riesgos (y las complicaciones adicionales) de la forma antigua y esté abierto a sus ideas para solucionarlo, mientras esté listo con principios SÓLIDOS cuando no tengan ninguna sugerencia. Trate a sus desarrolladores como los expertos que son, no como gatos para ser arreados. Sea visionario y solidario, no autoritario.
Referencia para "respuesta por nvoigt"
demasiado complicadodemasiado complicado
La última oración es una oración corrida .
Re "programación entre pares" : ¿No te refieres a la programación en pareja ?
@PeterMortensen, lo escuché en ambos sentidos, usado de manera bastante intercambiable. computerlanguage.com/results.php?definition=peer+programming

Parece que estás estresado por esto. Necesitas sacarte este estrés de encima. Esto es lo que recomendaría:

Parece que el equipo no conoce la importancia de todos los problemas técnicos que ha señalado. Hay dos maneras de hacer que la gente entienda:

  1. Haz que solucionen esos problemas y luego realiza un seguimiento de los resultados.
  2. Usted se ocupa de esas correcciones y muestra los resultados.

Esto último siempre me ha funcionado. Cuando lo haces bien y cuando el equipo ve el valor de lo que has hecho. Se ven obligados a cuidarlo en el futuro, naturalmente.

Puede elegir uno de esos problemas técnicos con los que está familiarizado y en los que cree que puede marcar la diferencia.

Comience y manténganos actualizados...

Necesita atacar este problema en múltiples frentes:

Primero, ofrezca pagar clases que enseñen las prácticas y las razones para usarlas. Ofrecer un bono y/o aumento de sueldo a cualquiera de ellos que obtenga certificados. No le des más de dos meses para comenzar a obtener algo de tracción. Puede encontrar que algunos de ellos están dispuestos a hacer al menos un poco de esfuerzo.

Tape los agujeros de datos. Necesita pruebas para respaldar sus afirmaciones. Todos los registros de código deben asignarse a un error, característica o historia de usuario. Comience a medir el tiempo dedicado a trabajar con esos errores y características. Agregue autopsias frecuentes. Todos necesitan saber exactamente cuánto esfuerzo se dedica a reescribir el código frente a agregar código nuevo, para cada tarea. Regrese y analice errores antiguos. ¿Cuál fue la causa raíz? ¿Fue un error del día cero o se introdujo porque el "código que funciona" se dobló para agregar algo nuevo?

Contrate a un consultor para revisar su base de código y prácticas de desarrollo, y escriba una lista de las diez cosas que la empresa debería arreglar.

Empieza a prepararte para despedir gente. En primer lugar, contrate a un ingeniero sénior de temporal a permanente (preferiblemente uno con dicha(s) certificación(es)) y comience a trabajar con él para solucionar algunos de los problemas más graves. Después de unos meses, cuando el trabajador temporal controle la base del código, contrátelos y traiga al siguiente trabajador temporal, luego despida al desarrollador que trabajó más duro para bloquear sus esfuerzos. Enjuague y repita.

De una forma u otra, debe tener el equipo adecuado en el trabajo. Si no son los trucos actuales, entonces tienes que reemplazarlos. Si bien puede ser un mentor y promover el aprendizaje permanente y la mejora continua, no es su lugar educarlos, porque ese no es su conjunto de habilidades.

Prefacio

Dado que esta pregunta se publicó en Project Managment Stack Exchange y no en The Workplace ni en ningún otro sitio relevante, la única forma válida de responder a esto desde la perspectiva de la gestión de proyectos es centrarse en las responsabilidades organizativas y de gestión de proyectos. Eso significa eliminar muchas de las partes no esenciales de su pregunta y centrarse en los aspectos centrales de la gestión de proyectos que tienen respuestas canónicas o, al menos, las mejores prácticas ampliamente aceptadas.

TL;DR

Puede o no estar involucrado con una organización disfuncional, pero ciertamente está malinterpretando su rol dentro del espacio de gestión de proyectos y puede carecer de las habilidades adecuadas y el empoderamiento organizacional para hacer su trabajo con éxito. Su objetivo principal debe ser colaborar tanto con su equipo de liderazgo como con sus desarrolladores para lograr acuerdos de trabajo funcionales que cumplan con los objetivos de la organización para el proyecto y, al mismo tiempo, empoderar a todos (incluido usted) para refinar continuamente el proceso hasta que cumpla con sus objetivos basados ​​en resultados. .

Análisis situacional

Hay mucho material en su pregunta que básicamente se reduce a algunos elementos clave:

  1. Es posible que esté lidiando con algunas diferencias entre las culturas laborales europeas y estadounidenses. Incluso si ese no es un problema directo, ciertamente está coloreando parte de la perspectiva y el marco de su situación, y debe reconocer este aspecto del problema.
  2. El CTO no se está apropiando del problema ni está dispuesto a ejercer autoridad directa. Cuando un ejecutivo de nivel C dice que las personas son libres de renunciar (en lugar de que puedan ser despedidas), esa persona se niega a ejercer autoridad directa y lo pone a usted en la posición de tener que resolver el problema a través de la influencia en lugar de la autoridad delegada.
  3. Su equipo de desarrollo se resiste a su enfoque recomendado, ya sea que se presente en forma de sugerencias, directivas, principios de diseño o cualquier otra cosa que pueda estar en cuestión. El hecho de que lo hagan de una manera que usted perciba como grosera es una indicación de que no se ha ganado su respeto a través de la autoridad delegada o la influencia de habilidades blandas. El resultado final es que no tiene la capacidad de efectuar un cambio significativo, si es que ese es un objetivo organizacional para usted.
  4. Desde una perspectiva de gestión de proyectos, nada en su publicación aborda métricas, KPI, controles de proyectos o cualquier otra cosa medible. El cambio es difícil y necesita ser liderado desde un lugar de visión ya través de la aplicación de un interés propio ilustrado. La gestión de proyectos como profesional suele ser una función difícil precisamente porque es una función con mucha responsabilidad, pero con muy poca autoridad directa o delegada. Como resultado, los gerentes de proyecto suelen tener más éxito cuando se enfocan en los controles del proyecto en torno al presupuesto, el alcance, el cronograma y la calidad, en lugar de en cuestiones arquitectónicas o de ingeniería.
  5. Su concepción de su papel necesita aclaración. ¿Está destinado a ser un gerente intermedio, un líder de servicio, un entrenador, un líder de pensamiento de procesos comerciales o algo completamente diferente? El hecho de que no tenga una idea clara de cómo se supone que debe liderar el equipo, y que el liderazgo senior no le dé instrucciones sobre lo que se supone que debe lograr que el equipo logre, son siempre indicadores de un proceso organizacional. problema.

Sin duda, hay muchos otros problemas planteados por su publicación, así como la forma en que los enmarca. Sin embargo, creo firmemente que la breve lista anterior cubre la mayoría de los temas procesables y aquellos en los que debe centrar su energía inmediata.

Recomendaciones

No existe una lista completamente canónica posible para los problemas de personas e influencia, pero enmarcarlos como problemas organizacionales conduce a soluciones bastante claras. Si bien no es exhaustivo, sin duda recomendaría alguna combinación de las siguientes actividades:

  1. Asegúrese de obtener una guía clara del liderazgo ejecutivo sobre el alcance de su autoridad (si corresponde), así como expectativas y métricas claras sobre cómo se evaluará su desempeño en el puesto.
  2. Cualquier problema que no pueda resolverse dentro del alcance de su autoridad o influencia debe comunicarse claramente al liderazgo superior junto con las métricas y recomendaciones de apoyo. Lo que elijan hacer con esa información (si es que lo hacen) es su responsabilidad y no la tuya.
  3. A menos que se haya hecho explícitamente parte de su trabajo, no piense en términos de gestión del cambio. Piense en términos de resultados medibles . Trabaje con el equipo para identificar los resultados deseados, los indicadores clave de rendimiento que miden el progreso hacia esos resultados y cualquier control de proceso necesario para lograr esos resultados. En otras palabras, cree responsabilidad compartida para resultados claramente definidos en lugar de intentar generar un cambio de arriba hacia abajo que no puede crear sin la colaboración activa del equipo.
  4. Deje de aceptar la responsabilidad por los problemas que le faltan las herramientas, las habilidades, la autoridad u otros medios para controlar. Cree responsabilidades compartidas donde pueda, refiera otros problemas al nivel organizacional donde puedan resolverse y asegúrese de que todas las partes (incluido usted, los desarrolladores y el CTO) tengan muy claro quién es responsable de qué dentro de su organización existente. cultura.
  5. Recuerde que ahora es un "Gerente de proyectos tecnológicos" (lo que sea que eso signifique dentro de su empresa), y no un desarrollador. Así como usted quiere ganarse su confianza en usted mientras desempeña su función, también necesita generar y demostrar la confianza que ellos necesitan para desempeñar la suya. Si eso no está sucediendo, eso es parte de lo que todos ustedes deben arreglar colectivamente .

Los roles, las responsabilidades, la confianza, la colaboración y los acuerdos de trabajo nunca son iguales para todos. Estas son cosas que deben discutirse honesta y abiertamente, especialmente en puntos de inflexión clave, como cambios en la composición del equipo o cambios organizacionales en roles y responsabilidades. No resolverá estos problemas de la noche a la mañana, pero si estas cosas no son fundamentales para su plan para abordar los problemas que ha identificado, entonces finalmente está resolviendo el conjunto equivocado de problemas. La transparencia, la comunicación y la colaboración son sus mejores herramientas, así que utilícelas con la mayor frecuencia y eficacia posible.

De su publicación, parece que todo el equipo no está a bordo. Por lo tanto, no son ellos; es usted y su gestión.

  • ¿Cómo está trabajando el equipo?
  • ¿Cómo se manejan las estimaciones, por quién?
  • ¿Son las consecuencias de la deuda técnica una preocupación real de gestión?
  • ¿Se detendrá el nuevo desarrollo hasta que se corrija toda esta deuda técnica?

Póngalos en Planes de Mejora del Desempeño.

Actualmente no se están desempeñando adecuadamente y tiene una lista de las formas en que su rendimiento es deficiente. Afortunadamente, existe una herramienta para mejorar el rendimiento que utiliza exactamente ese tipo de listas: el Plan de mejora del rendimiento.

La motivación se clasifica en dos tipos, intrínseca y extrínseca, y como parece que carecen de motivación intrínseca, es necesario utilizar la motivación extrínseca, y eso se rige por los incentivos. Puede hacer esto ofreciendo bonificaciones por alto rendimiento, pero parece que su principal problema es que su rendimiento ni siquiera es adecuado, y eso es lo que el Plan de mejora del rendimiento está diseñado para abordar. El Plan de mejora del rendimiento establece los incentivos muy claramente: complete los siguientes objetivos en el tiempo indicado y evitará perder su trabajo.

Un PIP es en realidad un ultimátum, que rara vez funciona. Esto infunde miedo en sus empleados, no una mejor ética de trabajo.
No puedo imaginar que un PIP sea efectivo para lograr que escriban un mejor código. Parecen no ser perezosos (que es lo que suele apuntar un PIP), sino más bien tercos, insubordinados y/o ignorantes.
@NotThatGuy ¿Por qué un PIP puede apuntar a la pereza pero no a la terquedad, la insubordinación o la ignorancia?
@EJoshuaS No creo que realmente haya buenos objetivos que pueda establecer para la ignorancia, la insubordinación o la terquedad para que logren "pasar" el PIP. Esas cosas se abordan mejor, respectivamente, educándolos, dándoles una advertencia formal/despidiéndolos o básicamente apelando a la autoridad/estableciendo estándares de codificación.
@NotThatGuy Si tiene una lista de cosas que quiere que hagan y que no están haciendo (por ejemplo, "seguir los principios de programación SÓLIDOS") en su PIP, ¿importa por qué no las están haciendo?
@nick012000 Sí, importa. Como escribí en mi último comentario, las diferentes razones por las que no hacen lo que se les dice se abordan mejor de diferentes maneras. Castigar a alguien por falta de conocimiento sin intentar ayudarlo a obtener ese conocimiento es simplemente una gestión terrible. La terquedad es demasiado vaga para resolverla con un castigo, a menos que también venga con insubordinación o simplemente quieras que esté de acuerdo con todo lo que le dicen (lo que probablemente sea peor). La insubordinación posiblemente puede ser abordada por PIP (y RRHH podría incluso insistir en eso), pero no es una forma particularmente buena de abordarla.
@nick012000 ¿Cómo establecería una meta objetiva para "seguir los principios de programación SOLID"? Una persona podría argumentar que algo sigue a SOLID, mientras que otra podría argumentar que no. ¿Y tú cómo lo medirías? Cualquier cosa que se me ocurra probablemente vendría con muchos efectos secundarios no deseados (por ejemplo, seleccionar problemas que evitan el problema o escribir código que es malo porque va demasiado lejos en la dirección opuesta). Sin mencionar que castigar las malas prácticas de codificación generalmente es solo una idea terrible que desalienta a escribir código. Debería arreglarse en la revisión del código.
@NotThatGuy "¿Cómo establecería una meta objetiva para "seguir los principios de programación SÓLIDOS"?" Usted decide qué nivel de cumplimiento con los principios SOLID es aceptable (p. ej., "generalmente sigue los principios SOLID" frente a "normalmente sigue los principios SOLID con pocas excepciones" frente a "siempre sigue los principios SOLID"), y luego observa sus compromisos y los historiales de revisión de código. y decidir si han alcanzado o no ese nivel.
Si castigas a alguien si sus clases no son de responsabilidad única, dividirán sus clases en pequeños fragmentos horribles sin sentido solo para asegurarse de evitar clases con responsabilidades múltiples. No solo si son vengativos, sino también si están tratando legítimamente de alcanzar la meta, porque lo que es una sola responsabilidad puede ser bastante subjetivo. Pasarán horas, días o semanas revisando su propio código una y otra vez para asegurarse de que sea perfecto y temerán enviar su código para su revisión o fusionarlo, porque no quieren otro ataque contra ellos.
2/2 Tal vez puedas establecer otras metas para contrarrestar algunos problemas causados ​​por esa meta, pero eso puede ser un ciclo interminable y vas a hacer que odien venir a trabajar de todos modos.
Un PIP no es un instrumento para hacer que alguien mejore, un PIP es un método de recursos humanos para encontrar justificaciones para despedir personas. Un PIP no hará que las personas mejoren, solo hará que finjan hasta que tengan un mejor trabajo en sus propios términos.
@nvoigt "Un PIP no es un instrumento para hacer que alguien mejore" Puede serlo. "Mejora" está literalmente en su nombre. Puede usarse simplemente como un instrumento para crear una justificación para despedir a alguien, pero también puede usarse como una forma de proporcionar una motivación extrínseca para mejorar. Obviamente, la motivación intrínseca es mejor que la motivación extrínseca, pero si a tus empleados les falta la primera, como gerente tienes que imponer la segunda a través de incentivos.