Tratar con un defecto de diseño fundamental cuando eres nuevo en el proyecto [cerrado]

13

Acabo de comenzar a trabajar en un proyecto de código abierto con alrededor de 30 desarrolladores. Estoy trabajando para corregir algunos de los errores como una forma de entrar en el "bucle" y convertirme en un encargado habitual del proyecto. El problema es que creo que he descubierto una falla de diseño fundamental que está causando uno de los errores en los que estoy trabajando. Pero siento que si exploto esto en la lista de correo, voy a parecer arrogante, y algunas de las discusiones que he tenido sobre el tema están chocando con algunas de las personas. ¿Cómo debo hacer esto?

Matt Phillips
fuente

Respuestas:

20

Incluso si está bastante seguro de que se trata de un "defecto de diseño fundamental", recuerde que es un extraño. Podría estar allí por una buena razón. O, dependiendo de la antigüedad del proyecto, podría haber sido puesto allí por lo que fue una buena razón en ese momento y ahora todavía existe por razones históricas.

En lugar de "incluir esto en la lista de correo", intente hacer una pregunta. Algo como:

"Oye, acabo de encontrarme con X, y no tiene ningún sentido para mí. Parece que la forma correcta de implementar esto sería Y, pero de nuevo sé que soy nuevo aquí y no quiero salte a alguna conclusión. ¿Es esto un error en el diseño, o hay algo que me falta? ¿Alguien puede informarme? Gracias ".

La ingeniería es uno de los pocos lugares en el mundo donde la humildad todavía se considera una virtud genuina, y hacer preguntas sobre "problemas obvios" de esta manera es una muy buena manera de obtener buenas respuestas y aprender cosas nuevas.

Mason Wheeler
fuente
2
Esto definitivamente está en la dirección correcta. Solo quiero hacerlo de una manera que no salga como "Sé que estás equivocado y tengo razón" y aún así sacar algo de eso.
Matt Phillips el
@Matt: Luego, dígalo como "No sé si estoy en lo cierto" y haga todo lo posible para evitar que suene sarcástico o acusatorio.
Mason Wheeler
Usaría algo como "No entiendo por qué esto se hace de esta manera. ¿No sería mejor / más fácil / más fresco hacerlo de otra manera? Creo que también ayudaría con el error XX"
Javier
2
Creo que es posible que desee jugar un poco con la redacción en lugar de decir directamente "la forma correcta de implementar esto sería Y". Convirtiéndolo en una pregunta pura "¿hay alguna razón por la cual no se usa Y" se obtiene el mismo punto sin poner el pie en el suelo? Cualquier persona tendrá un ego algo frágil cuando se le pregunte acerca de su propio código y al recurrir a su experiencia (por qué eligió X en lugar de Y) en lugar de desafiarlo (Y es / parece / se siente mejor / más genial / más fácil que X) puede provocar una respuesta más favorable.
Steven
6

Una de las 48 leyes del poder :

Gana a través de tus acciones, nunca a través de argumentos

Cualquier triunfo momentáneo que creas que obtuviste mediante una discusión es realmente una victoria pírrica: el resentimiento y la mala voluntad que despertarás es más fuerte y dura más que cualquier cambio de opinión momentáneo. Es mucho más poderoso lograr que otros estén de acuerdo contigo a través de tus acciones, sin decir una palabra. Demuestre, no explique.

Este es uno que aprendí por las malas después de muchos argumentos sin sentido.

En este caso en particular, recomendaría crear un código muy simple y específico que debería funcionar pero que no funcionará debido a este defecto de diseño. Como dice el viejo refrán, "No se puede discutir con el compilador / intérprete".

La otra cosa es que para tener influencia sobre un grupo, debes ser percibido como un miembro del grupo . Aunque te hayas unido a la empresa, la gente aún no te percibe como miembro del grupo. Por lo tanto, podría ser mejor seguir el grupo establecido hasta que aprendan a percibirte como uno de ellos.

Jason Baker
fuente
5

