Qué hacer cuando su compañero de trabajo no entiende el diseño que intenta mantenerse [cerrado]

8

Un proyecto de software en el que estoy trabajando me involucra a mí y a otro programador. El proyecto involucró un motor de backend con un MVC front end. Inicialmente hice mucho trabajo en el proyecto y, por lo tanto, configuré algunas metodologías de diseño simples, principalmente sobre abstracción y estrategia de plantilla.

Durante bastante tiempo he estado fuera del motor y trabajando en el sitio web. Sin embargo, todavía he mantenido un interés en el motor, ya que me informaron que podría volver a utilizarlo en algún momento.

El proyecto se encuentra dentro de un plazo muy ajustado, por lo que todos estamos apresurados para terminarlo tanto en la parte delantera como en la trasera.

No me considero un gran programador y, por lo tanto, nunca trato de imponer un diseño particular o un conjunto de metodologías en las personas, ya que no siempre estoy seguro de tener razón y me gusta que otras personas ofrezcan sus opiniones para intentar proponer mejores soluciones. Sin embargo, he notado cambios en este código del motor que realmente me está molestando. Cuando me enfrenté al desarrollador para sugerirle que hiciera el trabajo de otra manera, dijo que no veía el punto ya que parecía haber poco beneficio teniendo en cuenta los plazos ajustados.

Tuve que tratar de explicar que el truco que había puesto podría significar un mayor desarrollo después del lanzamiento y no pensé que fuera justo hacer que otros recogieran la holgura cuando pudiéramos solucionarlo ahora. Pasé unos 30 minutos repasando lo que había hecho y al final me pidió que escribiera el código para poder copiarlo.

La base de lo que inicialmente había configurado fue:

  • Una clase abstracta x
  • Una clase abstracta de fábrica para crear instancias concretas de x

Lo que sucedió fue que había puesto un par de afirmaciones que podrían haberse puesto fácilmente como métodos virtuales / abstractos en la clase abstracta y luego implementadas en consecuencia, ya que el nuevo cambio seguía el mismo principio de otros métodos en la clase abstracta.

Esto me parece trivial, sin embargo, ni siquiera podía comprenderlo incluso cuando le mostré las clases involucradas.

Ahora mi pregunta es:

  1. ¿Es injusto suponer que debería haber captado este concepto? Me doy cuenta de que tenemos plazos ajustados, pero pensé que era trivial. Se supone que el programador es al menos un nivel intermedio.
  2. Esto ha sucedido en varios lugares y siempre he tratado de hacer que cambie, pero parece que no. ¿Debería ignorarlo?
  3. Debería plantear este problema en otro lugar, o simplemente chuparlo y cuando vuelva a ponerme en el proyecto, simplemente cambiaré todas estas cosas.

Su parte del proyecto no va a estar terminada, por lo que tendré que volver a ayudarlo. Realmente no quiero también, ya que ha tomado un proyecto con una arquitectura no muy buena, pero está bien y realmente ha puesto un montón de código desordenado que con mucha frecuencia no siguió lo que se intentaba lograr.

Si la pregunta es demasiado vaga o desvergonzada, avíseme e intentaré editar en consecuencia.

EDITADO: Se espera que el proyecto continúe después de la fecha límite inicial ya que ya hay trabajo de seguimiento planificado y trabajo que no encajamos y que se acordó implementar más adelante.

dreza
fuente
No estás solo ... A veces quiero compartir un nuevo diseño que he visto y termino teniendo que explicarlo en términos simples ... Ya no es tan emocionante.
wleao
No me importaría si él como programador junior, pero se le ha dado una parte muy importante del proyecto, ya que se supone que es un nivel intermedio. He intentado varias veces tener discusiones sobre el diseño, por qué hicimos algo, pero él solo me mira fijamente. Simplemente no estoy seguro de lo que puedo hacer para proceder desde aquí realmente.
dreza
¿Esto está afectando tu trabajo? ¿El resultado del proyecto? ¿Este proyecto tiene un cliente? ¿Un jefe? Si las respuestas a todas esas preguntas fueran Sí Sí Sí Sí ... Entonces debería comenzar a pensar en discutirlo con su colega y su jefe.
wleao
44
Estoy votando para cerrar esta pregunta como fuera de tema porque no se trata de programación, se trata de interactuar con personas en el lugar de trabajo.
Ixrec
1
Yo iría con productos para ganado ... pero creo que en el lugar de trabajo. SE consideraría esa mala práctica.
James Snell

Respuestas:

9

Desde la supervisión de más de 200 desarrolladores en los últimos 25 años, creo que la proporción de desarrolladores que se sienten intuitivamente cómodos con el tipo de abstracciones de diseño de las que está hablando es algo así como un tercio. Mi enfoque ha evolucionado desde esperar arreglar esto con coaching, entrenamiento y estímulo, hasta seguir trabajando en el coaching, etc., pero reconociendo que esta comodidad tiene una calidad innata y que a menudo no se puede cambiar. Me preguntaste si es justo. Creo que lo que no es justo es que su gerencia espere que un miembro del equipo de desarrollo asuma la responsabilidad de esta tensión y el impacto de la misma. Si tienes un líder cerca, intenta explicarles la tensión en SUS términos, no en los tuyos. No se trata del otro desarrollador, se trata de la eficiencia, impacto y riesgo futuros = resultado final y, por lo tanto, una clara responsabilidad de gestión. Busque soluciones organizacionales que exploten sus habilidades relevantes. ¿Puedes asumir más trabajo de orientación de diseño y el otro tipo hace más del acabado? No asuma que todos los desarrolladores no desearían este papel; a muchos desarrolladores les encanta ser buenos para terminar cosas para satisfacer a los clientes rápidamente, y están agradecidos por el hecho de que otra persona proporcione un entorno de diseño de calidad.

