¿Cómo manejar el comportamiento poco profesional de los pasantes?

Soy desarrollador de software en una pequeña empresa (algunas decenas de empleados). Tenemos una pasantía de verano en marcha. Los becarios son estudiantes universitarios sin experiencia profesional y con conocimientos bastante básicos del lenguaje de programación. (Yo no participé en la elección de los pasantes). Algunos de los pasantes serán contratados en la empresa en el futuro en función de su desempeño.

Los pasantes están desarrollando una aplicación simple (no para la empresa, no es un código de producción) solo para obtener algunos principios básicos y conocerse antes de pasar a cosas más complejas.

Los ayudo en el desarrollo día a día (reuniones rápidas para resolver problemas que no pueden resolver solos) y reviso el código. Uno de los principales problemas que tienen es que no siguen las convenciones de nomenclatura y crean nombres cortos y deficientes para los métodos (como convert). Por supuesto, les expliqué que la denominación adecuada es muy importante, que no deberían tener miedo de usar nombres de métodos descriptivos más largos (como convertGallonsToMilliliters). Desafortunadamente, algunos de ellos (y sé quiénes, porque están usando el control de versiones) aparentemente decidieron divertirse (o burlarse de mí) y comenzaron a crear nombres de métodos tontos como convertToMillilitersBecauseIAmUsingSuchCleanCode: no una sola ocurrencia, sino algunas.

¿Cómo debo reaccionar ante esto? Sé que no es código de producción, pero dedico una buena cantidad de tiempo a revisar y hago lo mejor que puedo: ayudar a los pasantes a aprender y hacer que aprendan las mejores prácticas cuando se trata de código limpio.

¿Debo reaccionar por

  • riéndose ("Sí, es divertido, pero por favor quítalo")
  • solo pido educadamente que lo eliminen
  • diciendo que no me gusta cuando alguien me hace perder el tiempo y que debería tomarse la revisión del código más en serio

Sé que probablemente no sea gran cosa, pero es la primera vez que ayudo a los pasantes y me gustaría saber cómo manejar esa situación correctamente. Aún así, su desempeño durante la pasantía afectará sus posibilidades de ser contratado y situaciones como esta pueden jugar un papel más adelante. ¿O debería decirles algo similar para que estén más motivados para aprender algo?


EDITAR: Gracias por sus excelentes respuestas. Discutí el tema con mi gerente y hablé con los internos. Escribí el nombre del método en la pizarra y les pregunté si creían que era un buen nombre. También discutí con ellos brevemente el propósito de las revisiones de código nuevamente. Les dije que en proyectos reales tenemos empresas externas que realizan auditorías de revisión de código; este tipo de broma realmente podría causarles problemas más adelante. Así que en realidad es mejor que aprendan esta lección durante la pasantía.