¿Podría preguntar por qué se utilizó un diseño en particular? De esa manera, puede obtener más de la historia de fondo, ya que puede haber algunas buenas razones por las que se eligió algo que no conoce. Me gustaría pensar que usted no es el experto que puede separar el diseño, pero preguntar puede ser una forma de aprender más para que eventualmente pueda preguntar sobre el defecto que encontró para que el mensaje no se vea. como cebo de llama o trolling.

JB King
fuente
4

Probablemente no te guste esto ... pero, aquí va ...

Estoy trabajando para corregir algunos de los errores como una forma de entrar en el "bucle" y convertirme en un encargado habitual del proyecto. El problema es que creo que he descubierto una falla de diseño fundamental que está causando uno de los errores en los que estoy trabajando.

No, no lo hiciste. Si lo hicieras, no dudarías tanto en ello. El hecho de que usted mismo no esté seguro acerca del "defecto fundamental del diseño" significa que no ha descubierto uno. Al tratar de señalar el error de otra persona, no te compra amigos para usar superlativos (como "fundamental").

Lo que puede haber descubierto es un diseño ligeramente mejor, para el problema que está teniendo. Sin embargo, probablemente deberías probarlo a fondo, ya que eres nuevo en el proyecto, hay una posibilidad mejor que incluso de que no tengas idea de lo que estás hablando.

Pero siento que si exploto esto en la lista de correo, voy a salir arrogante

Llamarlo un "defecto de diseño fundamental" definitivamente se considerará arrogante. Para el caso, incluso señalar que puede ser un error no es la mejor idea. Si no sabe con certeza (y puede respaldarlo) que es un problema, entonces debe hacer preguntas e investigar humildemente hasta que lo entienda completamente . Mejor que a quien sea que estés tratando de convencer.

... y algunas de las discusiones que he tenido sobre el tema están en conflicto con algunas de las personas. ¿Cómo debo hacer esto?

Detener. Este no es un problema moral, y no está matando a nadie (supongo). Si tiene la intención de ser un miembro a largo plazo del proyecto, primero debe ganarse la confianza antes de interrogarlos. Arregle los errores, haga un trabajo increíble (según las métricas que el grupo valore), diseñe algunas características y gane un asiento en la mesa.

Luego, sin señalar con el dedo ni llamar a nada roto, presenta humildemente una sugerencia para mejorar el diseño del grupo. Y será mejor que hayas pensado en todas las consecuencias y las soluciones a ellas, o serás abatido por ser "ingenuo". Esté preparado para una discusión sobre por qué su diseño es mejor. Prepárate para perder, y pierde con gracia.

Si su idea es realmente mejor, será finalmente aceptada por el grupo (aunque quizás no por el diseñador original), al grupo no le importa o el grupo es estúpido. En cualquiera de los últimos casos, ¿por qué querrías ser parte del grupo?

...

Si eres capaz, la alternativa es codificar la maldita cosa de manera tan sangrienta que temblarán de asombro ante tu destreza de codificación y no tendrán más remedio que aceptar la elegante simplicidad y la eterna verdad de tu diseño. Los desarrolladores hacer competencia respecto, pero hay que tener cuidado - el castigo por la incompetencia (o la arrogancia injustificada) es bastante grave. Sin embargo, dado que hace esta pregunta, supongo que la ruta de la arrogancia brillante y descarada no es realmente una opción. ;)

Mark Brackett
fuente
2
"Hola, gracias por darme la bienvenida a tu casa. Mientras cruzo la puerta, quiero que todos en la familia sepan que su bebé es feo y que alguien lo vistió de manera divertida".

Un error es un error, y está bien llamarlo así. Decir que es causado por un "defecto de diseño" es señalar con el dedo al tipo que está delante de ti (lo más parecido al "papi") y decirle que es un idiota.

Innecesario y contraproducente. Yo sugiero:

"En lo que respecta al tema #blah, creo que puedo solucionarlo haciendo XY y Z, pero no estoy seguro de cómo eso afectará al resto del proyecto. ¿Estaría bien?"

Donde XY y Z corrigen el problema. Deja que te digan que fue un error de diseño; Puede haber una solución alternativa. ¡O las suposiciones detrás de la 'falla' pueden ser tan profundas en todo el proyecto que cambiarlo solucionará el error pero romperá todo lo demás!

Steven A. Lowe
fuente