Soy el líder técnico de un proyecto y mi jefe es el Gerente de Proyecto. Él está formalmente a cargo de decidir qué poner dentro del proyecto y yo estoy a cargo de decidir cómo se implementarán las cosas.
En los últimos meses nos dimos cuenta de que debemos repensar cómo la aplicación maneja algunos casos extremos y cambios relevantes para obtener este resultado. En este desarrollo, nuestros roles y responsabilidades se mezclaron bastante.
En teoría, creo que deberíamos colaborar para obtener los mejores resultados posibles haciendo converger nuestros puntos de vista (potencialmente diferentes). En la práctica, adoptó una postura dura y quiere que se realicen algunos cambios sin aceptar mi opinión.
Me temo que sus ideas serán perjudiciales para la aplicación, ya que al corregir los casos extremos se producirá una nueva serie de errores y la calidad del código base se verá afectada. Debido a eso, traté de hacerlo cambiar de opinión varias veces, pero su postura se volvió progresivamente más agresiva hasta el punto de ser casi verbalmente abusivo.
Si bien entiendo que él es el jefe y debe tener la última palabra, al mismo tiempo me siento responsable de la calidad general de la aplicación y no quiero que me culpen (algo que estoy seguro sucederá en unos pocos semanas/meses si se implementan los cambios y surgen problemas * ) para un producto en el que al final no tuve voz ni voto.
* Esto ya sucedió antes, cuando le avisé a mi gerente que parte de su decisión podría generar problemas más adelante y, de manera similar, mis objeciones fueron desestimadas. Seguramente, después de un tiempo encontramos los problemas que predije y otros más inesperados debido a estos, y me culparon por dejar que sucediera.
Todos nos encontramos con este tipo de conflicto.
Lo único que puedes hacer es DOCUMENTAR TODO
No hay nada de malo en que el jefe sea el jefe hasta que intente imponer sus errores a los demás. La forma más efectiva de hacer retroceder es hacer lo siguiente.
Luego, cuando explote y te pregunten por qué dejaste que sucediera, puedes responder que no lo hiciste. Documentó su enfoque recomendado, que fue anulado y predijo con éxito las consecuencias de no seguir su enfoque.
Este es un caso en el que debe dejar caer la pelota para probar su punto, pero hacer un registro en papel para que no se le pueda culpar.
Dejando a un lado los roles que ustedes dos tienen como Tech Lead y Project Manager respectivamente, está la carta de triunfo de que él es su jefe.
Entonces, realmente debe tener esa dinámica en mente: no estoy diciendo que nunca presente su caso cuando los dos no están de acuerdo, pero una vez que sienta que ha defendido su caso, si su jefe aún insiste en su opción preferida entonces solo tienes que aceptarlo. Tienes que ser tan poco emocional sobre el tema que se está discutiendo tanto como sea posible - de tu publicación parece que tu jefe tiene forma de volverse agresivo en estas discusiones y tan tentador/natural como puede parecer que no puedes estar a la altura porque eso solo aumentará su respuesta emocional y lo profundizará más. si su objetivoes básicamente bueno, pero su método propuesto es donde tiene el problema, asegúrese de enfatizar repetidamente que está de acuerdo con lo que están tratando de lograr, en serio, use las palabras "Estoy de acuerdo con usted" donde pueda porque esto puede desactivar la confrontación tono que este tipo de discusiones pueden desarrollar.
Si cree que seguir su camino tendría serias consecuencias negativas en la calidad del resultado, me aseguraría de documentar sus inquietudes (y las consecuencias asociadas) por correo electrónico como un movimiento de CYA, esto no tiene que ser un algo de confrontación o algo por el estilo: simplemente escríbalos en un correo electrónico mientras el problema aún se está "discutiendo", por ejemplo:
Hola [jefe/PM], estaba pensando en la función X en el Widgetron 3000 que estábamos discutiendo, veo de dónde vienes y estoy de acuerdo en que sería genial si pudiéramos hacer funcionar esa función, pero me preocupa que si ¿Utiliza el Unobtanium como sugiere que podría provocar que el condensador de flujo se vuelva inestable? Y corremos el riesgo de causar problemas mayores en el futuro. Si usáramos el Handwavium en su lugar, ¿no nos permitiría seguir haciendo la función X sin el mismo riesgo?
Es posible que no los escuchen y si están decididos, es casi seguro que no lo harán, pero probablemente le responderán anulándolos al menos y lo importante es que usted tiene estas preocupaciones y consecuencias y sus el despido posterior de ellos por escrito y, en caso de que haya algún intento de culparlo en el futuro, puede señalar esa cadena de correo electrónico y demostrar que los planteó y que fueron rechazados.
Si hay confusión en las discusiones que está teniendo, esto bien podría conducir a la confusión y al código enredado que está insinuando que ya está ahí. Suena como si estuvieras apilando espaguetis encima de espaguetis y te quejaras de que el plato se está desbordando.
Dependiendo de los plazos del proyecto, esta podría ser una buena oportunidad para dar un paso atrás y para que ambos vuelvan a evaluar el panorama general.
Vuelva a los requisitos básicos y vea si los problemas se pueden resolver cerrando todas esas pequeñas solicitudes y errores ad-hoc y analice y reescriba, y hágalo correctamente.
Si los plazos no permiten una reevaluación fundamental, comprométase con las solicitudes más recientes e inclúyalas lo mejor que pueda en ese momento. Luego deje que los errores salgan en las pruebas.
Después de eso, dé un paso atrás y vea si los cambios más grandes son más apropiados que las correcciones adicionales iterativas.
Suena como si estuvieras tratando de decirle rotundamente que no en algunas cosas. Lo que funciona mucho mejor es decirle lo que se necesita para hacer lo que quiere de forma segura, con el nivel de calidad adecuado.
Ese código es realmente difícil de cambiar sin romperse. Para manejar esos casos extremos, necesitaremos pasar algunas semanas agregando algunas pruebas en esa área y haciendo algunas refactorizaciones y limpieza primero. De lo contrario, el tiempo para corregir los errores después será completamente impredecible. Entonces deberíamos poder implementar los casos extremos en una semana más o menos, con mucha más confianza.
No mienta ni aumente su estimación. Sea tan preciso como pueda. Ser un jugador de equipo sincero y solidario. No estás diciendo que no. Estás diciendo: "Sí, definitivamente, estoy a bordo. Así es como lo hacemos". Luego conoce el costo real, incluida la deuda técnica, y puede decidir si aún vale la pena y cómo encaja realmente en comparación con otras prioridades.
Esta técnica puede ser realmente efectiva. Lo aprendí por primera vez en el contexto de la crianza de los hijos, y funciona en todo tipo de situaciones aparentemente estancadas. En resumen, pregúntate qué haría falta para que dijeras que sí. La respuesta casi nunca es nada, y te sorprendería lo que la otra parte está dispuesta a conceder también.
Como lo veo en su descripción, su PM está a cargo de los requisitos y usted está a cargo de la implementación. Los requisitos siempre deben estar documentados, incluso en un proceso acelerado como ágil/scrum. Si su PM está pidiendo menos documentación, no más, eso es una seria señal de alerta. El PM debe obtener los requisitos del cliente, presentarle los requisitos y exigir el cumplimiento documentado de esos requisitos (pruebas unitarias, pruebas del sistema, demostraciones, etc.). Hable sobre esto con su gerente funcional, su trabajo es facilitarle hacer su trabajo. Si su PM es su Funcional, ahora se trata de un problema de Recursos Humanos y debe hablar con su representante de Recursos Humanos. No lo presente como una queja, sino como un problema que le gustaría resolver para que todos puedan volver a trabajar.
Dicho esto, a partir de su publicación y comentarios, parece que tiene varias señales de alerta presentes, y debe revisar las siguientes políticas de su empresa y dejar que lo guíen: Ética/Código de conducta, Lugar de trabajo libre de amenazas, Violencia- lugar de trabajo libre y lugar de trabajo libre de acoso.
El PM está a cargo de qué , usted está a cargo de cómo . La clave es dejar en claro que sus cambios son parte del cómo y no del qué .
Por ejemplo, PM quiere la característica X. Quiere hacer los cambios A, B y C. Simplemente diga:
Para entregar X necesitamos que A, B y C estén en su lugar. No podemos entregar X sin entregar primero A, B y C.
Deje en claro que X requiere A, B y C. Si PM quiere X, entonces PM también obtiene A, B y C. No entres en demasiados detalles. PM no es técnico y no se espera que entienda por qué X depende de A, B y C.
Si X realmente no depende de A, B y C, entonces no utilice este enfoque.
Recuerde que nadie quiere software roto, ni siquiera el PM.
"Me temo que sus ideas serán perjudiciales para la aplicación, ya que al corregir los casos extremos se producirá una nueva serie de errores y la calidad del código base se verá afectada. Debido a eso, he tratado de hacerle cambiar de opinión. un par de veces, pero su postura se volvió progresivamente más agresiva hasta el punto de ser casi verbalmente abusivo".
No ha dejado en claro que el primer ministro está incursionando en áreas técnicas. Decidir que el programa necesita manejar los casos extremos correctamente está absolutamente en el ámbito del PM. Asegurarse de que una nueva serie de errores no resulte de esto es, literalmente, su trabajo.
Creo que tiene razón en querer permanecer en su área de especialización. Habrá momentos en los que haya cierta superposición como en este caso. Todavía puede asegurarse de que sus inquietudes desde el punto de vista técnico aún se aborden. Si bien es posible que no tome la decisión final, es importante que aún identifique y enfatice, si es necesario, los riesgos que asume el PM al aceptar o ignorar ciertas compensaciones. En este caso, puede tener estas características, pero existe el riesgo de que los cambios futuros sean más difíciles, llevarán más tiempo y podrían tener más errores.
Al final, estás haciendo sugerencias y el PM está tomando decisiones. Con suerte, su nivel de responsabilidad es proporcional a su nivel de autoridad.
Soy un desarrollador sénior y básicamente estoy desempeñando los roles de gerente de proyecto técnico y líder de equipo. Mi perspectiva a su pregunta es más desde el lado de PM:
En mi situación, era un desarrollador junior que constantemente cuestionaba y desafiaba las decisiones que estaba tomando con respecto al proyecto.
Hubo momentos en los que teníamos discusiones acaloradas sobre las características y el alcance, y finalmente llegué a un punto en el que ya no podía manejarlo. En lugar de alentarlo a contribuir con sus ideas, comencé a cerrarlo antes de que comenzara. Tratar de lidiar con su deseo de que yo viera las cosas a su manera se volvió más agotador y consumía más tiempo que comencé a cuestionarme si encajaba bien en el equipo.
La resolución aún no ha sucedido, pero mi desarrollador junior ha mejorado su actitud considerablemente en las últimas semanas.
Lo que hice fue definir claramente sus roles y responsabilidades, y comencé a tratarlo menos como un amigo y más como el PM para Dev. Cuando comienza a desafiarme en algo ahora, solo le permito ir tan lejos y luego digo algo como: "No es tu responsabilidad decidir eso".
Si bien su situación es bastante diferente, mi respuesta para usted es esta:
No puede abordar ninguno de los problemas técnicos mientras haya problemas personales sin resolver.
Siéntate y habla con él. Discúlpese por las cosas que ha dicho o hecho que podrían haberse manejado mejor . Sé que esto es difícil, pero al romper el hielo, le da a su compañero de trabajo un camino para disculparse también. (Puede que no, pero como mínimo se derribarán algunos ladrillos en la pared virtual entre ustedes). Enfatiza que quieres trabajar en equipo y que realmente quieres que el proyecto tenga tanto éxito como él.
Una vez que lo deje fuera del camino, puede comenzar a lidiar con la técnica. Aquí están algunas sugerencias:
Mi sugerencia es muy simple:
1) Exprese su preocupación por la implementación de los casos extremos y asegúrese de que se registren de manera clara y concisa.
2) Escuche la respuesta del director del proyecto. Si cree que ha entendido mal un punto, aclárelo.
3) Agregue los casos extremos a la implementación si el gerente del proyecto todavía los quiere en la aplicación.
4) Abandonar la discusión sobre el punto a menos que salga a la luz información nueva o pertinente.
5) Continúe trabajando con los nuevos casos extremos con tanta preocupación por la calidad del código como antes de la discusión.
No sé sobre la aplicación que está produciendo, pero sé que a los desarrolladores en general les gusta el código limpio y fácil de administrar. Entiendo de su pregunta que lidiar con los casos extremos agregará una complejidad significativa a la base del código que dificultará el mantenimiento del código y aumentará el riesgo del proyecto.
La otra perspectiva es que los casos extremos pueden ser importantes para el usuario final de la aplicación y, aunque su manejo haría que el código base fuera más difícil de seguir y mantener, el manejo de los casos extremos puede ser realmente un requisito. Muchas personas olvidan cuándo el software funciona correctamente, pero pueden decirle la cantidad de veces que no hace lo que ellos quieren que haga.
Al final, el Project Manager tiene la responsabilidad final desde su perspectiva. Si toma una decisión para los casos extremos, es su responsabilidad. Es su responsabilidad implementar los casos extremos y la aplicación lo mejor que pueda.
Debe leer, piense que su jefe es uno de ellos: https://en.wikipedia.org/wiki/Psychopathy_in_the_workplace
Significa que debes correr lo más rápido que puedas o comenzar una pelea que te costará mucho e incluso si ganas y él se va, te dará poco beneficio.
Si no puede conseguir que sus superiores vean la situación y la corrijan, debe corregirla usted mismo encontrando un nuevo trabajo.
mosquito
Mónica Celio
pieter geerkens
Alejandro
heapOverflow
Pedro Mortensen