¿Cómo lidiar con un desarrollador senior que podría no ser beneficioso para la calidad de nuestro proyecto?

He estado trabajando en mi empresa actual durante más de 2 años y disfruto mucho trabajar en el proyecto actual en el que trabajo. Nuestro gerente de proyecto del lado del cliente es increíble, los clientes son increíbles y, a menudo, me lo agradecen. Me siento responsable del proyecto y me esfuerzo por hacer el mejor trabajo posible. Realizo el 80 % del trabajo de mi proyecto actual, pero el desarrollador principal que tengo por encima tiene ciertos hábitos que impiden la calidad de nuestros proyectos.

Para ser más especifico:

  • Apagó el verificador de estilo en su IDE porque 'le molestaba'
  • No escribe pruebas, en absoluto, no hay una gran cultura de pruebas en la empresa, pero el proyecto ha crecido demasiado para manejarlo sin tener pruebas y me gustaría mucho que crezcan con el tiempo.
  • Él no realiza revisiones de código, por lo que la mayor parte de mi código va al entorno de ensayo y, finalmente, a producción sin que nadie verifique realmente la calidad del código (el cliente ejecuta pruebas de aceptación y regresión en el entorno de ensayo, pero las revisiones de código aún ser enormemente beneficioso y ahorrarle tiempo de prueba al cliente)
  • Él se comunica mucho con el cliente, pero no me lo comunica a mí. Siempre le envío una copia en los correos electrónicos, él no me envía una copia en sus correos electrónicos al cliente. A menudo, me hace perder información sobre la planificación a largo plazo a pesar de hacer la mayor parte del trabajo y tener mucho conocimiento sobre la base del código.
  • Hace la implementación en el entorno de prueba y luego le comunica al cliente lo que se puede probar sin avisarme siempre, lo que a menudo genera que me envíen tickets porque no se han aplicado los cambios de configuración de la aplicación posteriores a la implementación.
  • A veces arregla las entradas de una manera muy 'vaga', por ejemplo, recibimos un tictac de que el contraste en un área específica era bajo. Lo arregló eliminando la mayor parte del diseño y cambiando la fuente. Técnicamente solucionó el problema, pero no terminó de mejorar el proyecto.
  • Las implementaciones para la puesta en escena a menudo toman días cuando está ocupado con otros proyectos, esto no es un gran problema porque, en general, nos adelantamos al cronograma, pero aún presenta ineficiencias. He defendido la continuación del despliegue, pero él está totalmente en contra de esto. Decir que esto es una pérdida de tiempo.
  • A veces hace un trabajo innecesario pero "divertido", por ejemplo, refactorizó el CSS de una parte de nuestra aplicación mientras se realiza un rediseño en unos meses.

He dado revisiones extensas de código en sus compromisos antes, pero mis comentarios fueron ignorados en su mayoría. También he hablado sobre algunos de estos problemas con él y, a veces, está abierto a sugerencias, pero otras veces me impone la antigüedad o lo hace sin comunicarme al respecto.

Al final, siento que la calidad del proyecto se beneficiaría de tener otro segundo desarrollador a bordo.

¿Cuál sería la mejor manera de abordar una situación como esta?

