traduccion tools the francais examples collaboration

tools - collaboration traduccion



¿Qué hacer con los desarrolladores estrella que no documentan su trabajo? (30)

Hay un colega que realmente sabe lo que hace, es uno de los más brillantes con los que he trabajado, pero él:

  • trabaja en su propia pequeña área de su directorio de inicio en lugar de en el repositorio común de CVS
  • no documenta su código
  • no comenta su código, por ejemplo, 3.500 SLOC de C sin comentarios y sin líneas en blanco para separar las cosas
  • a menudo complica mucho las cosas, por ejemplo, utiliza tres scripts de shell que se llaman entre sí para hacer el trabajo que un simple script de shell podría hacer.

Quizás esta sea posiblemente una de esas personas que piensa "si soy la única persona que sabe esto, no pueden deshacerse de mí"?

¿Alguna sugerencia sobre qué hacer?

Por cierto, la gerencia sabe acerca de la situación y está tratando de cambiar las cosas.


"Hola desarrollador estrella,

Solo un pequeño aviso informal para decirle que a partir de la próxima semana, necesitaremos documentación del código y comentarios útiles en el código: será la política de la empresa y no habrá excepciones ".

A partir de ese momento, solo tendrá que lidiar con esa falla de la misma manera que trataría con no presentarse a tiempo, no dejar de hacer el tonto durante el trabajo, etc. En pocas palabras, si el jefe dice el documento, usted documenta o usted " No estoy haciendo tu trabajo correctamente.


¡En mi opinión, alguien que hace cosas tan estúpidas como las descritas anteriormente no puede ser un desarrollador estrella! Para mí, parece que intencionalmente hace las cosas más complicadas, para que nadie más que él pueda mantener el código. ¡Esto se hace más importante de lo que realmente es! Hablale. ¡Él tiene que cambiarlo! ¡Si no lo hace, reemplácelo por un verdadero desarrollador estelar!

Te lo prometo, ¡incluso en medio año no sabrá cómo funciona su propio código! Despídelo y podrás ahorrar mucho tiempo y dinero.


¿Hablale?

Si él es realmente un "desarrollador estrella", tomará nota de lo que dices.

Puede que no lo cambie de la noche a la mañana, pero podría ser que no está completamente consciente de que otras personas no lo entienden como él.

Editar:

Probablemente sea un poco tarde para cambiar ahora, pero se necesita más información para encontrar una solución. Es imposible que alguien aquí sugiera dejar ir al tipo solo en base a estos puntos. Si le has estado diciendo al chico todos los días durante el último año que necesita cambiar o que está fuera de aquí, entonces puedes dejarlo ir. Sin embargo, no veo evidencia de eso.

A un desarrollador brillante se le puede enseñar a usar control de fuente, comentario y documento. Si gastas el esfuerzo aquí, entonces realmente tendrás un desarrollador estrella.


¿Puede el equipo tener éxito sin él? Si es así, presiona el problema y rechaza aceptar cualquier código que no esté debidamente documentado o que no cumpla con otros estándares. Afortunadamente, esto hará entender el asunto, pero podría enojarlo y provocar que se rinda. Si el equipo no puede tener éxito sin él, entonces no tendrás suerte hasta que puedas entrenar a un reemplazo hasta su nivel de habilidad, que quizás no valga la pena el tiempo y el esfuerzo.


¿Tratando de cambiar las cosas? ¿Qué prefieres, una pieza de software de trabajo mal documentada o una basura bien documentada? Algunas personas son capaces de escribir software que requiere pocos o ningún comentario, que no es un indicador confiable de calidad.

Me temo que perderás un buen desarrollador.


+1 a ocdecio: si es un desarrollador estrella, entonces su código debe basarse en un diseño de tan alta calidad que se documente.

Una vez dicho esto, la frustración podría ser que, aunque es excelente en áreas técnicamente exigentes que le resultan interesantes, no se entromete con la entrega de funciones, solo usted sabrá si esto es un problema para su organización.

Tener un "gurú" disponible puede ser un salvavidas absoluto, o al menos solía serlo, o lo hizo redundante.


