Soy el gerente de un pequeño equipo de desarrolladores (5 ingenieros, incluyéndome a mí).
Hace unos meses, por sugerencia de otro colega, introdujimos el formato de código obligatorio en la base del código, para nuestro proyecto principal. Nuestro proyecto está en Python y la herramienta de formato es black
(no relevante, supongo).
Considero valioso tener la misma 'apariencia' del código en todos los archivos del proyecto, para mí es parte del control de calidad de todo el proyecto. Las solicitudes de combinación de código deben formatearse con la herramienta; de lo contrario, no se pueden agregar al software.
Desde entonces, un colega siempre se queja y expresa su desacuerdo sobre esta decisión cada vez que se presenta la ocasión.
¿Cómo lidiarías con tal situación?
¿Qué respondería a "el formato de código es una mierda total" , "son como los colores, a algunas personas les gusta el rojo, a otras azul, eso es todo" , "reduce mi libertad" , "hace que el código sea más complicado de leer sin valor agregado" etc. ?
Sinceramente, mi reacción sería la siguiente:
Bob, agradezco los comentarios, pero como equipo hemos decidido que usaremos Black como nuestra herramienta de formato de código obligatoria, y esa decisión es definitiva. Entiendo que no es su preferencia personal, pero me temo que tendrá que aprender a trabajar con él.
¿Pero si quisiera entablar una discusión?
"formatear el código es totalmente una mierda"
Esa no es una retroalimentación muy constructiva, ¿podría ser más específico?
"son como los colores, a algunas personas les gusta el rojo, a otras el azul, eso es todo"
Por supuesto, pero la estandarización de esos "colores" es muy útil, ¡y teníamos que elegir uno!
"reduce mi libertad"
También lo es aceptar escribir código en el mismo idioma y versión de ese idioma, pero ¿te imaginas el caos si no lo hiciéramos?
"hace que el código sea más complicado de leer sin valor añadido"
Eso no es cierto. Después de un tiempo de leer el código en este formato, no será más complicado de leer; de hecho, será más simple de leer (valor agregado allí) porque solo tendrá que aprender un estilo en todo el proyecto. También significa que las diferencias son mucho más legibles para los relaciones públicas, podemos incorporar a otros desarrolladores y ponerlos al día más rápido, y los desarrolladores no se preocuparán por qué tipo de formato podría verse un poco mejor en una situación determinada.
Para ser claros, si sus comentarios fueron constructivos , diga sobre el formato "No creo que Black sea útil para nosotros por las razones x, y y z, ya que gran parte de nuestro código sigue un estilo de codificación bc que Black maneja mal, ha considerado (otra herramienta) en su lugar", entonces ese es un escenario muy diferente . Ahí es cuando debe hacer todo lo posible para participar en una discusión para validar sus preocupaciones y trabajar con él para abordarlas.
but I'm afraid that if you want to stay in this team
En mi cabeza podría estar pensando eso, pero definitivamente no lo diría de esa manera, al menos al principio. Este tipo parece alguien que podría escalar rápidamente y esa redacción probablemente lo hará escalar más rápido. Usaría algo más como, "Entiendo que no es su preferencia personal, pero tuve que hacer una elección para el equipo y esto es todo". Creo que el objetivo general es ayudar a todos a comprender los beneficios y unirse al redil. Si continúa rebelándose, entonces sube el idioma.but as a team we've decided that we're using Black as our mandatory code formatting tool
, el OP nunca dijo que fuera una decisión del equipo.¿Cómo lidiarías con tal situación?
Después de consolarlo amablemente, lo cual ya has hecho, es hora de decirles con firmeza que se encarguen de eso . No es el código de un individuo, sino el de la empresa. Como gerente, necesita que el código sea lo más mantenible posible para su equipo y las nuevas incorporaciones que haga al equipo en el futuro.
"el formato de código es totalmente b *** $ hit"
Como codificador, en las empresas en las que he contribuido, se aplican algunos estándares de formato. Como desarrollador principal, en realidad esperaría que fueran fanáticos.
"son como los colores, a algunas personas les gusta el rojo, a otras el azul, eso es todo"
Como su gerente, me gusta el rojo, trátelo.
"reduce mi libertad"
El formato del código no afecta la libertad de crear una solución elegante. Llamo a BS en esto, y tú también deberías hacerlo.
"hace que el código sea más complicado de leer sin valor añadido"
Ummmm nop. Esto realmente me hace preguntarme si su desarrollador líder es realmente un líder...
Para reiterar: ha establecido un estándar, como gerente o como equipo, no importa. El líder necesita unirse o quizás seguir adelante .
Intentaría convencerlo de los efectos positivos del formato de código uniforme. Las diferencias de Git se vuelven mucho más fáciles de digerir cuando commit n y commit n+1 tienen el mismo formato. La capacidad de mantenimiento se vuelve más fácil, asumiendo que el formateador aplica buenas prácticas. Al final, el desarrollo de software corporativo es un deporte de equipo.
Si su formateador de código permite definir reglas, pregúntele si hay ciertas reglas que no le gustan y considere discutirlas con su equipo.
¿Cómo lidiarías con tal situación?
Intentaría entender el punto de vista de los desarrolladores recalcitrantes. Pueden tener buenos puntos para hacer que estoy ignorando.
Implementamos el formateo automático en nuestro código base hace algunos años y causó un sinfín de problemas, en parte debido a la forma en que se introdujo, pero principalmente debido a la forma en que impactó nuestro flujo de trabajo. Causó tanto trabajo adicional para solucionar los conflictos de fusión que, al final, desactivamos muchos aspectos del formateo automático, por lo que solo corrigió automáticamente las cosas que no causaron más problemas de los que resolvieron. También revisamos todos los escenarios e incluimos solo aquellos en los que todos estuvieron de acuerdo.
Un problema con el formateo automático es que no solo 'estandariza' el mal formato, sino que también 'estandariza' el buen formato.
Un formateador automático no puede notar la diferencia entre un espacio doble agregado accidentalmente y un espacio doble agregado para hacer que un elemento en una línea se alinee con un elemento de otra línea. Esta asociación visual puede hacer que sea mucho más fácil leer el código, ya que puede ser mucho más obvio que dos cosas en dos líneas están relacionadas.
Si va a implementar el formateo automático, necesita que todo el equipo lo compre.
Debe aplicar el formato globalmente, en una rama, y solo fusionarse en esa rama una vez que todos hayan tenido la oportunidad de revisar el efecto que tiene en su flujo de trabajo, plantear sus objeciones y acordar un camino a seguir.
La mayoría de la gente compraría la eliminación automática de espacios en blanco de los extremos de la línea, pocas personas querrían que sus cuidadosas divisiones manuales de línea para facilitar la lectura se vuelvan a dividir sin pensar en el lío incoherente que producen muchas herramientas de formato automático.
Mi sospecha es que este desarrollador está molesto porque se enorgullece de su trabajo, ha dedicado mucho tiempo a hacer que su código sea lo más legible y fácil de mantener posible, y este reformateo automático ha destruido todo su formato cuidadosamente elaborado.
A pesar de que la sintaxis de Python ya impone una serie de requisitos de formato, aún deja mucha libertad para el desarrollador individual.
En breve. Escuche las objeciones de sus desarrolladores, es posible que pueda mejorar la base de código para todos. Como dice PEP 8, la Guía de estilo para el código de Python
Una consistencia tonta es el duende de las mentes pequeñas
Está justo ahí en la parte superior de la guía por una muy buena razón.
Teniendo en cuenta el comentario de jrh , ocasionalmente se ríen de las personas que describen la programación como "más un arte que una ciencia", pero no estoy de acuerdo cuando se trata de los aspectos de habilidades blandas de la codificación. Los programas no solo están hablando con el compilador/intérprete, están hablando con los programadores que pueden tener que corregir, mejorar o mantener ese código en el futuro.
Para abordar el comentario de VGR , no creo que este sea un buen lugar para criticar al negro . No he usado esta herramienta, pero al leer la descripción puedo ver cosas buenas en su mayoría, especialmente para el mantenimiento a largo plazo y la difabilidad (la ruina de las fusiones complejas).
Sin embargo, eso no ayuda si todo el equipo no compra el uso de un formato automático tan estricto e intransigente.
Si tuviera una panadería, es posible que desee que mis panaderos usen un tamaño estándar de pan. Facilita la compra de bolsas para el pan, por ejemplo. Puedo tener un precio constante en los panes que hago.
Mis panaderos pueden sentir que esto restringe su creatividad. A algunos les puede gustar hacer hogazas de pan muy pequeñas o muy altas.
Otros panaderos pueden sentir que prefieren un pan mucho más grande.
Esto no significa que no haya razones válidas para establecer un estándar.
Sin embargo, algunos panaderos pueden señalar que el tamaño de pan que he solicitado no cabe en el horno. Sería un dueño de panadería muy sensato si escuchara a esos panaderos.
El miembro de su equipo ya cumple con una amplia gama de estándares que pueden restringir su creatividad y contradecir sus preferencias. Esto viene con el trabajo en equipo. Esto no significa que no deba establecer estándares, pero probablemente sea prudente permitir y fomentar la retroalimentación constructiva y no disruptiva.
"formatear el código es totalmente una mierda"
Incluso si esto tuviera un punto (y no lo tiene), declaraciones en blanco y negro como esta a menudo insinúan una comprensión muy inmadura de:
Necesitamos opiniones profesionales y constructivas, no axiomas fanáticos.
"son como los colores, a algunas personas les gusta el rojo, a otras azul eso es todo" / "reduce mi libertad"
No, no es como los colores. Se trata de la legibilidad y de los estándares compartidos .
Las personas que hacen esta queja van por el camino egoísta y no se dan cuenta del valor agregado de los estándares comunes al tratar con el código y, sobre todo, comprender el código de otras personas y hacer que ellos entiendan el suyo.
El hecho de que todos tengan sus propias preferencias, por el contrario, es exactamente la razón por la que debe tener estándares de codificación, desde comentarios hasta nombres y formatos.
Sacrificar sus "preferencias personales" debe hacerse a menudo por un bien mayor, el buen trabajo en equipo se trata de compromiso para obtener el mejor resultado.
Imagina si:
Se vuelve confuso y agotador porque tu cerebro tiene que adaptarse a diferentes estilos y cambiar constantemente entre ellos . Con un estándar compartido, solo tiene que adaptarse una vez . En proyectos compartidos, incluso si son de código abierto , se aplican estándares por muy buenas razones.
¿Y si editan el mismo archivo/clase? ¿Terminará con diferentes estilos de codificación?
"hace que el código sea más complicado de leer sin valor añadido"
Creo que lo que dije anteriormente es suficiente como respuesta a esta completa tontería.
Editar: mire también la respuesta de @nitarshs , brinda otro ángulo interesante desde el punto de vista de la psicología grupal que encontré interesante.
¿Quizás la causa raíz del problema no está relacionada con el formato de código, sino con algo más ?
En mi experiencia, esta situación muestra claramente que el individuo disidente no se ha expresado de manera madura y racional, independientemente de si tiene razón o no.
No estoy seguro de cuánto tiempo ha estado la persona en cuestión contigo y con el equipo, pero realmente creo que deberías conocer mejor la disposición de la persona para saber cómo manejar situaciones como esta.
Me he dado cuenta de que incluso las personas racionales se comportan de forma irracional cuando no están contentas con algo. Incluso ellos podrían no ser conscientes de la verdadera causa de sus irritaciones.
O simplemente es posible que la persona sea inmadura por naturaleza, en cuyo caso puede elegir ignorarla siempre que haga su parte del trabajo correctamente.
Tal vez llevarlos a tomar algo o cenar y darles un poco de cuidado y atención. Debes abrirte a ellos y dejar que ellos se abran a ti. Intenta conocer mejor a tus compañeros de equipo y haz que te conozcan mejor a ti y al resto del equipo.
Esto no se trata de formato de código en absoluto. Se trata de la peor forma de microgestión posible. Cada vez que se realiza una confirmación, un estúpido microadministrador sin sentido cambia el código de una manera estúpida de microgestión. Y este desarrollador está cabreado. (Parece que algunas personas no entendieron esto; cuando digo "microadministrador" me refiero a la herramienta de formato de código).
Su ganancia, y la ganancia de sus equipos, de todo esto es indistinguible de cero. Tu pérdida es que tuviste discusiones, perdiste tu tiempo y cabreaste a alguien que hasta ahora ha sido un desarrollador decente. En el mejor de los casos, perderá su apoyo y compromiso. En el peor de los casos, pierde por completo a un miembro valioso del equipo.
Simplemente apague la herramienta y listo. Ha causado y causará más daño de lo que vale. Solo decida: ¿Quiere demostrar que tiene el xxxx más grande para saludar, o quiere un equipo que esté feliz y haga el trabajo?
No se trata de formatear el código. Se trata de ser un gerente bueno y eficaz y hacer cumplir una decisión que ha tomado sobre cómo funciona el equipo, lo que, como ha dicho, se considera y es probable que beneficie al equipo en general.
Creo que el problema se ilustra mejor eliminando los detalles de su pregunta:
Soy el gerente de un pequeño equipo de desarrolladores.
-- Tomé una decisión sobre un detalle de cómo trabajamos --
Desde entonces, un colega siempre se queja y expresa su desacuerdo sobre esta decisión.
Es un problema de personas, la parte difícil de ser gerente. Es tentador tratar de abordar el contenido de las quejas porque son un territorio familiar y cómodo y se pueden argumentar de manera más o menos objetiva.
Pero resista esa tentación, porque lo que realmente tiene que hacer es decirle a este miembro del equipo, de manera directa y sin ambigüedades, que debe aceptar la decisión y dejar de discutirla.
Es personal, es incómodo, pero hacerlo es parte del trabajo y es lo que el resto del equipo quiere y espera que hagas, te lo aseguro.
Hace unos meses, por sugerencia de otro colega, introdujimos el formato de código obligatorio en la base de código
Desde entonces, un colega siempre se queja y expresa su desacuerdo sobre esta decisión.
El problema central no se relaciona con la decisión en sí, sino con el hecho de que la opinión de este colega no se tuvo en cuenta al tomar una decisión que los afecta en gran medida. ¿Se discutió esto adecuadamente, con todos los pros y los contras evaluados cuidadosamente (eso también se aplica a la parte automática de la aplicación), o simplemente tomó la decisión unilateralmente "porque personalmente me gusta"? La práctica muestra que es mucho más probable que una persona defienda una decisión grupal si siente que su opinión fue escuchada y tenida en cuenta, incluso si al final no llegó a la decisión.
Siendo realistas, la gente deja los equipos. El uso de estilizadores como estos hace que sea más fácil para otra persona retomar el proyecto en el futuro y comprender el contenido real en lugar de entender el formato del mismo.
Trate de responder con un positivo de usarlos. Por ejemplo, "los formateadores de código son bs", "bueno, puede ser más fácil encontrar errores simples en el código cuando sabes cómo debe verse", etc. Aún mejor si pueden ser relevantes para tu proyecto/equipo directamente.
Si hubiera sido más de un miembro del equipo, habría sugerido realizar una reunión para explicar por qué se usa esta herramienta de formato, el beneficio que brinda y por qué es tan importante que sus desarrolladores la usen. A la gente no le gusta el cambio cuando no entienden las razones detrás de él.
Lejos de ser una respuesta completa, pero hay un punto aquí que me llama la atención. El formato de código en sus confirmaciones de ninguna manera necesita ser el mismo formato de código que se usa en el IDE de un desarrollador mientras trabajan en una copia local del repositorio. No sé si alguna vez trabajé en un proyecto colaborativo en el que cada desarrollador no tuviera su código formateado tal como lo querían. Aplicar el formato al confirmar es bastante fácil de configurar a través de git hooks .
Encuentro una gran diferencia entre insistir en un código bien formateado y la imposición de un formateador automático en el registro.
En mi trabajo, tenemos una especie de mandato de formato de código, que se carga en el IDE, pero cuando sale realmente mal, realmente hay algo que podemos hacer al respecto porque nada intentará volver a aplicarlo en el momento de la confirmación .
Estoy dispuesto a creer que tiene un problema real de un desarrollador principal que hace cosas deliberadamente para que sean más difíciles de retomar, pero es muy posible que lo que realmente esté sucediendo aquí sea que el formateador automático está estropeando bloques formateados a mano donde el el lenguaje se ha convertido en otra cosa y, por lo tanto, necesita un formato diferente que coincida con la estructura que realmente tiene en lugar de lo que el analizador cree que tiene.
Estos casos no se distinguen de su publicación. Dependiendo de lo que esté sucediendo, es posible que pueda o no hablar con sus otros desarrolladores y averiguar cuál es. Sin embargo, tenga cuidado con la actitud de "Creo que es mejor porque el jefe lo cree"; no se te hablará, pero lo he visto caer así antes.
De hecho, es posible que todo el mundo tenga un problema con eso, y todos dejen que este tipo sea el portavoz. Tal vez puedas averiguarlo.
Pero al hacer su diligencia debida, si descubre que está en un viaje de poder, es hora de deshacerse de él.
Tienes una conversación franca sobre lo que significa la palabra "profesionalismo".
Su "desarrollador principal" está actuando como un niño que hace pucheros. Él/ella puede tener las habilidades técnicas de un líder, pero obviamente carece de las habilidades profesionales de un líder. Se trata de algo más que escribir código: las habilidades técnicas son un requisito previo necesario pero no suficiente para ese puesto. Ser líder significa, al menos para mí, comprender que no se trata de ti . Eso no significa que no negocies y abogues por ti mismo, significa que no te enfades por las cosas que son las mejores prácticas de la industria, incluso si en privado piensas que son una mierda (mirándote, JIRA ).
Comenzaría diciendo que él/ella necesita superarlo diplomáticamente, luego pasar a decirlo sin diplomacia, luego pasar a un PIP. Ya has desperdiciado demasiado de tu valioso tiempo en la rabieta de otra persona.
Un comentarista señala correctamente que la autoridad del líder técnico puede haber sido socavada injustamente, lo que provocó descontento. Aunque ciertamente estoy de acuerdo en que ese podría ser el caso, quejarse de la herramienta en público es una respuesta poco profesional e inaceptable a la situación . Ser socavado debe abordarse directamente y en privado .
En última instancia, como han dicho otras respuestas, como gerente, tiene la autoridad para simplemente hacer cumplir un estilo de código, y si a alguien no le gusta, puede renunciar. Sin embargo, esto probablemente no sea bueno para la moral o el compromiso, y un empleado que a regañadientes fuerza su código redondo a un estilo cuadrado probablemente no sea feliz ni productivo.
Con ese fin, su mejor curso de acción probablemente sería convencerlos de que tener un estilo consistente en una base de código es beneficioso. Algunas respuestas ya han presentado algunos puntos, pero hay artículos y, de hecho, libros completos que argumentan a favor. Tienen razón en que son como los colores: todos tienen un favorito, pero si cada desarrollador de UI que trabaja en un proyecto simplemente eligiera su color favorito para diseñar, el producto final no se vería nada bien.
Un par de buenos artículos que acabo de encontrar con una búsqueda rápida:
Asumiré que sus representaciones de los comentarios de su desarrollador principal son precisas.
Estos no son los comentarios de un desarrollador principal competente. Lo digo como un software experimentado y gerente de ingenieros de software.
La retroalimentación es poco constructiva y altamente imprecisa. Un desarrollador líder que no comprende el valor de los estándares de formato es un desarrollador líder que no comprende la dinámica de la ingeniería colaborativa.
Es muy posible que tengan preocupaciones legítimas y procesables y comenzaría desde esta perspectiva. Eres su gerente; ayudarlos a hacer bien su trabajo.
Primero, llámelos en privado por sus malos comentarios. Están haciendo mal su trabajo, si solo están molestos.
A continuación, demuestre que está abierto a comentarios prácticos sobre cómo mejorar la implementación de los estándares de codificación si su desarrollador tiene alguno. Si necesitan tiempo para encontrar la mejor manera de articular esto, dáselo.
Si no tienen nada específico, entonces dígales que sigan el programa y dejen de quejarse. No es solo improductivo. Es perjudicial para el equipo.
También debe comenzar a prestar atención a su desempeño como líder en el equipo en general. ¿Están realmente brindando liderazgo a los otros miembros del equipo o son simplemente la persona que ha estado presente por más tiempo? Personas como esta realmente pueden socavar la productividad de un equipo si solo actúan como guardianes del crecimiento (que es lo que esta persona está haciendo en este momento).
Desde un punto de vista pragmático, me encanta el formato de código simplemente porque hace que diferenciar código sea mucho más fácil. También facilitará mucho los envíos, ya que si todos usan el mismo formateador de código, entonces, en principio, agregar un cambio tonto e intrascendente a un archivo no hará que git piense que el código ha cambiado.
Personalmente, no estoy loco por el aspecto del código, pero los beneficios descritos anteriormente me ayudan a pasar por alto esto.
Muchas otras respuestas discuten si el formato de código vale la pena o no. Eso es completamente irrelevante para esta pregunta.
Se trata de comunicación, no de convencerlo de que el formato de código estandarizado es excelente. Da un paso atrás. Lo que necesitas comunicar es:
Esa información adicional les permitirá ver las cosas desde su punto de vista, lo que a menudo es suficiente para apaciguarlos. La segunda parte (medir el éxito) es necesaria para demostrar que realmente piensas en ello y hace que sea más fácil para ellos confiar en ti. También les permite encontrar alternativas o modificaciones a la póliza que satisfagan sus solicitudes y las de ellos.
Si eso falla, hay 2 formas principales de tratar con los empleados que no están de acuerdo con un cambio de política:
*No se trata de una lista de beneficios, se trata de su motivación para implementar el cambio. Tal vez desee empoderar al equipo y por eso hizo que el equipo decidiera sobre los estándares y el formato del código. Tal vez acabas de implementar una sugerencia de arriba. Tal vez esté planeando múltiples cambios de automatización y/o análisis en el futuro que se beneficiarán del formato estandarizado. Tal vez desee utilizar un formato estandarizado para vender mejor su equipo a los superiores. Tal vez impulsó el formato estandarizado simplemente porque le gusta.
el formato de código es una mierda
Esto se puede refutar fácilmente tomando algún código de ejemplo (desconocido para el desarrollador), eliminando todas las líneas nuevas, tabulaciones y reduciendo múltiples espacios a espacios únicos, y pidiéndole al empleado que le diga qué logra el código.
son como los colores, a algunas personas les gusta el rojo, a otras el azul, eso es todo
Sí. Este es el caso de casi cualquier disputa de programación. Tabulaciones vs espacios, corchetes estilo C o corchetes egipcios, ... Pero la respuesta es siempre la misma: a algunas personas les gusta conducir por la izquierda, a otras les gusta conducir por la derecha. Cualquiera de los dos está bien, pero permitir ambos al mismo tiempo conduce a la locura.
O, si realmente quieres usar su analogía en su contra: pero usar azul y rojo juntos da púrpura, lo que significa que nadie obtiene lo que quiere.
Se ha tomado una decisión ejecutiva para elegir este formato. Su empleado no tiene la autoridad para anular esa discusión. Fin de la historia. No seguiría con esta línea de preguntas.
Siempre estoy abierto a comentarios constructivos, pero el argumento de su empleado es de cabeza dura, no es constructivo. No dejes que lo conviertan en una competencia de ser el más terco. Incluso si gana, le está indicando a su personal que ser obstinado es una forma aceptable de expresar su desacuerdo.
Eso no significa que no puedas ayudarlo si es simplemente una cuestión de inexperiencia. Tal vez pueda encontrar un formateador automático para que pueda escribir en su propio formato y convertirlo.
Le dije a las personas que administré que no me importa la legibilidad de su código antes de que lo registren. No espero que respeten completamente la guía de estilo en cada segundo. Siempre que el código se limpie antes de que se fusione con la rama, es aceptable. A menudo empiezo con un código rápido y sucio y solo lo limpio una vez que lo tengo funcionando. Algunas personas trabajan de esta manera, y está bien, siempre y cuando no se salten la limpieza requerida al final.
reduce mi libertad
Nadie tiene la libertad de hacer lo que quiera. Tener que pagar a los empleados también reduce la libertad de la empresa.
El esfuerzo requerido para formatear el código desde el principio dará sus frutos cuando alguien más tenga que leer su código.
Dados los comentarios de este empleado, sospecho que es probable que se haya quejado del formato de código o las convenciones de nomenclatura de otras personas. Señale que otros sentirán lo mismo acerca de su formateo y denominación. La uniformidad significa que todos pueden leer el código de todos, sin importar si es la preferencia personal de todos.
hace que el código sea más complicado de leer sin valor añadido
Ahora le resulta más difícil leer porque no está acostumbrado. Cuanto más se resista al cambio, más luchará con él. La decisión ha sido tomada, está ocurriendo, fin de la historia.
Me centraría en el punto de que el empleado ha sido informado del nuevo formato y se espera que ahora lo respete. Si no cumplen (o no hacen un esfuerzo genuino), cualquier retraso causado por el rechazo de sus solicitudes de extracción recae directamente sobre sus hombros.
Las solicitudes de combinación de código deben formatearse con la herramienta; de lo contrario, no se pueden agregar al software.
Cuando dice "no se puede", ¿quiere decir que no está permitido o que no es posible (por ejemplo, un revisor siempre rechazará la solicitud)?
Si es lo último, ese es el palo que necesitas. Si el desarrollador no sigue las reglas de formato, sus solicitudes no se aceptan y los retrasos que esto genere son su responsabilidad, lo que resultará en una mala revisión de rendimiento.
Si es lo primero, entonces realmente estás confiando en que todos participen deliberadamente en el sistema, que solo funciona si todos lo hacen. Actualmente estás tratando con alguien que se resiste. Es posible que se resista específicamente porque sabe que no lo impones, sino que solo lo pides.
Eres un gerente, así que tratemos de manejarlo (y esto), no solo lo regañes o lo veas como un problema:
"John, mi responsabilidad es hacer que esto sea lo más fácil posible para todos y para los futuros empleados, no solo para algunas de las personas que están aquí hoy".
"Cuando la mayoría de los desarrolladores revisan el código, es más rápido si pueden dar algunas cosas por sentadas, como la forma en que se realizará el código y la forma en que algunas cosas se estandarizarán. Si alguna vez es necesario que alguien analice el código [ externo ¿auditoría de código? ¿Responsabilidad? ¿Diligencia debida?] , es mejor si está estandarizado. Tienes razón en que a algunos les gusta el azul y a otros el rojo, y fuera del trabajo, tú y yo podemos codificar de la manera que queramos. Pero mientras Al escribir código que un equipo debe mantener y que los futuros ingenieros deben comprender de manera rápida y precisa, creo que la estandarización ayudará, y yo dirijo el equipo, no tú, ni Bob, ni Alice, así que tengo que hacer ese tipo de llamadas si siento la necesidad, y lo hago".
"Cuando te encuentres gestionando proyectos como este en el futuro, puedes hacer la llamada que quieras y esperar que los demás sigan tus instrucciones. Pero espero que cuando lo hagas, y eres bueno, así que probablemente lo harás [un cumplido nunca está de más si es cierto, si no lo dejas fuera] , que lo reconsiderarás y verás los beneficios que brinda, incluso si impone una disciplina que no le ves ningún sentido, en este momento".
"Creo que ahorrará una pequeña cantidad de tiempo en el trabajo diario, cuando se rehace el código, creo que reducirá los errores y creo que es profesional. Me gustaría que respetes eso incluso si no estás de acuerdo con él."
El espacio en blanco es en realidad parte de la python
sintaxis. La legibilidad ya está diseñada en el lenguaje. De hecho, Python tiene sus propias recomendaciones sobre cómo formatear su código. Mejores prácticas, convenciones de nomenclatura, etc. se llama PEP (más específicamente PEP8). ¡Empieza por ahí! ¡Conocer a PEP es algo que pueden agregar a su currículum!
¿Cómo lidiarías con tal situación?
Creo que los otros cuatro desarrolladores están del lado correcto de este argumento y usted puede estar equivocado aquí. Acepte honestamente los comentarios de sus empleados y tómelos en serio. Ponte en sus zapatos. Si el cheque de pago se basa en el rendimiento y esta herramienta reduce eso, básicamente les está quitando dinero en su mente .
Creo que un buen próximo paso es decidir si continuar o no usando la herramienta. Si lo considera beneficioso, explique por qué . Por ejemplo, si el usuario final/cliente le brinda mejores reseñas o proyectos futuros porque el código es hermoso, ¡dígaselo a sus empleados! ¡Eso significa más dinero en su bolsillo!
Recuerde, sus KPI para el control de calidad pueden no ser lo que está en la descripción del trabajo para los miembros de su equipo. Haga que su equipo se involucre en sus proyectos. Que sea algo de lo que estén orgullosos. Cuando un fuerte sentido de propiedad es una norma en el lugar de trabajo, la garantía de calidad es algo natural.
Vale la pena considerar dos puntos adicionales.
Mi regla general personal cuando dirijo un equipo es insistir en reglas estrictas solo cuando el código de alguien se ve realmente feo... y si eso sucediera, podríamos estar viendo un problema más profundo que solo el formato del código. Un problema que parte de Recursos Humanos y de contratar a la persona equivocada. De lo contrario, si el código se ve más o menos claro y organizado, y su arquitectura/diseño es bueno, los detalles sobre el formato a menudo causan más problemas de los que valen la pena.
La consistencia es un argumento débil. Para una persona que no está de acuerdo con una regla de formato en particular, puede sentir que hay un problema con la microgestión o con un arquitecto hambriento de poder. El formato casi nunca importa: "son como los colores, a algunas personas les gusta el rojo, a otras el azul".
El beneficio real de las reglas de formato automatizadas es que los programadores no pierden el tiempo discutiendo cosas que no importan. Se dedica demasiado tiempo a las revisiones de código en los comentarios sobre la sangría. Se debería concentrar mucho más poder mental en problemas reales con el código.
Presente al desarrollador el término Bikeshedding . Deje en claro que considera que sus comentarios son una gran contribución al diseño de cobertizos para bicicletas. Pierde el tiempo de los demás. Es un mal jugador de equipo. Se utilizará en su contra durante la evaluación.
Además de las otras respuestas que ya cubrieron The Talk bastante bien, una metodología para introducir formato en su proceso, le guste o no a Bob:
Realice revisiones de código utilizando el principio de los cuatro ojos en todas y cada una de las solicitudes de fusión. Solo debe modificarse master
con la solicitud de fusión aceptada, de ninguna otra manera. Todas las solicitudes de fusión deben estar sujetas a control de calidad, es decir, un miembro del equipo diferente debe revisar el código. Aplique el formato y deje que los MR de Bob se rechacen debido a un formato de código incorrecto.
Si Bob se niega a cumplir, sus solicitudes de fusión quedarán atrapadas en el limbo. Cuando se le pregunta, "¿por qué no se ha realizado la característica XY, a pesar de que la fecha límite ya pasó?", Bob puede responder, "esto se ha hecho durante un tiempo, pero fue rechazado por el colega Y". Se puede argumentar que entonces no se hace. Para eso está el control de calidad. Los compañeros de trabajo deben rechazar tales solicitudes y reasignar a Bob, entonces es el trabajo de Bob lidiar con eso.
Hay varios grados de agresividad si se actúa de esta manera, por lo que si desea que el tono se mantenga lo más amigable posible, tenga cuidado con la forma en que lo implementa. Sin embargo, debe hacer revisiones de código de todos modos.
En una nota personal, las supuestas declaraciones de Bob sobre la utilidad del formato me inclinan a pensar que posiblemente no son adecuados para un papel principal o simplemente carecen de educación específica en ciertas áreas. Tal vez conozcan el código base por completo, pero debido a la falta de mejores prácticas ayudaron a convertirlo en un desastre gigante y solo ellos conocen un camino a través del caos. Este tipo de cosas es peligrosa, porque puede volverse muy dependiente de una sola persona a medida que su base de código se vuelve cada vez menos mantenible.
Creo que en este caso sería posible agregar un git hook que cambie el formato del código al deseado por el equipo al confirmar, y otro (usado solo por ellos) que cambie el formato del código al deseado por el miembro del equipo en la actualización.
Si el miembro del equipo está tan convencido de esto, también puede ser una buena ocasión para aprender más sobre el formateador de código y las herramientas de git, todos los conocimientos que pueden ser útiles más adelante.
Aquí hay muchas respuestas que se centran en buenos argumentos técnicos. Para resumir: el equipo tomó una decisión acertada sobre cómo proceder, y un individuo rechaza la decisión del equipo y las instrucciones del gerente.
La conversación que tendría es más parecida a: ¿acabas de llamar "mierda" a mis instrucciones y la decisión del equipo? ¿De verdad te quejaste de que cobrar por trabajar "restringe tu libertad"? Le sugiero encarecidamente que registre su código con un formato agradable ahora mismo, y organizaré una reunión con Recursos Humanos para hablar sobre el respeto hacia su empleador, gerente y equipo.
Mónica Celio
Alexéi Levenkov
cabina de marca
disco
t sar
Thorbjorn Ravn Andersen
njzk2