Después de que hablamos, admitieron que no deberían cometer dicho código. También me dijeron que están agradecidos por el tiempo que dedico a revisar su código y por mi ayuda. Pero lo mejor es que la calidad de su trabajo realmente ha mejorado desde entonces. En realidad, el tipo que cometió la broma comenzó a entregar el mejor código del grupo; lo veo (y también a otros pasantes) tomando mis notas de la revisión del código mucho más en serio ahora.

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .
Una opción potencialmente hilarante: ejecute un ofuscador sobre su código y dígales que así son los nombres cortos de variables cuando revisan el código escrito hace 6 meses.
¿Alguna vez has visto el código del kernel de Linux? Eche un vistazo de cerca a esto , por ejemplo. Sorprendentemente, funciona, y funciona tan bien que se usa en todo el mundo. No conozco los detalles del proyecto en el que estaban trabajando, pero en términos generales, Camel Case no es el único estilo válido de denominación y puedo entender su frustración si intentabas imponer tus propias preferencias personales en el estilo de codificación sin dar explicaciones. por qué el estilo que está sugiriendo sería objetivamente mejor para su proyecto.
Como advertencia, esta es la razón por la que no obtiene nuevas contrataciones para crear código nuevo. Consigue que mantengan el código y ahí es donde realmente aprenderán por qué te tomas en serio los estándares de codificación.
Considere la posibilidad de que esté al menos tan equivocado como sus becarios, y que tratar de incluir información que debería estar en los comentarios en nombres de variables sesquipedales puede ser igual de perjudicial para la legibilidad.
Por lo que vale, en realidad encontré tu ejemplo bastante divertido. Si los suyos son así, creo que hacerles saber que disfrutó del humor podría suavizar el golpe de decirles que no es profesional y que deben evitarlo en el futuro. También te dará algunos puntos de frialdad que probablemente ayudarán a que te escuchen. (Sin embargo, deja en claro que no volverás a disfrutar de ese humor).
Fuera de tema, pero noté algo: "Algunos de los pasantes serán contratados en la empresa en el futuro en función de su desempeño". No, le darás a algunos de los becarios una oferta para trabajar en la empresa. No debe asumir que aceptarán su oferta.
Fuera de tema ... pero, ¿soy el único que siente que convertes un nombre MUCHO más limpio para tal método que convertGallonsToMilliliters(dada la clase y el contexto correctos, por supuesto).
@jamesqf La única información que debe estar en los comentarios es el por qué , no el qué . Si su código no muestra claramente lo que hace, es un código incorrecto y el código incorrecto no se puede reparar arrojándole comentarios, especialmente porque la posibilidad de que se actualicen los comentarios es incluso menor que la de actualizar el código.
@PriiduNeemre Si tiene docenas de convertmétodos flotando en su código (y sí, nunca los tiene ... cuando comienza, pero pronto los tendrá), será difícil ver de inmediato cuál es este. Al nombrarlo claramente o usar otras formas de aclararlo, puede reducir la complejidad de la lectura. Por supuesto, algo así Gallons.of( x ).convertTo( Unit.Milliliters)también es una posibilidad. Solo si está 110 % seguro de que solo se realizará una conversión en su código... Pero incluso entonces, solo si el contexto lo deja claro de qué se trata esta conversión.
@PriiduNeemre: Supongo que las personas que escribieron el software para Mars Climate Orbiter asumieron que también estaban escribiendo un código limpio en un contexto bien definido.
Agregue un nuevo método al proyecto para demostrarlo. FireEmployee(string employeeName, string reason) y agregue una prueba de unidad llamando al método con el nombre del empleado problemático y la razón que explica lo que hizo mal. Demuestra que esta prueba pasa y está lista para funcionar ;)
@FlorianSchaetz: De hecho, tenía en mente algo como su segundo ejemplo. En mi humilde opinión, es importante tener nombres descriptivos no solo en el nivel de método, sino también en los niveles de clase y variable ( por ejemplo , DtoAssembler.assemble(customer)en lugar de CustomerHelper.assembleCustomerToCustomerDto(entity), aunque este quizás no sea el mejor ejemplo). Si siente que necesita inflar un simple converta tales proporciones, probablemente esté en el lugar equivocado para empezar. De todos modos, esto probablemente sea aventurarse demasiado lejos de la pregunta inicial :).
@undercat ¿Qué se supone que debo ver en la fuente de Linux?
@undercat hace un punto importante aquí. Hay una larga tradición de humor irreverente escondida en el código fuente; afirmar que no es profesional hacerlo es un estándar local, no universal.
No estoy de acuerdo con Mehrdad. ¿Hablamos de profesionalidad? ¿Por qué tendrías que dedicar tiempo a ganarte el respeto de tus pasantes para que te escuchen? Estos son motivos de prueba, deberían obtener su respeto. Entiendo que ser estricto definitivamente puede arruinar la comunicación, pero creo que dar orientación no es aplicable. Si no están siguiendo su orientación, si no están respondiendo a las revisiones de código, eso no es profesional. El humor no importaría tanto si no fuera condescendiente.
Además, no deberías tener que motivarlos para que aprendan. Sus ambiciones son su responsabilidad. Si quieres algo, vas a buscarlo. Solo porque fuiste a una universidad, obtuviste un título, obtuviste una pasantía, no importa cuando se trata de tu carrera a menos que tomes tu propia iniciativa más allá de eso. No deberías tener que preocuparte por tu estatus entre ellos, solo debes dejar en claro que están eligiendo su propio destino.
@CodeSeeker probablemente el comentario en la línea 9
Esta pregunta no es "¿Deberían los métodos tener nombres largos o cortos?". Es "¿Qué hago con los compañeros de trabajo que ponen chistes estúpidos en el código fuente?"
¿Es realmente un buen ejemplo? El verbo solo, convertdebe ser el nombre de la función, y los detalles son parte de los tipos de argumentos. Tal vez auto result= convert<mililiters>(original); where original` es de tipo gallons. Las unidades de IAC deben ser tipos fuertes y las operaciones deben ser para la cantidad abstracta subyacente *no específica para unidades particulares.
¿Cómo sabes que lo hicieron para ser groseros? Tal vez el interno lo hizo para mostrarte, explícitamente, que escuchó lo que dijiste y entendió por qué lo dijiste.
Soy un desarrollador con más de diez años de experiencia profesional. Cuando necesito hacer bromas en código, lo hago en los datos para pruebas unitarias. Les doy a los clientes de pruebas unitarias calles o apellidos ingeniosos, elijo productos fuera del dominio para mis pruebas, como motosierras o cohetes lunares. Mi último aprendiz eligió personajes masculinos de Marvel y DC como usuarios de prueba de unidad para su proyecto, con direcciones de correo electrónico y las contraseñas son los nombres de sus novias. Él siguió adelante con ese esquema. Pensé que era inteligente e hilarante, y lo alenté. Hay un lugar para la diversión, pero no como lo hicieron en la pregunta.
Respuesta simple: programe una revisión de código. Parte del ciclo normal de desarrollo de software en la mayoría de las tiendas de software.
Cambie convertToMillilitersBecauseIAmUsingSuchCleanCodea convertToMillilitersBecauseImUsingSuchCleanCodey espere un NoMethodError.
La respuesta aceptada, con el ajuste @inapropiadoCode realizado en el comentario de esa respuesta, es el camino a seguir. Además de eso, no contrate a los pasantes que se comportan de esta manera.
Reunión grupal y luego las palabras "Miren, pequeños mocosos, esto ya no es la universidad, es el mundo real. Y en el mundo real, tonterías como esta hacen que despidan a la gente. Háganlo de nuevo y se irán".
@Florian Schaetz: Si su código muestra claramente lo que hace, no está trabajando en problemas muy complicados :-) Intente implementar, digamos, un solucionador de ecuaciones eikonal que pueda entender a partir del código. Usar nombres de variables realmente largos no ayudará. De hecho, te dolerá cuando hagas referencia a las ecuaciones del documento original.
@jamesqf Escriba un solucionador de ecuaciones eikonal donde la documentación pueda encajar muy bien en el código. no lo hará En este caso, simplemente tendrá que consultar el documento original en cualquier caso. Pero lo que puede hacer es envolver todo el solucionador para que quede claro lo que hace, incluso si el "cómo" solo se puede responder por "matemáticas" a través del código mismo.
Rechace el PR con una breve nota que indique por qué. No acepte PR futuros que contengan este tipo de problemas.
En pocas palabras, esos son los que no contratará. Fin de la historia.
No sé, personalmente me pareció gracioso. No veo nada malo en un sentido del humor descarado. Todo lo que muestra es que realmente no entienden el beneficio de los nombres apropiados de función/variable, y siendo becarios, esto es de esperar. Creo que muestra un mal juicio tomar esto como algo personal y no contratarlos en base a esto.
Si eso es lo peor de su código, tienes algunos pasantes realmente increíbles;) .
es probable que no vean el sentido de usar nombres propios. Hacerlo es algo que normalmente viene mucho más tarde y con experiencia. Si este proyecto no tiene sentido, que se diviertan. Si el proyecto realmente importa, involucre a las personas involucradas en el proyecto y converse sobre cómo los miembros del equipo mantendrán ese código en el futuro.
@PriiduNeemre No eres el único basado en los votos a favor de tu comentario, pero estoy totalmente en desacuerdo contigo. Una mejor denominación es una de las formas más importantes de hacer que el código sea más legible. A menos que el nombre de la clase sea GallonsToMillilitersConverter, Convertes un nombre de método horrible.
@EdmundReed Estoy totalmente de acuerdo con no tomarme las cosas personalmente. No hay necesidad. Ver mi respuesta en esta página y los comentarios.
@CodeSeeker: ¿Leíste mi otro comentario (y el de @FlorianSchaetz)?
@PriiduNeemre Lo leí antes, aunque no en el momento de comentar. Acepto su punto, de verdad, lo hago, pero en algunos casos el software no tiene que ser sobrediseñado. A veces, solo necesita ConvertGallonsToMilliliters y no hay espacio para crear un contexto completo en el que la conversión se pueda promover para que sea una preocupación adecuada a nivel de dominio. Mi punto es que está mal simplemente llamar mal a ese nombre. Puede ser adecuado para un contexto particular.
@CodeSeeker: buena argumentación, puedo vivir con eso :). Para ser honesto, no estaba tratando de hacer una declaración general de todos modos... Aunque supongo que resultó un poco provocativo.
No entiendo por qué los pasantes "conocerse unos a otros" es un factor en absoluto. No están allí para conocer a otros jóvenes universitarios sin contactos ni experiencia; están allí para "conocer" a los desarrolladores profesionales. Del mismo modo, tener un proyecto en el que trabajen principalmente o en su totalidad los internos significa que, en lugar de aprender de y sobre (lo bueno, lo malo y lo feo) del código real, están aprendiendo unos de otros, los ciegos guían a los ciegos. Tendría mucho más sentido, si tiene varios equipos, asignar uno o dos pasantes a cada equipo, como alternativa, a mentores voluntarios.
Creo seriamente que esta pregunta no pertenece a aquí. Pertenece al intercambio de pila de 'programadores'. El OP es ingeniero y está tratando de hacer la gestión de personas de los pasantes y ha aprendido la lección, ¡que así sea!
@FlorianSchaetz Si su código no muestra claramente lo que hace, es un código incorrecto , depende del idioma :-/
Dígale que nunca aprobará la revisión del código porque convertToMillilitersBecauseIAmUsingSuchCleanCode es ambiguo. Debería convertir galones a mililitros porque estoy usando un código limpio.

Respuestas (22)

No creo que reírse sea el enfoque adecuado. Necesitan aprender que ya no están en la escuela. Dicho esto, tampoco creo que debas llevarlo demasiado lejos.

Te recomendaría que seas firme con él/ella y le digas algo en el sentido de:

La razón por la que repasamos las convenciones de nomenclatura es porque son muy importantes. Este código necesita ser mantenible en el futuro. Mucha gente por aquí ha trabajado duro para llegar a donde están, y es posible que no aprecien este tipo de bromas. Absténgase de usar este tipo de nombres en el futuro, ya que puede hacer que las personas cuestionen su profesionalismo.

este parece ser el enfoque generalmente correcto. personalmente, me sinceraría con ellos utilizando un lenguaje menos formal. Los llamaría a mi oficina y les diría: "oye, me di cuenta de que estabas usando algunos nombres tontos para tus métodos. ¿Cuál es el problema?" llamarlos de esta manera en persona, creo, sería más probable que indujera sentimientos de vergüenza y remordimiento. un regaño por escrito demasiado formal podría darles más material para burlarse.

En primer lugar, esto parece una broma que se puso en código y que saben que no se usará para nada ni se leerá nunca más. Creo que estás leyendo demasiado sobre este incidente. Lo importante es que les dijiste sobre la convención de nombres y no te ignoraron, usaron nombres más largos y descriptivos (aunque con sarcasmo).

Después de ver este video , puedo ver que los trabajadores desean 3 cosas:

  1. Autonomía
  2. Maestría
  3. Objetivo

Lo que les está pidiendo que hagan no es autónomo, es probablemente una dificultad trivial para algunos de ellos y no sirve para nada a sus ojos.

Arregla la tarea y los trabajadores te seguirán.

Algunos ejemplos:

  1. Aquí está este proyecto, trabajen juntos y háganlo ____, háganme saber si se atascan.

  2. Sé que esto no parece importante, pero para evaluar tus habilidades y asignarte un trabajo que creemos que te ayudará a crecer, necesitamos que termines esta tarea.

Acordado. Saben que están trabajando en algo que no tiene ningún sentido, lo que puede ser frustrante. El humor es una buena forma de desahogarse.
Realmente me gusta esta respuesta porque comparte la culpa del comportamiento poco profesional del pasante con la gerencia. Como alguien que, hasta hace poco, estaba atrapado completando tareas serviles en un rol subordinado, entiendo los efectos negativos que la microgestión y la falta de autonomía pueden tener en mi propia productividad. Si bien la disciplina puede conducir a una solución a corto plazo, no aborda el problema subyacente.
He visto el video y me encantan estos puntos. Sin embargo, esto es claramente subversivo e irrespetuoso. La pregunta es por qué. Ponerse a trabajar en un juguete antes de que lo arrojen al fondo de la piscina no es microgestión. Aunque los internos podrían no entender eso. La mejor manera de reaccionar ante esto es preguntar por qué. ¿Se están burlando del ejercicio, los estándares, la gestión, o simplemente fue demasiado tiempo en el teclado y no suficiente tiempo sosteniendo una pistola Nerf?
No leas nada en absoluto hasta que lo domines. Esto ni siquiera es asunto de la gerencia. Este es un problema de revisión de código. La razón por la que no haces esto no es porque la gerencia te vaya a despedir. Es porque tus compañeros de trabajo saben dónde guardas tu taza de café.
Acordado. Son niños que no han trabajado antes en un entorno profesional en un puesto en el que uno de los objetivos es enseñarles cómo trabajar en un entorno profesional. Despedirlos por no ser profesionales parece perder el sentido.
@JaguarWong "Son niños que no han trabajado antes en un entorno profesional en un puesto en el que uno de los objetivos es enseñarles cómo trabajar en un entorno profesional". Probablemente sean veinteañeros que muy pronto necesitarán hacer esto o que mamá y papá sigan pagando por ellos. Francamente, "no te burles de tu mentor" es algo que ya deberían saber.
@CandiedOrange re "subversivo / irrespetuoso": no necesariamente cierto. Solo tenemos la cuenta del gerente de eso. Por lo que sabemos convertToMillilitersBecauseIAmUsingSuchCleanCodees un ejemplo "exagerado". Tal vez más que "burlarse", los internos lo hicieron "para vincularse", y el gerente se muestra inseguro y busca la peor explicación posible. Tal vez el pasante estaba orgulloso de poner eso allí, mostrando que no solo escucharon, sino que disfrutaron y lograron divertirse un poco con eso. El gerente asume que "adivino astutamente quién", cuando el interno probablemente no se estaba escondiendo y solo estaba tratando de aligerar los ánimos.

TL;DR : Me opongo al nombre del método porque (¡en mi opinión!) expresa desdén por el jefe y/o las "reglas" (aquí: pautas de estilo). En el lugar de trabajo, espero que las personas cumplan con la regla "ámalo, cámbialo o déjalo". En este caso, el pasante, que parece ser de la opinión de que la directriz es innecesaria, debería simplemente aceptarla de todos modos; o mantener la discusión al respecto; o dejar de hacer lo que hace. No poner en el equivalente a algunas manchas en el inodoro. No habría tenido ninguna objeción contra un nombre de método verdaderamente divertido y creativo. Si usted (el OP) encuentra el nombre del método simplemente divertido y no "malo" como yo, ignore esta respuesta, por favor.


Como antecedente, he supervisado a algunos pasantes muy inteligentes y (auto) motivados en el pasado, y nunca hubo dudas sobre si se comportarían profesionalmente o no. Llevar tonterías de nivel escolar a un lugar de trabajo como pasante está tan fuera de lo aceptable que sugeriría no perder el tiempo. Por los tuyos y sobre todo por el bien de ellos.

Me gustaría saber cómo manejar tal situación correctamente.

En primer lugar, olvídate de las convenciones de codificación. El problema no está relacionado con las computadoras o la programación.

  • no mientas No se ande con rodeos, no se ría, porque realmente no es cosa de risa.
  • No seas personal. No se trata de ti , el OP, ni de tu relación con ellos. Se trata pura y estrictamente de su comportamiento.
  • Explicar las cosas como son. Absolutamente puede decirle al infractor que entiende cómo se le ocurrió la idea de hacer lo que hizo, y que no está personalmente enojado con él o lo que sea (evite las emociones), pero que está viendo la pasantía como una proyección de a quien tomar a bordo más tarde.

Si desea transmitir alguna emoción al respecto, manténgase alejado de la ira. Puedes mostrar una leve tristeza (y, francamente, eso sería exactamente lo que yo sentiría en realidad) y mostrarles que estabas bastante decepcionado.

Aún así, su desempeño durante la pasantía afectará sus posibilidades de ser contratado y situaciones como esta pueden jugar un papel más adelante.

¡Absolutamente! No te entretengas con "puede desempeñar un papel más tarde". Un comportamiento como este puede, debe y hará que sus posibilidades de recibir una oferta después de la pasantía sean cero. Puede decir eso de cualquier manera que normalmente le hable, simple y claramente.

Trate de encontrar la causa raíz. Si te enteras de que tampoco...

  • ...están aquí en contra de su libre albedrío (tal vez sus padres, o su escuela o lo que sea, los obligaron a elegir una pasantía y casualmente eligieron su empresa)...
  • ...no están interesados ​​en absoluto en el desarrollo de software de estilo "comercial"...

...entonces ofrecer cancelar la pasantía no sería lo peor que podrías hacer. El problema no es que pierdas tu tiempo (habías asignado mucho tiempo para supervisarlos en cualquier caso, en realidad no empeoraron las cosas para ti), el problema es que su tiempo está perdido.

¿O debería decirles algo similar para que estén más motivados para aprender algo?

Bromearía "todos los humanos pueden aprender, pero a ningún humano se le puede enseñar". Creo que le resultará muy difícil motivar a esa persona para que aprenda sobre la utilidad de las convenciones de codificación, ya que ya demostró que no tiene ningún interés en ellas. Puedes enseñar a aquellos que estén interesados ​​en lo que tienes que decir; pero si alguien es desinteresado, no hay nada que puedas hacer, realmente.

Si realmente quieres ayudar a esa persona a "ver la luz", entonces pídele que trate de seguirle el juego por su propio bien, tal vez aprenda a apreciar lo que puedes ofrecer, más adelante. Las pasantías son un intercambio de cualquier servicio limitado que puedan ofrecer, contra la experiencia de trabajar en un lugar de trabajo real. Si no están interesados ​​en asimilar la experiencia, entonces realmente no tiene sentido. Presumiblemente, su empresa no depende de tener su "mano de obra" para algún proyecto real.

En primer lugar, olvídate de las convenciones de codificación. El problema no está relacionado con las computadoras o la programación. ¡Este es un muy buen punto!
Lo siento, pero -1 ya que encuentro tu respuesta demasiado dura y exagerada. Encuentro frases como "está tan fuera de lo aceptable", "ya demostraron que no tienen ningún interés en eso" y "hacen que sus posibilidades de incorporación sean cero más adelante" no aplicables a esta situación. Simplemente eligen algunos nombres tontos para una pieza de código no relevante, una acción que se puede corregir en unos segundos (y, por cierto, usar algunos nombres tontos es bastante común en muchas aplicaciones serias). ¡No asesinaron a su jefe!
No hay necesidad de disculparse, @dirkk, la suya es una opinión tan válida como la de todos los demás. Supongo que probablemente ayudaría saber qué edad y/o antecedentes tienen estos muchachos y cuál es el contexto de su pasantía.
"porque realmente no es cosa de risa". Este es el nombre de un método, no una emergencia médica. Sí, debería ser perfecto, estéril y gris acorazado, pero si realmente selecciona a las personas según ese criterio, prepárese para que los guiones y las IA tomen su tienda perfecta, estéril y gris en un futuro próximo. Todos los humanos cometen errores y si su único error es encontrar un nombre de método que cumpla con las reglas, pero que sea divertido, entonces definitivamente los emplearía.
@nvoigt Es perfectamente posible escribir un buen código con estilo de programación sin la estupidez preescolar. (Y no, no se ajusta a las reglas). Su error es ver al OP como otro maestro en una situación de nosotros y ellos, en lugar de como un compañero de trabajo que intenta ayudarlos. Si mantienen esa actitud infantil, ¿por qué los emplearías? Si hay muchos pasantes y menos trabajos de tiempo completo, deben darle una razón para querer que trabajen con usted, de lo contrario, es mejor que vaya con otra persona.
@Graham según lo que está escribiendo, su país parece estar repleto de personas perfectas de CS que piden trabajo. El mío no lo es, tomaré a alguien cuyo mayor defecto es encontrar un nombre de método divertido dentro de las reglas cualquier día.
@nvoigt, el problema (para mí) no es que usaron un nombre de método divertido. Por ejemplo, uno de nuestros desarrolladores llamó a un paquete "I", lo que generó nombres de métodos como "I.run()", etc. mi jefe apesta pero hago lo que dice porque lo dice". Sí, por supuesto que es solo mi opinión, pero estamos en Workplace.SE, y se debe permitir un poco de opinión aquí, especialmente porque el mecanismo de votación se encarga de eso.
@nvoigt: agregó un TL; DR para explicar mejor el espíritu de mi respuesta.
@dirkk Como menciona AnoE, este no es "solo un nombre tonto". Esencialmente, esto es un sarcasmo escrito que pretende ser un desaire contra el OP y que simplemente está más allá de los límites en un lugar de trabajo. Esto es relativamente leve y es probable que solo sea un intento de humor inapropiado, pero si no se tratara de los pasantes, estaría lanzando términos como comportamiento pasivo-agresivo, cumplimiento malicioso, daño a la reputación y movimiento que limita la carrera. Pero se espera que los pasantes nuevos en la cultura de la oficina la caguen y este debería ser un momento de aprendizaje. No tomar esto en serio sería perjudicar a estos internos.
@AnoE Sigo su opinión sobre esto, pero si puedo ofrecer algunas críticas (con suerte constructivas), encuentro que su respuesta es un poco desestructurada y divagante. Creo que ayudaría a resumir el problema principal con el comportamiento (poco profesional, no apropiado en un lugar de trabajo) y lo que debería hacer el OP (explicar por qué es inapropiado para las personas nuevas en el lugar de trabajo = administrar sus pasantes). Tampoco estoy seguro acerca de su sección sobre la causa raíz. No asumiría automáticamente que estaban desmotivados por este incidente particular de mal juicio.
@Lilienthal: gracias por los comentarios, parece que generalmente es un problema para mí (ir al grano), de vez en cuando. Intentaré trabajar en ello. ;)
@AnoE Conozco la sensación, es solo el límite de 600 caracteres lo que mantiene mis comentarios bajo control. :) Si quieres responder, mándame un ping en The Workplace Chat , no quiero seguir agregando a este hilo de comentarios. Continúe y marque mi comentario anterior como obsoleto si desea borrar esta parte.
"El tema no está relacionado con la programación". Este es un punto fantástico y llega al núcleo del problema. Creo que la mayoría de las otras respuestas lo implicaron, pero felicitaciones por explicarlo explícitamente.

Todos odiamos hacerlo, pero a veces solo tienes que arreglar los problemas usando la autoridad. Llame a los pasantes a una reunión y exija saber por qué no se siguieron las convenciones de nomenclatura.

Expliqué las convenciones de nomenclatura a seguir en nuestra reunión anterior. Encontré varios casos en los que no se siguió la convención de nomenclatura. Por ejemplo, convertToMillilitersBecauseIAmUsingSuchCleanCode. ¿Podría explicar por qué se eligió este nombre?

Su "respuesta" es irrelevante, esto debería servir como una "primera advertencia" suficiente de que ir en contra de las instrucciones de su supervisor (que supongo que usted es) y hacer bromas a su costa no es aceptable en un entorno profesional. Eso incluso encaja bien con un objetivo de la pasantía, que es mostrar a los estudiantes cómo trabajar en un entorno profesional.

Si continúan con su comportamiento infantil, entonces bueno, creo que has llegado a la conclusión de esto:

Algunos de los pasantes serán contratados en la empresa en el futuro en función de su desempeño.

El problema aquí es que siguieron las convenciones de nomenclatura
@JoeS ¿Cómo? convertToMillilitersBecauseIAmUsingSuchCleanCodeno está siguiendo las instrucciones de should not be afraid to use longer, descriptive method names. Es largo, pero no descriptivo.
@Cheshire jugaron el juego de las "palabras exactas". Este no es uno que se va a resolver con la fuerza bruta.
@JoeS No, no lo hicieron. Es obvio que su comportamiento fue pasivo agresivo, y eligieron el nombre largo solo para burlarse del supervisor. Me interesaría ver a un profesional en pleno funcionamiento que se comporte de manera similar y que no reciba una fuerte reprimenda (si no peor). No hay justificación para elegir nombres más largos de lo necesario, no están jugando el juego del "mejor abuso de escapatorias", e incluso si hay algo mal con la regla, deben mencionarlo de manera constructiva, no comportándose de manera desagradable. PD: Aunque sinceramente espero que estuvieras bromeando.
Si su respuesta es irrelevante, ¿por qué llamarías a una reunión para hacer la pregunta? Una primera advertencia debe ser una advertencia real, no una pregunta retórica.
@mwbl Porque el objetivo de ponerlo como una pregunta es ponerlos en la posición incómoda en la que tienen que pensarlo y dar una respuesta en el acto. Él ya les ha contado sobre las convenciones de nombres y no lo "entendieron". Decirles "no usarás nombres tontos en tu código" se encontrará con "sí, claro, el código tan limpio del que estamos hablando". Los pasantes deben darse cuenta de la diferencia entre la universidad y un entorno profesional.
"¿Podría explicar por qué se eligió este nombre?" Es un comportamiento bastante pasivo-agresivo cuando ves claramente que es una broma. Su objetivo es mejorar las convenciones de codificación, no mostrar su autoridad, espero.
@Boat Si bien no puedo hablar por MaskedMan, el objetivo aquí ciertamente no es enseñar mejores convenciones de código: eso es incidental. El objetivo de esta reunión debe ser dejar en claro a estos pasantes que un lugar de trabajo se rige por reglas diferentes a las de un curso de programación y que un comportamiento pasivo agresivo como este no está bien y, a menudo, es un movimiento que limita la carrera y que para los empleados regulares provocaría frases como "advertencia final" o "por favor empaca tus cosas". El valor real de las pasantías es enseñar habilidades blandas y adaptarse a una cultura de oficina, no habilidades técnicas.
@Lilienthal, bueno, entonces puedes decir, por ejemplo, "no es apropiado bromear en las convenciones de nombres". Si finges no entender, solo estás diciendo "Soy el jefe y debes aprender tu lugar". No se trata de roles sociales, no se trata de tu ego, se trata de convenciones de trabajo y el jefe debería poder comunicarlo de manera constructiva. El hecho de que el interno haya actuado de manera infantil no significa que tú tengas que hacer lo mismo.
@Lilienthal Iba a responder en esas líneas cuando encontré el tiempo, ¡pero ciertamente lo expresaste mucho mejor de lo que yo hubiera dicho!
@Boat ¿Qué tiene exactamente de infantil pedir a los pasantes que expliquen por qué no siguieron las reglas? Los becarios no están en el jardín de infantes, no debes dejar que se lleven la impresión de que serán mimados en el mundo profesional. El supervisor ya les dijo una vez que siguieran las convenciones de nombres. No existe tal obligación de su parte de "dejarlos bromear la primera vez y explicarles las reglas nuevamente hasta que dejen de bromear". No hay nada destructivo en que un jefe le diga a sus subordinados que hagan su trabajo, no necesita cuidarlos para que se haga el trabajo.
@MaskedMan-仮面の男 Indicar que no está bien bromear está perfectamente bien. Pero pedir una explicación fingiendo que estás interesado en la respuesta no está bien, porque en realidad solo quieres que te respondan "porque soy estúpido". Es lo mismo que exigir una explicación por cada error de escritura: sabes que no debe estar allí porque piensan que es correcto, pero finges que no es así. Simplemente dígales que bromear/escribir errores no está bien y echarlos si no cambian su comportamiento, pero no finjan.
@Boat Hmm, esto probablemente solo se deba a una diferencia en la cultura laboral. En la cultura laboral que conozco, lo que hacían los internos allí se llama insubordinación. Les estoy dando mucha holgura porque son becarios, y sugiero pedirles que expliquen precisamente porque deberían pensarlo y no solo concluir "no debemos desobedecer al jefe porque el jefe lo dijo". El problema aquí no es que "bromearon" per se, sino que mostraron un absoluto desprecio por las instrucciones de su supervisor.
@boat "Soy el jefe y deberías aprender cuál es tu lugar". De hecho, creo que esa es una de las lecciones que los pasantes en esta pregunta deben aprender.

Oh, un montón de jodidos, ¿eh?

Tome un código de trabajo y haga algo para romperlo deliberadamente. Luego ejecútelo a través de un ofuscador que cambia todos los nombres de clases, variables y métodos a cosas como "a___1318798_" y "xy23_7a963"; o peor, nombres de variables con muchos caracteres de la letra O, la letra I, el número 0 y el número 1. Que sea su tarea documentar lo que está haciendo el código y corregirlo.

Esto curará las bromas.

No estoy seguro de por qué esta respuesta recibió votos negativos. Estoy bastante seguro de que esta "tarea" resuelve el tema de las convenciones de nombres en la cabeza. Sin embargo, el profesionalismo ... lástima que no haya una reversión de "Fui un idiota con alguien que influye en si me contratarán o no".
@TBear Esto perdería más tiempo del que ya se ha perdido, probablemente sin enseñar una lección muy útil, o en el mejor de los casos, enseñando una lección que podría enseñarse más fácilmente con una explicación rápida. Aunque no lo voté personalmente, creo que es por eso que otros lo han hecho.
Pensé lo mismo, pero lo publiqué como comentario ya que probablemente no sea una buena solución al problema. Depende en gran medida de la cultura del equipo de desarrollo y de si se dirige o no a sus internos como "gusano" al estilo de Major Pain.
Recibió un montón de votos negativos (no de parte mía, lo prometo) casi con certeza porque solo aumenta la percepción de los pasantes sobre el ejercicio como poco serio.
Con el control de versiones, esto se soluciona en 30 segundos con una sola reversión.
@DmitryGrigoryev, no tienes que dárselo a través de git;)
@BlackThorn Asumir la responsabilidad, disculparse y tratar visiblemente de hacerlo mejor puede funcionar como una reversión de eso.

Sé que probablemente no sea gran cosa, pero es la primera vez que ayudo a los pasantes y me gustaría saber cómo manejar esa situación correctamente. Aún así, su desempeño durante la pasantía afectará sus posibilidades de ser contratado y situaciones como esta pueden jugar un papel más adelante. ¿O debería decirles algo similar para que estén más motivados para aprender algo?

Cuando encuentre tales tonterías durante las revisiones de su código, ríase, detenga la revisión del código y dígales que regresen una vez que hayan eliminado el humor.

Supongo que no son estúpidos y ya saben que el nombre demasiado largo es inapropiado, incluso si se ríen. Si no, explique por qué una vez.

Con suerte, está realizando un seguimiento de su rendimiento y puede notar con qué frecuencia sucede esto.

Tendría una conversación sincera con cada uno de ellos, en privado, en un tono franco y serio pero no severo, algo así:

"Pasante, vi el nombre de su método de broma. Entiendo por qué lo hizo, pero no pensé que fuera tan gracioso, yo mismo. Así que se me ocurre preguntarle, ¿qué está haciendo aquí? te gustaría lograr?"

Si los pasantes dicen que solo está allí para jugar, entonces hable con la gerencia para finalizar su pasantía. Estás perdiendo tu tiempo.

Si dice que está allí para aprender, entonces di algo como esto:

"Me doy cuenta de que puede ser difícil tomar en serio algo que sabes que no se usará en la producción. Pero date cuenta de que no solo te estás tomando tu tiempo, también me estás tomando mi tiempo. La pasantía que has tenido proporcionado por la compañía es, en esencia, una especie de entrevista. Lo único que impide que sea una caridad absoluta de nuestra parte es la esperanza de encontrar buenos candidatos. Así que vale la pena mi tiempo, pero solo si se lo toma en serio".

"Si no puede tomarlo en serio y trabajar como si estuviera escribiendo un código de producción importante, ¿cómo podemos evaluarlo adecuadamente y decidir si le ofrecemos un trabajo? E incluso si no le ofrecemos un trabajo, si usted Si aún no te lo tomas en serio, ¿de qué otra forma adquirirás estas habilidades y podrás practicar bajo la valiosa dirección de alguien con más experiencia que tú?"

"Si yo fuera usted, haría todo lo posible para seguir el ejemplo de las personas que lo guían, quienes, de manera algo caritativa, están tomando tiempo no rentable de su trabajo para invertirlo en usted. Considere que se beneficiará de esta pasantía ya sea ¡te contratemos o no! Personalmente, te agradecería que te tomaras esto un poco más en serio. ¡Hazlo por ti mismo! Si no quieres hacerlo por ti mismo, hazlo por respeto, o simplemente por gratitud, por el momento. Me he apartado de mi trabajo productivo normal para invertir en ti y en tu futuro".

Probablemente sea apropiado abordar directamente el comportamiento en sí y por qué le estás dando tanta importancia. Podrías considerar algo como esto:

"Por lo que vale, este tipo de acción se considera una falta de respeto, o incluso una burla, en el mundo corporativo. Estoy seguro de que no lo quiso decir de esa manera [incluso si no lo cree, dígalo], pero por favor, siga mis instrucciones en el futuro sin poner cosas sarcásticas en el código".

Dar el "fuera" del pasante diciendo "oh, sí, no quise faltarle el respeto" le permite salvar las apariencias y reparar la relación de la manera menos dolorosa posible. No hay necesidad de obtener una confesión de que lo dijo en forma irrespetuosa o de obtener una gran disculpa. El punto aquí no es dominar sino una pasantía exitosa.

Si después de todo esto, el comportamiento negativo continúa, puedes abordarlo más de frente. No hay ninguna razón por la que no pueda dar una meta de rendimiento a un pasante tal como lo haría con un empleado problemático, o usar cualquier otra estrategia que usaría con un empleado regular. Pero recuerde que los pasantes NO tienen experiencia en el mundo laboral y se les debe dar un descanso o dos mientras usted los acostumbra con cuidado, pero con firmeza, a los estándares del mundo laboral profesional.

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Trabajé con algunos chicos recién salidos de la escuela. Hicieron este tipo de cosas no a propósito, sino porque sintieron que no tenía sentido ser demasiado pedantes. La legibilidad o reutilización del código simplemente no tenía sentido para ellos. Entonces, me molesté, pero no pude reprender a ninguno de ellos ya que yo no era su jefe.

Los programadores son generalmente un grupo inteligente y "porque yo lo digo" rara vez es una buena razón para implementar algo, incluso si es la mejor práctica de programación.

Revisaría el código, me aseguraría de decirles que el humor está fuera de lugar y que sus extrañas convenciones de nombres hacen perder bastante tiempo. Para la siguiente tarea los dividiría en dos: los graciosos de un lado, el resto del otro. Harían la misma tarea, pero el grupo divertido debería tardar mucho más porque no están siguiendo las mejores prácticas. Me aseguraría de que la tarea sea lo suficientemente compleja como para hacerles perder mucho tiempo si mantienen sus convenciones.

También puede asignar a un tipo divertido para depurar el código de otro tipo divertido. No creo functionThatDudeToldMetoDefineque llegue a la versión final con este nombre.

En cualquier caso, la única forma de aumentar tu autoridad es ponerlos en situaciones en las que se demuestren a sí mismos que lo que afirmas es cierto.

Siento que esta frase es un muy buen consejo: "la única forma de aumentar tu autoridad es ponerlos en situaciones en las que se demuestren a sí mismos que lo que afirmas es cierto". Si no siguen la convención es porque no entienden su valor. Permitirles ver el valor por sí mismos probablemente les ayudará a usar la convención.
No puedes reprenderlos, seguro. Pero si está revisando el código, puede enviarlo de vuelta, enviarlo de vuelta y enviarlo de vuelta. Y si continúa, escalarlo. Sin duda, su jefe debería tener una opinión sobre la legibilidad y la reutilización del código, ya que eso tiene un impacto directo en las escalas de tiempo de su equipo en el futuro. Y si no pueden seguir un estándar de codificación, deshágase de ellos. Los niños que acaban de salir de la escuela cuestan diez centavos, y si no aprenden, puedes despedirlos y conseguir a alguien que pueda hacerlo.
@Graham Si el mercado laboral es como en EE. UU. o en el oeste de la UE, es más fácil reemplazar a los "defectuosos". Donde vivo, es difícil encontrar mano de obra calificada, por lo que no hay tantas opciones. Si se corre la voz de que eres demasiado duro, la gente buscará otras opciones.
"Los programadores son generalmente un grupo inteligente y 'porque yo lo digo' rara vez es una buena razón". Eso puede ser teóricamente cierto, pero en la práctica hacemos exactamente lo contrario con los programadores que practican estúpidos fanatismos como "Emacs vs Vim", "Chrome vs Firefox". ", "C++ frente a Java", "Windows frente a Linux", etc. En muchos casos, lo razonable es aprender lo suficiente de tantas herramientas como sea posible y elegir la adecuada para el trabajo, pero los programadores insisten en hacer todo con su herramienta "preferida" incluso si se puede hacer mejor con otra herramienta y lo saben .
@ user27051, por otra parte, otros vendrán si escuchan que cumple con los estándares adecuados y se deshace de las personas que son más un estorbo que una ayuda...

Los internos en cuestión están desperdiciando su tiempo y paciencia. Su tiempo y paciencia son recursos costosos y limitados para la empresa y los pasantes que se benefician de la inversión de la empresa en ellos, una inversión que está restringida por los recursos de la empresa.

Su disposición a desperdiciar recursos de la empresa innecesariamente es una parte relevante de su evaluación de desempeño y puede conducir a una terminación prematura de su pasantía para gastar los recursos de la empresa solo en aquellos pasantes realmente interesados ​​en aprender cómo ser una parte valiosa, responsable y confiable de el lugar de trabajo a quien se le pueden confiar tareas e instrucciones.

Se lo diría a todos los becarios, mostrando algún código de ejemplo, que no mencionen a su autor, que no le dediquen más de 2 minutos y, si luego se arregla el código y no se repitan incidentes similares, que no lo vuelvan a mencionar.

Si no se escucha el disparo de advertencia, el siguiente paso es una conversación abierta solo con el interno en cuestión y posiblemente con un superior suyo (sin embargo, asegúrese de que esté en su bote). Luego, debe decidir si le debe a los otros pasantes eliminar al que está saboteando sus posibilidades de una pasantía exitosa.

El objetivo de contratar pasantes es que les va a enseñar algunas de las normas del lugar de trabajo que usan las personas con experiencia. En mi opinión, eso también debería implicar una retroalimentación clara y directa. Dejar pistas nunca es una gran estrategia de gestión y lo consideraría especialmente probable que fracase con estos pasantes. Y si bien esto debe tratarse como un problema serio, se espera que los pasantes cometan errores como estos. Un lapso de juicio no es lo mismo que no estar dispuesto a aprender.

Parece que hay dos problemas principales aquí: 1) Están siendo irreverentes y 2) El nombre de la función todavía apesta a pesar de que ahora es más largo.

Reprenderlos por bromear probablemente no hará que respeten más tu autoridad, así que me enfocaría en el tema como si fuera cualquier otra función mal nombrada. No necesariamente me haría el tonto y fingiría que no me doy cuenta de que es una broma, pero les preguntaría por qué eligieron el nombre que eligieron:

"Parece que hay algunas palabras superfluas en el nombre de esta función que no ayudan a explicar lo que hace la función".

De esa manera, es una oportunidad de aprendizaje para ellos sobre lo que hace un buen nombre de función y no los confronta directamente. Como beneficio adicional, es posible que reconozcan el hecho de que solo estaban bromeando y sientan algo de vergüenza por hacerles perder el tiempo a todos.

"No necesariamente me haría el tonto y fingiría que no me doy cuenta de que es una broma", creo que esta parte requiere más explicación porque parece que la parte "irreverente" es bastante importante aquí.
"Parece que hay algunas palabras superfluas en el nombre de esta función que no ayudan a explicar lo que hace la función". Parece que ese es el punto que los internos están tratando de hacer convertGallonsToMilliliters. Le recomiendo que explique por qué convertno está claro y cuanto más largo vale la pena la verbosidad adicional en lugar de tratar de "manejar su comportamiento". (Y si argumenta a favor de la precisión y ellos argumentan a favor de la brevedad, es posible que incluso termine con nombres de funciones como gal_to_mllos que combinan lo mejor de ambos mundos).

Si tienes que recordarle a la gente que tú estás a cargo, entonces nunca lo estuviste.

Sería mejor realizar un tutorial de código en el que el desarrollador tenga que explicar su código a las personas con autoridad.

  1. Esto infunde responsabilidad personal por el resultado del proyecto.
  2. Proporciona retroalimentación profesional inmediata.
  3. Darle al desarrollador un sentido de urgencia para completar el proyecto.

Utilice su liderazgo como parte del equipo para mantener los estándares de su organización. Luego, ayude a los empleados más jóvenes a cumplir con esos estándares y evite la vergüenza de presentar un trabajo deficiente.

Esa primera oración no parece realmente agregar nada al resto de su publicación. ¿Me estoy perdiendo de algo?

Obviamente, debe hacer que se detengan, pero simplemente decirles que no demuestren por qué.

Sé que la pauta de 80 caracteres por línea no es una regla estricta, de ninguna manera, pero tratar de cumplirla es una buena práctica, por lo que tener un nombre de variable de 48 caracteres es bastante tonto.

Sugeriría decirles que traten de seguir esta guía a partir de ahora, pero que tampoco les permitan cambiar los nombres de las variables que han elegido. Algo así como "has hecho tu cama, ahora túmbate en ella".

Tendrás la oportunidad de probar y machacar una nueva práctica en sus cabezas (suponiendo que no estén manteniendo las líneas cortas), los becarios que no entienden por qué los nombres largos de variables son malos están a punto de descubrirlo, y los becarios "inteligentes" pronto descubrirán que no están siendo tan inteligentes como pensaban.

Es obvio para los codificadores más experimentados por qué convertToMillilitersBecauseIAmUsingSuchCleanCodees particularmente malo, pero en lugar de decirles "eso es malo", oblíguelos a averiguar por qué. Apuesto a que encontrará muchos menos nombres detallados y, con suerte, menos intentos futuros de ser sarcástico también.

Desafortunadamente, con los IDE modernos, los nombres largos ya no son tan molestos con la codificación como solían ser.

Simplemente dígale al infractor (personalmente o por correo electrónico) que la pasantía no es un lugar apropiado para este tipo de bromas y que debe tomárselo en serio si quiere comenzar una carrera.

Pídales que arreglen el código o (si desea mostrar cierta autoridad) simplemente revierta sus cambios en el control de versiones.

Esto no tiene por qué ser "talla única".
Todos los tamaños se ajustan a algunos:

Cada uno de los enfoques propuestos puede funcionar muy bien y puede ser el mejor enfoque según las circunstancias. Aquí está mi respuesta a cada uno de los enfoques sobre los que se me preguntó:

¿Debo reaccionar por

  • riéndose ("Sí, es divertido, pero por favor quítalo")

Esta es una gran idea cuando: Tiene una excelente relación con estos compañeros de trabajo, que se han convertido en buenos amigos con

  • solo pido educadamente que lo eliminen

Esta es una gran idea cuando: Quiere ser directo para que no haya malentendidos

  • diciendo que no me gusta cuando alguien me hace perder el tiempo y que debería tomarse la revisión del código más en serio

Esta es una gran idea cuando: Desea comunicar molestia y mantener un enfoque autoritario.

(Me inclino a pensar que podría combinar todos esos enfoques en una forma no ofensiva, educada y divertida que comunique que hay un poco de molestia real. "Este tipo de cosas deben terminar porque simplemente me hacen go [simulacro de grito] "podría ser una manera humorística de lograr eso).

Personalmente, me gusta el método amistoso. Soy creyente de esa manera de hacer las cosas. Sin embargo, admitiré fácilmente que hay momentos en que tales enfoques son menos efectivos.

Pero ¿Qué es lo mejor?
Su pregunta básica es: "¿Cómo debo reaccionar ante esto?"

Básicamente, esta pregunta se reduce a decir: "Necesito llegar a algún lugar. ¿Debo usar un monociclo, un saltador, una bicicleta o un autobús?"

Cualquiera de esos enfoques de transporte puede ser mejor. De manera similar, para responder a la pregunta de cómo debe reaccionar: su mejor reacción podría no ser mi mejor reacción.

Esta es una razón clave por la que, aunque las diferentes respuestas parecen estar de acuerdo en que el comportamiento de los pasantes no es adecuado para los resultados de producción, las diferentes respuestas parecen favorecer diferentes enfoques. Como se señaló, es posible que no tengamos un único enfoque de "talla única" que funcione universalmente mejor para todos.

Estamos tratando con personas aquí, por lo que lo que funciona mejor en algunos escenarios puede no funcionar tan bien en otros escenarios. Uno de los factores clave eres tú. ¿Se puede ser severo sin quemar puentes? ¿Puedes hacerte amigo de ellos siendo alegre, pero asegurando suficiente cumplimiento e inspiración para obtener los resultados deseados? Lo que funciona mejor para mí podría funcionar terriblemente terrible para ti. En última instancia, debe tomar una decisión sobre cuál de esos enfoques tomar.

Enseñanza flexible: no se comprometa con un solo enfoque.

Simplemente elija el método con el que se sienta más cómodo. Asegúrate de no exagerar (humor malo/ofensivo, o crear un ambiente incómodamente amenazante en un esfuerzo por ser estricto).

No importa cuál de sus excelentes sugerencias decida seguir adelante, vigile de cerca los resultados.

Es muy posible que tomes una decisión que no funcione como esperabas. Siempre que no haya causado ningún problema importante, esto puede ser muy recuperable, si se maneja de manera positiva y rápida. Esa es una de las razones por las que no debe preocuparse demasiado por tratar de tomar la decisión más perfecta. Si las cosas no van bien, su situación puede salir bien. Las personas son diferentes, y el aprendizaje puede ser impredecible, y no tiene por qué avergonzarse de que un primer enfoque necesite modificaciones. Mientras se recupere rápidamente, esto puede no ser un problema.

La clave es hacer cambios tan pronto como comiences a encontrar resultados no deseados. Espere tener que adaptarse rápidamente. Cuando algún enfoque no funcione, prepárese para modificar rápidamente el enfoque, o incluso tirarlo por la ventana. Si lo que está haciendo no funciona, determine si es probable que esté al borde de un gran avance o si necesita probar algo diferente. (Obtener retroalimentación ayudará con esta determinación). Si necesita probar algo más, entonces hágalo. Siga haciendo eso hasta que obtenga resultados de trabajo.

Siempre que actúe rápidamente (antes de que los sentimientos a largo plazo, como la amargura, comiencen a afianzarse), las imperfecciones menores pueden pasarse por alto fácilmente como insignificantes en comparación con los resultados positivos que logra en general. (Solo asegúrese de que si las cosas van de manera imperfecta, los problemas sean menores. Los errores importantes pueden ser un poco más difíciles de olvidar. Por ejemplo, el intento de humor puede ser peligroso).

Por ejemplo, si descubre que comienzan a odiarlo, a temer el medio ambiente, etc., asegúrese de aclarar cualquier malentendido. Asegúrales que estás de su lado. Fomentar el comportamiento deseado. etc.

Hace dos años estaba en un puesto similar al de los becarios de su empresa. Puedo imaginar un escenario en el que habría hecho algo similar. Creo que algunos becarios tienen problemas con su autoridad; ser pedante y/o poco profesional. Esto se debe principalmente a la falta de respeto que tiene mi generación hacia los mayores y los que están en posiciones más altas. Probaría los siguientes métodos para resolver la situación.

  • Gánate el respeto de los pasantes burlando al "líder", "alfa".

  • Use el nombre de la función pedante como una lección para todos, la longitud óptima del nombre de la función: la zona de Goldilock.

  • Señale una falla en la función "convertToMillilitersBecauseIAmUsingSuchCleanCode" y sugiera un cambio de nombre a algo apropiado (/ degradante)

  • No haga caso, ignore el nombre de la función; enfoca tu tiempo en las personas que quieren aprender.

Tomaría nota de los nombres de los pasantes no profesionales como medida de precaución.

Interesante. En realidad, soy quizás solo 3 o 4 años mayor que los internos, por lo que no me tratan con respeto (aunque tengo mucha más experiencia). El tipo que lo hizo es en realidad una especie de "alfa", por lo que probablemente escribiré el nombre de la función en la pizarra y les preguntaré a los pasantes si creen que es un buen nombre y cómo lo nombrarían mejor. Se anotará el nombre de ese pasante.
@Scramjet Me gusta la idea de la pizarra. Iba a escribir una respuesta donde deberías hacer preguntas ridículas y retóricas para llevar a casa el punto de nomenclatura adecuado. Algo así como Wow! Because of your "clean code" you can convert anything to millimeters?! I'm real curious how you convert 'Hello World' to millimeters!preguntar a los demás qué creen que hace una función en función del nombre definitivamente mostrará la importancia
"Preguntar a los demás qué creen que hace una función basándose en el nombre" xD Me gusta eso.
@Scramjet Creo que parte del problema es que te ven como un compañero y no como una autoridad. Elija un enfoque más agresivo y, sobre todo, HUMEROSO . Está tratando de reírse a tu costa, ríete un poco a su costa.
Estas parecen ideas terribles. Francamente, como no pasante, es el papel de los pasantes ganarse el respeto de la persona que realmente se gana la vida, no al revés. Si el OP pudiera, sugeriría despedir al pasante que cometió el código por comportamiento poco profesional.
Creo que estás confundiendo a un grupo de adultos (sobre los cuales el OP tiene autoridad de gestión) con una manada de lobos...

Como profesional desde hace casi 30 años, diría que las respuestas mejor calificadas en su mayoría tienen razón.

Sin embargo, como desarrollador de software profesional durante casi 30 años, diré que las pautas de codificación casi siempre son demasiado prescriptivas . Peor aún, a menudo esto es aprovechado por personas más preocupadas por su autoridad que por producir código legible. Este tipo de comportamiento pasivo-agresivo de los ingenieros junior es exactamente lo que normalmente se ve cuando eso sucede.

Poner cosas tontas en los comentarios del código, o incluso nombrar identificadores, es realmente una tradición consagrada entre los desarrolladores de software. Aquí hay un ejemplo de nombres de protesta inducidos por estándares de mis propios días de junior (que obtuvo 48 votos a favor).

Si hay un problema aquí, debería ser que hay problemas legítimos de legibilidad/mantenimiento con su código fuente en su entorno. No estoy diciendo que las mejores respuestas aquí sean incorrectas. no lo son Pero cuando ve este tipo de comportamiento de varios ingenieros junior, luego de limpiar los cuerpos, realmente debería investigar si puede haber una razón subyacente por la que sus canarios siguen muriendo .

El objetivo final debe ser la calidad del código. Las pautas de codificación deberían ser solo su herramienta para ayudarlos a llegar allí, creadas por desarrolladores para desarrolladores, no algún tipo de programa autoritario sobre cómo escribir programas.

¿Debo reaccionar por

  • riéndose ("Sí, es divertido, pero por favor quítalo")
  • solo pidiendo cortésmente que eliminen
  • diciendo que no me gusta cuando alguien me hace perder el tiempo y que debería tomarse la revisión del código más en serio

¿Qué tal " Entender por qué hicieron esto? "

Cada vez que alguien hace algo que no esperas o deseas que haga, puedes reaccionar para que haga lo que quieres o puedes tratar de entender por qué hizo exactamente eso.

Puede ser útil entender por qué. Si son juguetones por naturaleza pero no pueden expresar sus frustraciones por algo, así es como alguien puede canalizarlas. Todos podemos estar de acuerdo en que esta no es una forma positiva de canalizarlo.

Un enfoque alternativo

Entonces, ¿cuál es una forma positiva de canalizar la frustración y el juego? He trabajado en empresas donde la gente a veces hacía proyectos el 10 % del tiempo, como programar un microcontrolador para tomar una selfie con una dslr. No solo obtuvieron rienda suelta para hacerlo, sino que se les dio la responsabilidad de convertirlo en un producto que se pueda enviar. Pasó de un hackathon de un día a ejemplos de código que ahora se publican en el sitio web de la empresa. Las personas pueden tomar ese ejemplo y convertirlo en un control remoto para cámaras de aguas profundas que se pueden encender con solo hacer clic en un botón.

Mi punto es que bromas como esta pueden ser una indicación de un potencial sin explotar. Si quieres becarios que se ajusten al estándar que tienes en tu empresa, este potencial no es para ti y en ese caso considera dejarlos ir. Sin embargo, si ve el valor de sacudir las cosas, haga que estos bromistas creen algo útil con sus bromas. En última instancia, depende de usted. ¿Quiénes quieres que sean estos pasantes?

Parece que tiene un muy buen ejemplo para mostrarles por qué usar este tipo de convención de codificación es inapropiado, incluso para proyectos pequeños como este.

lo viste

Incluso si su proyecto no está siendo utilizado directamente por la empresa, está destinado a actuar como una evaluación de su habilidad y, en parte, como una experiencia de aprendizaje para estos pasantes que buscan abrirse camino en su empresa.

No sería demasiado duro con ellos, después de todo, esto es solo una prueba para ellos, pero definitivamente señalaría que, en el futuro, tales prácticas de codificación podrían causarles problemas, especialmente si su próximo jefe no es tan paciente con ellos como tú.

Comenzando por asumir buena fe, mi instinto me dice que los becarios hicieron esto porque realmente no ven ningún problema con nombres como convert. Apostaría una pequeña suma de dinero a que los nombres sarcásticos no provienen de un deseo de rebeldía sino de la frustración de no saber cómo encontrar un nombre mejor , solo un nombre más largo . Y eso es algo así como lo que les dijiste, ¿verdad? Corta mala, larga buena.

Si desea que estas personas mejoren, simplemente necesita discutir, en la reunión diaria, exactamente por qué convert es un nombre pobre y convertInchesToCentimeterses un nombre mejor. Si tiene un ejemplo de su experiencia de mala elección de nombres que causa problemas, eso les ayudará. Ese "por qué" les permitirá elegir buenos nombres a partir de ahora, ya sean esos buenos nombres largos o cortos.

También hágales saber que está bien pedirle ayuda a usted o a sus compañeros o consultar con ellos dentro de lo razonable, que esta no es una prueba en la que todos tienen que trabajar solos, esta es una colaboración. (¡Espero que esto sea cierto!) Tal vez eso les permita hacer preguntas y hablar entre ellos, y resolver las frustraciones temprano, en lugar de esperar a que aparezcan cosas pasivo-agresivas como esta en la revisión del código.

Solo si tal comportamiento continúa, sería necesario explicar, sí, esta no es una aplicación real, pero este ejercicio y las pautas de estilo deben tomarse en serio por múltiples razones:

  • Vale la pena gastar mi tiempo con usted en este esfuerzo, cuando podría estar trabajando en aplicaciones "reales", así que también haga su mejor esfuerzo.
  • Este ejercicio te prepara para trabajar en un proyecto real que es serio y en el que debes seguir pautas de estilo
  • Este ejercicio nos permite decidir a cuál de ustedes, si alguno, extender las ofertas de empleo después de que finalice su pasantía.

Si bien no es exactamente incorrecto, creo que acusarlos de falta de respeto, etc. en este punto probablemente silenciará el comportamiento, pero tampoco los ayudará a comprender por qué necesitan mejores nombres o cómo encontrar mejores nombres. Si tomas este camino, es posible que los encuentres con nombres falsos más largos y evitando tu mirada de acero.

Tampoco soy bueno para nombrar cosas, pero el nombre en el OP es algo que nunca elegiría. Esta respuesta es un escape para los pasantes; están en la universidad y probablemente tengan 20 y tantos años, sabían muy bien lo que estaban haciendo.
+1 por mencionar que bien podría ser que no entendieron el concepto de nombres descriptivos y simplemente entendieron "nombres más largos". Sin embargo, no arroja una luz brillante sobre ellos.

En primer lugar, no creo que esto sea tan malo. Ponen una broma en el código sobre un tema (convenciones de nombres) que probablemente no comprendan por completo. Poner algunas bromas internas en el código no es algo nuevo. Además, pueden considerar el código como una "hoja interna".

Tampoco estoy de acuerdo con la opinión de que te hacen perder el tiempo con esto. Si hacen una confirmación solo para cambiar el nombre de un método, entonces sí, están perdiendo el tiempo y el cambio debe rechazarse. Pero si necesitaban un método nuevo y elegían un nombre deficiente, el tiempo de revisión sería similar con cualquiera de los dos nombres. No sé si está revisando la confirmación previa o la confirmación posterior, pero cuando alguien quiere que se apruebe/fusione el código, lo que está haciendo en realidad va en contra de sí mismo, ya que simplemente está agregando viajes de ida y vuelta para que se acepte el código. .

También es trivial para usted calificar negativamente con nombres incorrectos, sin mirar realmente lo que hace el código. El tema es que te sientes molesto por esos nombres.

Ahora, acercándonos a la pregunta real sobre qué hacer, recomiendo mencionar que tuvieron algunos problemas con las convenciones de nombres y pedirles que revisen el trabajo de la semana pasada para ver si han estado usando nombres propios y pensar si lo entenderían. fácilmente en unos años / si llegaban nuevos a ese proyecto. Pídales que preparen un breve informe sobre las funciones que agregaron en esa semana y que lo justifiquen brevemente.

Idealmente, eso sería alrededor de una línea por función, por ejemplo.

convertGalToml: Convierte galones a mililitros. Camel case no se usó en la abreviatura de mililitros para evitar confusiones con megalitros.

Se espera que mientras revisan el código, puedan notar nuevos problemas o pensar en un nombre mejor, por ejemplo. renombrar convertGalTomla convertGal2ml.

Sospecho que tu bromista entenderá el punto y lo renombrará en silencio.

El punto es que los nombres de las funciones son documentación. Aunque es un público más técnico que por ej. el manual del usuario, deben sentirse cómodos justificando su elección frente a sus compañeros.

Si bien el comportamiento de los pasantes puede ser poco profesional, también es poco profesional que la gerencia no considere que podrían estar equivocados. Claramente convert, puede ser demasiado corto o ambiguo en muchos contextos, pero convertGallonsToMilliliterses demasiado largo para un nombre de identificador. En lugar de imponer requisitos de verbosidad de nombres arbitrarios en todos los ámbitos, debe desafiar a sus pasantes a justificar cuándo un nombre que eligen es realmente ambiguo (lo que no podrán hacer) y encontrar algo razonable que mejore la legibilidad del programa en lugar de obstaculizar eso.

Esto realmente me parece un caso del patrón común de "¿por qué mis subordinados no me respetan?" siendo realmente una cuestión de "¿qué pasa con mi propia actitud que hace que la gente no respete mi posición?"

Las convenciones de nomenclatura son muy subjetivas. En lugar de expresar esta respuesta como "OP, estás equivocado", es posible que desees simplemente centrarte en el hecho de que es un tema subjetivo y que la justificación de cualquiera de los lados y dejar que sugieran algo mejor por su cuenta podría ser un mejor enfoque ( aunque esto ya está cubierto en otras respuestas). Pero cualquiera puede adivinar si OP realmente podría convencerlos de que se ajusten a los estándares de la empresa (al final del día, cualquier empleado debería poder ignorar sus preferencias de estilo individuales si entran en conflicto con los estándares de la empresa).
las convenciones de nomenclatura deben seguir las reglas del proyecto existente.
no le veo nada malo convertGallonsToMilliliters. Tampoco veo nada de malo convertsi se trata de una rutina de conversión de propósito general. Veo mucho mal con, por ejemplo cvtGtoM, cvtGals2Millisy varios otros nombres abreviados. Me gustan los nombres largos y agradables que explican lo que hace una rutina, porque sé por amarga experiencia que el desarrollo ocurre solo una vez, pero el mantenimiento continúa para siempre, y el código que mantiene puede ser el suyo. :-)

No eres su manager, ni siquiera importa que los entrevistes o no. eres ingeniero como yo

Para que sepa qué hacer, hable con su gerente y luego sugiera una revisión del código. Luego aconséjeles que no escriban código como ese a través de un sistema como colaborador de código. Ni siquiera necesita enviarles un correo electrónico o interactuar con ellos o tomar estas cosas personalmente. Introducir un sistema de calificación basado en esa revisión de código. No intente controlarlos o ser su gerente, o intente administrar personas. Eso no es cosa tuya.

Hable con su gerente y conserve ese privilegio para rechazar o aprobar confirmaciones después de una revisión para usted mismo. Suponga que cada pasante tiene 10 puntos iniciales, y debe ganar 100 puntos a través de su calificación, y si realmente quiere unirse a su equipo, estará motivado para obtenerlo. Para no perder ningún punto.

Si yo fuera un pasante y estoy trabajando para usted y usted es solo un ingeniero senior, incluso yo odio si se encarga de la gestión de mi gente. NO es tu trabajo.

Me parece que has ido demasiado lejos y se ha salido de control. Aprende esa lección como ingeniero. Usted es un ingeniero, no su gerente para que las personas los administren.

Las revisiones de código no son gestión de personas. No confundas los dos.
No, nunca quise que la gente se administrara a través de revisiones de código. De la pregunta de OP, mencionó que está ayudando a los pasantes y se involucra con las revisiones de código. Así que esto no tiene nada que ver con la gestión de personas. Esta no es la forma correcta de hacer una revisión de código. Argumento firmemente que esta pregunta sobre cómo hacer una revisión de código adecuada tampoco pertenece aquí.
Las revisiones de código no son gestión de personas. No confundas los dos. cual es mi punto Entonces, ¿por qué votos negativos?
Está diciendo que el OP no debería administrar a nadie, pero al mismo tiempo le está diciendo que configure un sistema de revisión de desempeño gamificado. Pero supongo que la principal razón por la que recibe votos negativos es la sugerencia cuestionable de que un perfil técnico no puede o no debe administrar.
Es una sugerencia válida, los gerentes de recursos humanos deben manejar la gestión de personas si es necesario.