Editaré la publicación y lo dejaré claro. Menciono la rama de desarrollo que se implementará en la puesta en escena. Una vez que el cliente acepte esto, la rama de desarrollo se fusionará con nuestra rama maestra y la rama maestra terminará en producción.
Mi jefe generalmente tiende a desestimar mis comentarios (como en el caso del verificador de estilo en su IDE) o desdeñoso (en caso de retrasos en las implementaciones que conducen a ineficiencias) o tira de mi rango (en el caso del rediseño). En general, siento que responde menos a la comunicación que otros desarrolladores (senior) con los que trabajo.
¿Cuáles son mis pérdidas? Disfruto mucho trabajar en el proyecto debido a los increíbles clientes y al excelente gerente de proyectos del lado de los clientes. También encuentro muy motivador trabajar en este proyecto, así que quiero explorar otras alternativas antes de tomar la decisión final de buscar un trabajo diferente.
Demasiado texto, no hay suficientes detalles realmente importantes. ¿Quien es tu gerente? ¿Es este desarrollador senior? ¿Has intentado hablar con él o con la gestión (del proyecto)? Tenga en cuenta que los detalles sobre su trabajo (incluido el proceso de puesta en escena/implementación) son irrelevantes en este sitio, no necesita entrar en tantos detalles, ya que generalmente genera argumentos en los comentarios y las personas no responden la pregunta real. .
Algunas de las cosas no importan. Por ejemplo, si desactiva una característica de su propio IDE, esa es su propia preferencia. Si desea una guía de estilo, esa es otra discusión que se debe tener (debe presentar un caso), pero si se implementa, debe hacerse de una manera más sensata (por ejemplo, un trabajo de verificación de estilo que se ejecuta en el servidor de CI en confirmaciones) .

Respuestas (2)

No necesita otro desarrollador, necesita un Director de control de calidad que debe trabajar con el Gerente de proyecto para determinar los estándares que se utilizarán en el proyecto y los procesos por los que debe pasar todo el desarrollo. De esa manera, se convierte menos en una situación de 'tú contra mí' y más en una situación de 'el proyecto necesita que esto suceda'.

El PM también necesita enfatizar la importancia de la comunicación; toda la comunicación importante con el cliente debe realizarse a través del PM en sus reuniones regulares (y registradas en actas). Se espera que los desarrolladores desarrollen, no analicen el caso comercial, por lo que no debería tener que hablar con un cliente regularmente (tal vez hable con un cliente una vez cada dos semanas).

El desarrollo del proyecto debe manejarse en sprints, y cada lanzamiento de sprint debe revisarse. Ahí es donde tendrá la oportunidad de mencionar que las revisiones de código no son oportunas ni efectivas. Su personal de seguridad (o al menos el control de calidad) también debería ver las revisiones y los comentarios del código, y debería poder evitar que se comprometa el trabajo sin que los comentarios de los compañeros se aborden en todos los lados. Las revisiones de código también deben incluir revisiones de estilo, para garantizar que se cumplan los estándares de codificación del proyecto; cualquiera puede desactivar un verificador de estilo, eso está bien, pero es menos probable que su código pase una prueba de Lint y, por lo tanto, no debería terminar en el repositorio.

En breve; está haciendo de este su problema, cuando en realidad es un problema de organización del proyecto que está tratando de solucionar. Consiga a las personas adecuadas en su lugar, y seguirán los procesos correctos.

El desarrollo de proyectos debe manejarse en sprints , no si no son en proceso Agile, aunque lo recomendamos mucho, no es una obligación. Un buen ciclo V antiguo bien administrado todavía funciona hoy en día. Estoy de acuerdo con el hecho de que es un problema de la organización, es posible que no se necesite al director de control de calidad, podrían elegir ellos mismos el estándar y hacer que el gerente del proyecto lo haga cumplir incluso sobre el senior.
Sospecho que esta es una empresa más pequeña donde los desarrolladores también son los analistas comerciales y los propietarios del producto.
@UK-AL: Muy posiblemente, y eso siempre da miedo...

Creo que esto es más una cuestión de dinámica de equipo, lo más importante es controlar el ego . Es muy fácil para los programadores pisar los dedos de los pies unos a otros, ya sea que la persona sea mayor que usted o no. En lugar de insinuar que es tonto no escribir pruebas unitarias, muéstrele las ventajas de escribirlas en su entorno. En la programación es mucho lo que no sé lo que no sé. Por ejemplo, si no he estado expuesto a OOP, lo más probable es que lo descarte como 'innecesariamente complicado', aunque sea muy importante. El libro Extreme Ownership profundiza en la dinámica del equipo y es útil para cualquier persona que trabaje en un equipo.