Creo que esto es bastante típico en cualquier entorno. ¿Cómo logras que alguien haga lo que quieres? Esto es exactamente lo que se trata de "Cómo ganar amigos e influenciar a las personas". Dale Carnegie no era sobre manipulación, sino sobre personas.

A mí me parece que no tiene experiencia y necesita algo de experiencia y orientación.

¿Crees que puedes sentarte y hablar con él sobre estos temas? Decirle a alguien que está haciendo algo mal a menudo parece ser algo equivocado (especialmente en la sociedad occidental de hoy en día donde no queremos herir los sentimientos de otras personas) pero creo que puedes llegar muy lejos explicando con calma y honestidad los problemas y hablando a través de ellos. Ayuda si la persona te respeta a ti y a tu opinión, que es un tema completamente diferente y del que se habla en el libro mencionado anteriormente. Asegúrese de que entienda que estos son problemas serios. Además, que en cualquier trabajo de desarrollo futuro se espera que él haga estas cosas también, por lo que es una buena idea practicarlos ahora.

No creo que esperar hasta la próxima revisión de desempeño sea una buena idea. Obtener una cantidad de comentarios negativos y entregarlo todo de una sola vez es solo una mala idea y realmente no me gustó cuando me lo hicieron.


En mi opinión, debes dejar a este tipo. Parece que su código es ilegible y definitivamente no es un equipo ni un jugador seguro.

También es una muy mala práctica permitir que alguien se vea a sí mismo como indispensable. Si lo dejas seguir así, sus prácticas empeorarán, no mejorarán. Cuando él se va, para todos, te quedará con un enorme dolor de cabeza de código enredado. Necesita cortar sus pérdidas ahora si él no se adapta.

Finalmente, mantener a este desarrollador sin reiniciarlo es un ejemplo pobre de los desarrolladores junior. Si los obligas a trabajar correctamente, te arriesgas a resentirte por la multitud de "por qué él y no yo". Si no lo haces, obtienes un montón de hacks que funcionan como tu "estrella".

En resumen, a menos que se adapte muy, muy rápido, es hora de dejarlo, por la salud y cordura de todo su personal de desarrollo.


Es el hombre realmente una estrella de rock? ¿Seriamente? Piensa en ello un segundo. ¿Es inteligente, pero no hace las cosas, o es inteligente y capaz de hacer las cosas?

Piénsalo realmente difícil.

Si él realmente es una estrella de rock, entonces tal vez no deberías meterse con él. Está produciendo cosas increíbles usando su propio proceso. El hecho de que haya una forma diferente de hacer las cosas que mejor funcionan para usted, no significa que eso le permita realizar su mejor trabajo. En lugar de tratar de obligarlo a inclinarse a su proceso, lo que podría matar a todos sus extravagancias, debería intentar encontrar la forma de adaptarse a la forma en que trabaja.

Si realmente es tan bueno como dices, no deberías molestarte en hacerlo. Si no vale la pena el esfuerzo para hacer eso, entonces él realmente no es tan bueno. En ese caso, no tienes una estrella de rock, solo tienes un programador mediocre al que no le gusta jugar, son las reglas. Esos chicos, deberían deshacerse de ellos. Sin embargo, una estrella de rock temperamental suele valer la pena por la calidad de lo que puede producir. Esas personas, debes hacer todo lo posible para mantenerlas.


Es muy poco probable que la gerencia se deshaga de él si es realmente brillante.

El proyecto completo puede estar cerrado, por supuesto, pero de todos modos no habrá uso en CVS y documentación.

Ninguna gerencia despedirá a un buen programador solo para contratar uno malo.

Dígale que le ayudará a deshacerse de la administración cuando quiera.

¿Qué es lo que quiere cambiar de trabajo? Le puede decir a la gerencia: "Está bien, gente, todo es como usted me lo pidió: facturado, documentado y bajo su control. He terminado con mi parte, empaco y me voy".


