Soy un desarrollador con solo un par de años de experiencia, trabajo en una pequeña empresa de ocho desarrolladores, en un proyecto Java. Nuestro líder de equipo, también uno de los gerentes, es mayor y muy productivo, y dice que tiene unos quince años de experiencia en Java.
El mes pasado, mientras discutíamos algunos módulos de código fuente que escribió, noté en el código fuente que una de las clases anulaba el método equals()
, pero no el método hashCode()
; me refiero a los dos métodos declarados en la clase muy básica de Java Object
. Cuando le señalé esto al líder del equipo, de una manera muy tranquila y cortés, negó que una clase deba anular ambos métodos. El tema terminaría ahí, pero me pareció inmoral dejar que tal falla (error) dañara el producto más tarde.
Unos días después, me acerqué a él en persona y en privado y tranquilamente, sin faltarle el respeto, le expliqué el problema y usé referencias externas (como el libro de Joshua Bloch 'Effective Java'). Bueno, dijo que lo miraría, y finalmente lo hizo. Sin embargo, desde entonces, me da la espalda.
Peor aún, recientemente vi un problema grave en el código fuente. Algunas clases que ha escrito implementan la Serializable
interfaz, pero el campo serialVersionUID
no es un número fijo (constante). En cambio, varía. Quiero decir, obtenemos un número diferente cada vez que ejecutamos la aplicación.
Nuevamente con la motivación de entregar un producto sensato, me gustaría comunicar esto adecuadamente. Pero no sé cómo hacerlo correctamente, sin que él lo tome como algo personal. Verá, mis enfoques anteriores fallaron. ¿Cómo podría hacerlo?
Cualquier consejo sería bienvenido.
Editar: El propósito de esta pregunta es encontrar formas efectivas, productivas, educadas, respetuosas y colaborativas para comunicar mejoras sobre problemas graves de código, y no cuestionar la autoridad o las decisiones de gestión, hechas por compañeros o incluso superiores.
Recordatorio general: siempre es mejor evitar un tono crítico o sermoneador. Conviértalo en una simple observación ("parece que se olvidó de implementar el código hash aquí") o conviértalo en una pregunta ("¿hay alguna razón por la que no implementó el código hash?"). Deje que su impulso de respuesta impulse la discusión de por qué es importante, si es necesario, pero comience asumiendo que conocen los principios y que la rareza fue un simple descuido/error tipográfico o tenía alguna razón racional detrás de ella que puede ser discutida en lugar de golpeado
La gente escucha mejor si los tratas con respeto.
Y recuerda, a veces el malentendido será tuyo. Te avergonzarás mucho menos de esta manera que si haces una declaración más absoluta o didáctica.
Tal vez mirar esto desde la otra perspectiva podría darle una mejor vista.
Soy líder de equipo y también gerente en una pequeña empresa de ocho desarrolladores. Tengo 15 años de experiencia programando en Java. Tengo una nueva persona en mi equipo que es mucho más joven que yo y solo tiene un par de años de experiencia.
El mes pasado, mientras discutíamos sobre algunos módulos de código fuente que escribí, comenzó a menospreciar mi código. A pesar de que tiene mucha menos experiencia que yo, afirmó haber visto errores en el código que funcionaba completamente bien. Después de una breve discusión, parecía que podía explicárselo.
Pero desafortunadamente él simplemente no puede dejar de lado ese asunto. Sigue socavando mi autoridad al exigir que hagamos todo según los libros de texto (como el libro 'Effective Java' de Joshua Bloch), incluso en aquellos casos en los que sería una pérdida de tiempo y no daría como resultado un beneficio tangible para nuestro producto. ¿Cómo puedo hacer que este desarrollador junior confíe en mi experiencia?
Es difícil como junior convencer a un senior para que cambie sus prácticas. Además, como gerente tiene que mantener un aura de superioridad para poder liderar con eficacia.
Entonces, cuando desee mejorar los estándares de calidad en su lugar de trabajo sin la autoridad para hacerlo, dé el ejemplo. Haz bien lo que otros hacen mal y demuestra que tu manera es mejor porque da como resultado un mejor producto en menos tiempo. Cuando señale errores en el código de otras personas, no lo haga minuciosamente en los archivos de código fuente. Hágalo presentando un defecto reproducible en el producto mismo y una forma de solucionarlo siguiendo las mejores prácticas.
Por cierto, una de las enfermedades profesionales más comunes para los programadores es un ego inflado. Es posible que ya tenga uno, pero usted también está comenzando a mostrar síntomas de las primeras etapas.
Una forma de mitigar este tipo de problema es "dar y recibir". He tenido éxito con esta estrategia muchas veces. Las personas están más dispuestas a sus sugerencias y críticas cuando es de dos vías. Así que hacía preguntas y consejos cuando tenía la oportunidad y me tomaba en serio sus respuestas. (Para ser honesto, a veces ya sabía la respuesta, pero nunca se sabe, también aprendí algunas cosas interesantes de esa manera).
Eventualmente, construyen una relación en la que se apoyan mutuamente y las cosas van mucho mejor en muchos sentidos. Y si tiene 15 años de experiencia, apuesto a que podría contarte muchas cosas que vale la pena conocer.
No me preocuparía por él y su frialdad, eso es bastante normal después de lo que pasó. Lo más probable es que haya tenido en cuenta tu opinión y esté siendo cuidadoso contigo, y probablemente lo hayas molestado un poco. Pero no es un concurso de popularidad, así que, a menos que pierda el control, dale algo de espacio. Manténgase amigable y comprensivo y él aceptará.
Sea cortés y profesional. Envíe un ticket para el error, en su ticket, detalle el problema y una posible solución, y deje una oportunidad para que lo contactemos para obtener más información o una explicación del problema. Dejarlo así. Cuando se examinen sus tickets, se le asignará a usted mismo para corregir el error que encontró o al desarrollador original. Con suerte, el otro desarrollador comprenderá y solucionará el problema, o se comunicará con usted para obtener más información. Si no sucede nada, entonces es un problema de gestión ahora.
Este método no llama a ningún desarrollador específico por errores y permite tener en cuenta el tiempo de reparación y posiblemente incluso incluirlo en un scrum (si lo hace).
Encontrar errores en el código de otras personas es una práctica común. Cada vez que un nuevo desarrollador ingresa a un proyecto, encuentra problemas. Asignar culpas no es importante. Simplemente haga un ticket y deje que los procesos de la empresa lo manejen. Los desarrolladores experimentados no deben ofenderse si otros encuentran problemas en su código. Y si lo hacen, probablemente no deberían ser desarrolladores.
Si bien creo que Keshlam tiene un buen punto. También es importante recordar que el código es propiedad del equipo, no de un individuo, por lo que evitaría el uso de "usted" cuando pregunte sobre posibles problemas con el código. En su lugar, podría preguntar
"Hola, noté que no hemos implementado el código hash aquí, ¿hay alguna razón para eso?"
Está abordando el problema potencial con el código, pero también preguntando sobre una posible razón del problema y dando al líder del equipo la oportunidad de convertirlo en una experiencia de aprendizaje para usted.
En lugar de hacer de esto una discusión de "Creo que deberías", que ahora está claro que no te llevará a ninguna parte, entonces conviértela en una discusión técnica.
Después de revisar el código encontré un problema y escribí la prueba X que lo demuestra.
(Puede escribir varios si es necesario). Luego, depende del equipo discutir cómo solucionarlo correctamente para que su prueba tenga éxito.
¿Tienes reuniones matutinas? o algunas otras reuniones de equipo donde puede mencionarlo informalmente.
Planteándolos a todos de una manera completamente impersonal: "Oh, molestia, encontré que este problema que esta clase ha implementado es igual a código hash, que realmente puede causar problemas si la clase se usa alguna vez en un mapa hash, ya que solo la identidad del objeto se usa como clave" y luego discutiendo cuando se puede arreglar.
No ha acusado a nadie de escribir un código incorrecto, ahora todos saben por qué esto es un problema, el código se soluciona.
Algunos consejos generales, aunque a partir de esta información, creo que los puntos 4 y 5 podrían ser los más apropiados:
Escriba un caso de prueba, describa el comportamiento que espera y muestre que el problema rompe la prueba.
(Oh chico, qué locuras descubrimos cuando empezamos a probar hashCode y equals sistemáticamente en nuestro proyecto...)
Escoge tus batallas
Como desarrolladores, puede ser difícil dejar pasar pequeños detalles. muy duro Y como desarrollador junior, a menudo aún no tiene la experiencia para distinguir entre problemas importantes y problemas menores. Parece que OP tiene razón en los dos ejemplos dados, PERO, ¿son problemas importantes? Para ser honesto, no lo parece a menos que esté causando que algo se rompa. No todos los olores a código son una colina para morir, especialmente...
Ande con cuidado con los diferenciales de superioridad
...cuando eres junior y ellos son senior. Por tres razones:
O posiblemente el desarrollador senior podría ser simplemente un idiota. O ha tenido un mal día. O algo mas.
que hacer la proxima vez
Súper buena pregunta. Me encanta aprender, pero cuando alguien me molesta, siento que debo renunciar. Recomiendo revisar el "estilo de codificación" de sus compañeros de trabajo e identificar sus fortalezas para que no sienta que todo el tiempo que pasó aprendiendo fue en vano. LUEGO identifique OPORTUNIDADES. De esa manera, muestra fortalezas en el futuro que están ayudando a la empresa y también trabajando en esas "oportunidades" que ya ha identificado. Dirijo equipos dando un cronograma de 30-60-90 días y luego elogio los ajustes en los que capitalizamos las "oportunidades". Funciona muy bien y es una forma justa de identificar líderes frente a personas que no son ni deberían ser líderes.
Arréglalo tú mismo. Cree una rama, arréglela, pruébela y, si necesita aprobación, simplemente revise el código. Te cambia la carga, pero eres tú quien piensa que es importante, por lo que la carga realmente recae sobre ti, aunque sea el código de otra persona.
felipe kendall
Tasos
Robar
Robar
pek
pek
Brandín
gnasher729
pek
Brandín
pek
pek
mosquito
jimm101
pek
pek
gnasher729
usuario8365
kevin cline
Walfrat