pete howard
fuente
Saludos pete. Simplemente supongo que todos los desarrolladores querrían estar interesados ​​en el diseño y los conceptos y la refactorización para mejorar algo, etc. Supongo que tengo que aprender que hay todos los tipos disponibles y es cuestión de encontrar el adecuado para cada uno y tratar con ese.
dreza
Te daría otro + para la última oración si pudiera.
mattnz
4

A veces no es el concepto, sino el tiempo necesario para asimilarlo. Las personas no obtienen las cosas cuando alguien se las explica rápidamente, pero les da tiempo para buscar las melodías y luego lo conseguirán. A veces toma un poco de tiempo para que el concepto se hunda.

Entiendo que los plazos eran ajustados, y el conocimiento es limitado, lo que puede haber tenido un mayor impacto de lo que quisiera, pero en este caso (y hago suposiciones aquí), ¿lo señaló en un documento de patrón de diseño de fábrica , o lo hizo? solo espera que él entienda tu código agitándolo debajo de su nariz gritando "simplemente no lo entiendes hombre, simplemente no lo entiendes" :)

Incluso podría haber hecho lo mismo: mostrar el código a las personas, esperar que lo comprendan instantáneamente, frustrarse cuando se ven en blanco, ampliarlo en un vano intento de hacer que entiendan, enojarse cuando se confunden aún más, y luego o los apartaré del camino y lo haré yo mismo o me pedirán que me vaya y lo haga yo mismo si soy tan listo. Lo cual es una reacción comprensible a mis pobres intentos como maestra.

gbjbaanb
fuente
Para ser justos, eso es lo que hice. Tal vez supuse que esto sería fácil de aprender. Será tal vez ir a través de algunos de éstos con él y ver si él está dispuesto a leer sobre él
dreza
3

Las clases abstractas, las fábricas de clase, no me malinterpretan, pero suena como una artillería para matar un pájaro. Los patrones están ahí para resolver problemas, no para crearlos. Admitiste que el proyecto es de 2 personas.

Sin embargo, lo que su colega está haciendo mal es que no está siguiendo las pautas. Causará un poco de desorden aguas abajo. Si el proyecto se abstrae de todas las formas, entonces debería intentar seguirlo.

Descifrador
fuente
Supongo que es un proyecto de dos personas. Estoy trabajando en la interfaz de usuario web con otra persona, así que supongo que son 3 personas, pero esa en particular solo fuimos nosotros dos.
dreza
@dreza: De todos modos, trate de encontrar buenos argumentos de por qué el proyecto se hace de la manera en que se hace. Intente alimentar la idea de que la coherencia y la arquitectura indivisa ayudarán al mantenimiento y la extensibilidad. Intenta darle estas ideas a tu compañero de trabajo. Además, tal vez tenga problemas para comprender algunos de los conceptos, en ese caso, trate de encontrar ejemplos simples y concretos que muestren dónde realmente puede obtener algo con el enfoque que ha elegido. Debe probar que no se hace trabajo extra en vano para que su compañero de trabajo lo acepte sin resistencia.
Codificador
aplausos codificador. Pensé que tal vez no estaba transmitiendo los beneficios lo suficiente, pero luché para llegar a una cosa más simple que lo que estaba haciendo. Sin embargo
seguirá
1

No querías forzar el patrón sobre él desde el principio, pero podrías haber tenido una breve discusión sobre algunas de las cosas que hiciste. Bajo las limitaciones de tiempo, dudo que sea capaz de comprender su concepto lo suficiente como para poder implementarlo tan rápido como su 'pirateo'. Desea que él arregle las cosas ahora para evitar que otra persona / usted tenga que arreglarlas más tarde, pero el proyecto no se realizará a tiempo. O no entiende lo que estabas haciendo o siente que tomará demasiado tiempo y no vale la pena arriesgarse a retrasarse.

Hágale saber cuándo se puede completar el proyecto y plantee preocupaciones sobre estas limitaciones en el futuro y la necesidad de tiempo adicional. Tendrá dificultades para que todos lo vean a su manera si el cliente está satisfecho. Puede que no sea correcto, pero es la realidad.

JeffO
fuente
Pensé en plantear estas inquietudes después del hecho, pero pensé que era tan pequeño que podría intentar explicárselo y él simplemente lo haría. No me di cuenta de que hacer un método abstracto y anularlo era una tarea de programación tan completa.
dreza
@Dreza - ¿Este colega trabajó más tiempo en esta empresa que tú?
Ramhound
No, he trabajado 1 mes más. Los dos estábamos empleados en este proyecto así sucesivamente empezando Yo había asumido que eran de igual categoría, etc
dreza
1

Probablemente no sea un problema técnico, definitivamente no es un problema de programación. Suena como nada más que el debate tradicional de "programación para el futuro posible frente al cumplimiento de los plazos de hoy", que es un caso específico de "No me gusta la forma en que el otro hace su trabajo, quiero que lo haga a mi manera ". Ocurre todos los días en cada lugar de trabajo con más de 1 miembro del personal.

Sus habilidades de gerencia y vendedor serán más importantes que cualquier superioirty técnico en su diseño si quiere "ganar" este.

Sugiero leer libros como "Cómo ganar amigos e influir en las personas" y "De qué color eres paracaidista" y libros de habilidades de otras personas.

Mattnz
fuente
La mayoría de las prácticas dadas en la pregunta no son alternativas más lentas a las que existen hoy. Esto es principalmente una cuestión de colocar el código en el lugar correcto, no en uno radom. Entonces no, esto no es una «programación para el futuro posible vs cumplir con los plazos de hoy». De todos modos, justo sobre el libro de habilidades de las personas.
deadalnix