Es posible que se esté enfocando en el área incorrecta aquí, se le brinda la oportunidad de ver algunas debilidades en su proceso.

  • trabaja en su propia pequeña área de su directorio de inicio en lugar de en el repositorio común de CVS

En este caso, bastará con una conversación simple, los beneficios del control de versiones hablan por sí solos y cualquier persona "inteligente" probablemente se entusiasme con esos beneficios. Sin embargo, también puede ser una buena oportunidad para buscar sistemas alternativos de control de versiones que permitan una mayor facilidad de uso y flexibilidad (eche un vistazo a bzr y git). Mejor aún, involucrarlo en el proceso de selección, si realmente es una "estrella", probablemente tendrá una buena participación y estará más capacitado en su uso.

  • no documenta su código

No parece que la documentación sea parte de su proceso. La gente se va a resistir a tener que hacer un trabajo extra y si no hay un proceso definido, entonces está hablando de mucho trabajo adicional. ¿La documentación es realmente necesaria? Si es así, ¿hay un proceso definido para crearlo? ¿Debería tener a alguien completamente dedicado a eso? ¿Debería al menos tener una herramienta para facilitarlo (tal vez algo tan simple como mediawiki)?

  • no comenta su código, por ejemplo, 3.500 SLOC de C sin comentarios y sin líneas en blanco para recoger las cosas

Tres palabras: revisión del código de pares. Aparte de los obvios beneficios de captura de errores, esto también puede proporcionar cierta presión de grupo, que es una fuerza poderosa y puede ser algo bueno. Querer ser percibido bien por sus compañeros genera auto propiedad y calidad.

  • a menudo complica mucho las cosas, por ejemplo, utiliza tres scripts de shell que se llaman entre sí para hacer el trabajo que un simple script de shell podría hacer.

Nuevamente, revisión del código de pares. Usted menciona que la gerencia conoce las deficiencias de este programador. ¿El? Para las personas es bastante difícil cambiar y mejorar si no reconocen los problemas con la forma en que hacen las cosas.

Y, quizás lo mejor de todo, al idear planes para mejorar su proceso de desarrollo (que probablemente mejorará no solo a su "estrella" sino a todos los demás en el equipo), es probable que pueda obtener algunas estrellas de oro de la gerencia.


Eso suena como una situación difícil.

Personalmente, lo dejaría ir. Puede ser un desarrollador estrella, pero no es un jugador de equipo. Y necesita tener un equipo cohesionado que pueda trabajar en conjunto si quiere hacer un buen producto.


Esta pregunta me pone nervioso, porque aunque la persona que describes suena atroz, puedo ver un poco de mí mismo en él.

Creo que soy un buen jugador de equipo, y tengo la suerte de estar en un muy buen equipo. Sin embargo, uso métodos que mis colegas no entienden, aunque intenté explicarlos. Simplemente existe una gran brecha en la experiencia, que no es un reflejo de ninguno de nosotros.

La documentación es un tema amplio y complicado. Intento seguir la máxima DRY (no repetirme). La documentación que está separada del código puede equivaler a repetirse, por lo que es probable que se desactualice a menos que disminuya la velocidad para mantenerla actualizada. Mi enfoque habitual es retocarlo después.

A menudo, el problema en el que estoy trabajando es tan complicado que puedo avanzar en el plan y documentar todo lo que quiero, pero cuando se trata del código, a menudo descubro que estaba equivocado y tengo que volver a pensarlo. Así que la idea de que se puedan documentar cosas por adelantado, y simplemente seguir eso, solo funciona para problemas bastante simples, me parece a mí.

De todos modos, creo que esta es una excelente pregunta, y la respuesta no es para nada simple.


Estoy de acuerdo con la mayoría de la gente en este hilo. Una forma de ponerlo en el punto caliente es tener revisiones del código del equipo.

Para la primera reunión de revisión de código, elija el código de un miembro del equipo que esté abierto y acepte las recomendaciones. El desarrollador "estrella" tendrá la oportunidad de ver cómo funciona la revisión del código y luego puede programar que su código sea revisado a continuación. Dale un poco de tiempo para prepararse para la próxima reunión y para entonces debería al menos comentar su código.

La intención de las revisiones de código no es avergonzar a las personas, sino más bien identificar en colaboración los problemas y los lugares para mejorar, pero será una buena manera de poner al desarrollador estrella en la silla caliente.


Hay más por ser un desarrollador estrella que simplemente ser un excelente programador. Si no tiene habilidades de equipo y está deliberadamente ignorando los estándares del equipo, es necesario que se lo plantee. Si se niega a cumplir con ellos después de hablar con la gerencia, tal vez no sea el adecuado para su empresa.


Hay mucha gente aquí en "sin comentarios, ¿y qué?" carro de la banda aquí. El código alfabetizado sin comentarios es perfectamente posible, pero el hecho de que alguien sea inteligente y no haga comentarios no significa necesariamente que esté escribiendo un código alfabetizado.

Entonces, aclaremos. Usted ya dijo que no documenta su código en absoluto, ya sea en comentarios o en documentos separados, y que no usa ningún control de fuente. Qué tal si:

  • ¿Es comprensible su código a pesar de la falta de comentarios?
  • ¿Su equipo utiliza algún tipo de seguimiento de problemas (por ejemplo, FogBugz, Bugzilla, etc.) en el que participa?
  • ¿Está su código bajo prueba?
  • ¿Hay alguien más en el equipo que esté al menos familiarizado con el funcionamiento de su código?
  • ¿Está dispuesto, al menos, a reconocer que podría soportar cambios en la forma en que trabaja con el resto del equipo?

Si la respuesta a todas estas preguntas es "no", tienes un gran problema. Simplemente ser inteligente no necesariamente hace que alguien sea un activo. ¿Tiene alguna garantía de que no abandonará su empresa mañana o será atropellado por un autobús? ¿Qué tan jodido estarías si eso sucediera? Vale la pena el riesgo?


Juega el boceto de policía malo / policía buena que has visto en las películas. Deje que la administración sea el policía malo y usted sea el policía bueno. Deje que la gerencia le pida documentación sobre-matar y copias de seguridad ZIP por minuto de su trabajo. Pero le ofrece documentación moderada (por ejemplo, doxygen) y registros de control de fuente habituales ...


La documentación del código está sobrevalorada. La capacitación CVS es fácil.

Una buena clase debería revelar su propósito a través de sus métodos y propiedades.

Documentar el modelo fuera de la aplicación también es más fácil de fluir y comprender.

Me gustaría llamar su atención, si no puede resolverlo parece que va a perder un desarrollador estrella.

Editar: Vaya, utilicé CSV en lugar de CVS, para muchas importaciones y uso svn heh.


La parte CVS es fácil: una falla "accidental" en el disco duro le enseñará una lección para toda la vida (asegúrese de tener una copia de seguridad para que no pierda el código)


No documentar es una (muy mala) forma de garantizar la seguridad laboral.

Puedes hacer varias cosas para contrarrestar esto:

  • agregue documentación como requisito para las revisiones de desempeño personal.
  • no acepte software que no esté documentado.
  • hablar con el desarrollador y descubrir por qué no documenta.
  • Compre una herramienta de documentación genial.

No me parece mucho un programador estrella. Todos los buenos programadores saben que el formato de los códigos y el uso de los asuntos de control de fuentes. Parece que a pesar de que hace un buen progreso por sí mismo, está obstruyendo el progreso de los otros miembros del equipo, lo que podría tener un efecto neto negativo en el trabajo realizado. Habla con él, y si se niega a cambiar sus prácticas, déjalo ir.


No permita que el código se publique hasta que haya pasado la revisión del código y solo permita que pase si hay suficientes comentarios y / o documentación para el código que ha escrito para la característica / proyecto actual.

Editar Hazlo subir en su evaluación. Se le puede proporcionar un código de documentación / comentario para sus "Áreas de mejora".

:-)


Par de programación. Encuentra un par de hima que lo "complete" para los requisitos que acabas de enumerar. Resolverás un problema con el control de la fuente, la documentación, la pregunta cada una de sus acciones, etc. También entrenas a otro chico usando la fuerza del primer tipo


Según lo que describes, este tipo claramente no es un desarrollador estrella. La programación es un deporte de equipo, y aquellos que no juegan bien con los demás no agregan mucho valor a un proyecto.

Personalmente, puede que no recuerde el código que escribí hace 6 meses o más, y valoro mucho el historial de los cambios en algún tipo de control de código fuente.

Si tuvieras revisiones de código regulares con este tipo, creo que verías que no es tan estelar de desarrollador como crees que es.


Si él está trabajando así, no es un desarrollador estrella: los grandes desarrolladores de software entienden que el mantenimiento es extremadamente importante. Probablemente pague caro por esto a la larga, sería muy directo con él sobre lo serio que es esto y lo dejaré ir si no puede comenzar a adaptarse. Lo he visto muchas veces antes y es una bomba de relojería.

Para ser honesto, he visto muchos desarrolladores como este y, a menos que terminen la escuela, no cambiarán. Digo corte su lossless ahora, solo va a ser más difícil despedirlo mientras sigue arrojando más código inmanejable :)


Si él realmente es tan brillante y no puedes cambiar sus formas, ni quieres perderlo, pero aún deseas que tu código sea documentado y comentado, entonces mi sugerencia sería dejar que un desarrollador menos experimentado documente y comente por él. Personalmente, si fuera un desarrollador estrella, me sentiría como una tonta si se hiciera que alguien más comenten mi código y eventualmente comenzaría a hacerlo. Mientras tanto, mientras eso no ocurra, el desarrollador menos experimentado puede aprender una o dos cosas.


También podría agregar controles automáticos de calidad que evitarían que ingrese su código hasta que esté suficientemente documentado.

¡Eso es si puedes persuadirlo para que se registre en primer lugar! (Que es ESENCIAL, imo)


Tuvimos un problema similar cuando comencé mi trabajo actual hace poco más de 3 años, nuestro desarrollador principal era un vaquero. Era muy inteligente, pero muy errático, algunas de sus cosas estaban muy bien documentadas, pero era demasiado complicado de mantener, o código primero y descubrir lo que estaba construyendo más tarde, arrojaría el código para ver qué sucedería.

Se fue hace aproximadamente dos años y medio, y todavía nos atormenta cuando encontramos algunos de sus códigos anteriores, y en su defensa así es como funcionaba la tienda de desarrollo aquí en los últimos 3 años, he estado en una cruzada para cambiar esa mentalidad.

Cuando te conviertes en un desarrollador estrella, deja de preocuparte tanto por lo bien que conoces el sistema, el código, el marco, la arquitectura, etc. y más acerca de

  1. Escribir un código elegante, fácil de mantener, flexible y legible
  2. Trabajando con el resto del equipo: usando control de fuente, dando ejemplo, etc.
  3. Documentando lo que cada método, clase, objeto, etc. está haciendo
  4. Investigando nuevas y mejores formas de hacer las cosas por ti y tu equipo

si no sigues los cuatro en algún nivel, no eres un desarrollador estrella, más aún si te niegas a probar / aprender a utilizarlos, entonces es hora de que encuentres otras oportunidades de empleo de una forma u otra, escuché que el artista muerto de hambre es popular con este momento de persona (todo el genio malentendido)


Suena como un programador estrella que está aburrido de su trabajo y está complicando las cosas para que sea más un desafío. Él encontrará algo mejor pronto.


  1. Haz que use herramientas automatizadas de verificación de ejecución. (Consulte mi respuesta en " ¿Cómo hacer preguntas a un obstrugador? ")

  2. Si sobrecomplica y no utiliza SCC, no es un excelente desarrollador: estas cosas son partes importantes de la ingeniería de software.

  3. En el muy improbable caso de que tenga un brillo irremplazable en áreas como los algoritmos, asignarlo a trabajar en esa área, por ejemplo, definir algoritmos, y obtener un programador real para hacer la codificación.

  4. Use un código de análisis estático para comprender y limpiar su código.