Diseñar fallas y lidiar con la humillación de él [cerrado]

84

¿Siempre has sido fundamentalmente correcto en los diseños de software que propusiste? Cuando entrega un diseño que era fundamentalmente incorrecto, tiende a perder el respeto de los demás miembros del equipo. No importa lo que haga después de eso, terminará siendo verificado por todo lo que propone después de ese incidente. Esto es especialmente peor cuando eres nuevo en un equipo y no conocen tu pasado en el que has tenido algunas buenas historias de éxito.

Tal vez la razón por la que diste un mal diseño fue por falta de experiencia o conocimiento o ambos en esa área. ¿Cómo lo ha enfrentado usted que se ha enfrentado a tal situación? ¿Es esto algo único en tu carrera o sucede de vez en cuando? ¿Se olvida esto o se necesita buscar una nueva línea de trabajo en una situación así? Algunos comentarios honestos por favor ...

Gracias.

usuario20358
fuente
17
quizás el diseño era correcto, solo para un sistema diferente ;-) no inviertas tu ego en tu código / diseños, hay demasiados factores para esperar la perfección; invierta en su disposición para aprender, la honestidad (especialmente la auto-honestidad) y el trabajo en equipo. ¡El diseño podría haber sido perfecto el día 1, y los requisitos cambian el día 2! Aprenda de él y continúe
Steven A. Lowe
¿Por qué el apego a su diseño? El objetivo debe ser hacer lo mejor para el producto / empresa. Proponer algo. Pregunta a la gente por sus pensamientos; pídales que encuentren fallas. ¿Encontraste fallas? Enjuague y repita. ¿Sin defectos? Ve a por ello. ¿Necesita debate o discusión de pros / contras? Entonces hazlo. Defiende tu diseño donde sea necesario defenderlo. Déjalo ir cuando simplemente no está funcionando. ¿Por qué algo de esto sería vergonzoso? Es una lluvia de ideas. La gente siempre debe tener la flexibilidad de sugerir las cosas más estúpidas y estúpidas ...
Swati
Creo que no estás contando toda la historia. Si bien todos no siempre producen buenos diseños, no tienden a hacer que otros piensen que son incompetentes a menos que sea realmente evidente que el diseñador no tiene idea. Sospecho que o bien no lo "entendiste" o trataron de señalar algunas mejoras y no estuviste de acuerdo, probablemente rechazando algunos principios muy básicos en el proceso. Ambos me harían supervisar más el trabajo de un desarrollador.
Dunk
1
No estoy en desacuerdo. La solución que presenté no fue impugnada por mi equipo, ya que todos son juniors. Cuando le propuse esto a nuestro cliente que tenía más experiencia que yo y también de mejor calidad, comencé a darme cuenta justo cuando lo estaba derribando. Tomé una decisión fundamentalmente incorrecta en alguna parte. No solo me sentí como un tonto, también sentí que decepcioné a los miembros de mi equipo porque habían depositado su confianza en mí y ahora dudo que lo hagan. No los culpo. Me miraría con sospecha si estuviera en su lugar.
user20358
44
Un buen desarrollador no es un desarrollador que siempre toma la decisión correcta, sino un desarrollador que toma una mala decisión, lo admite y se recupera rápidamente de él.
Rudy

Respuestas:

177

Una vez, el vp de una fortuna 500 le costó a la compañía 1 millón de dólares con una mala decisión comercial. Cuando presentó su renuncia al CEO, la respuesta que recibió fue: "Acabo de invertir un millón de dólares en su educación y ahora está tratando de irse. No acepto".

Me canso de los gerentes y otros trabajadores que rápidamente culpan de un error a alguien que es un novato o que asume que son incompetentes. Solo hay una forma de convertirse en un buen diseñador y es f @ $% unos pocos más. No me importa si mis empleados cometen un error, me importa si cometen el mismo varias veces. La pregunta es, ¿cuán humilde y enseñable eres? Cuando alguien te presenta tu error, ¿te defiendes primero o lo escuchas? Si eres uno de los tipos raros que pueden tragarse su orgullo y aprender de él, entonces vale la pena aferrarte a él. Quien pierde el respeto por cometer un error una vez, no es alguien que merece su respeto.

Personalmente tuve que reescribir los dos primeros proyectos que diseñé al menos dos veces, pero ¿sabes qué? Aprendí un montón, y aunque mis empleadores estaban perturbados en ese momento, eso fue rápidamente compensado por la eficiencia que gané con el tiempo al estar dispuesto a aprender de mis errores.

En cuanto al aspecto de la humillación y cómo recuperarse, tengo dos consejos. Primero, la gente olvida con el tiempo. Además, cuando alguien más tiene el centro de atención sobre ellos, también se equivocarán. Entonces todo volverá a ser igual. Segundo, no seas un imbécil con los demás cuando cometen errores honestos, de aprendizaje. De hecho, debes alentarlos a menos que realmente necesiten una patada firme en el trasero. Con el tiempo, puede ayudar a cambiar la cultura de su equipo al recordar cómo se sintió cuando cometió un error honesto. Eventualmente inspirará a las personas a ser mejores programadores, diseñadores y seres humanos.

Jonathan Henson
fuente
3
Realmente me gusta este comentario. Cometí algunos errores en mi lugar de trabajo en el pasado, y aunque no soy perfecto, hice un punto para aprender de ellos. Me acerqué a mi compañera de trabajo (mucho más avanzada que yo en este campo) y le pregunté qué podía hacer mejor y ella me dio algunos buenos consejos. Me gusta pensar que estoy mejor ahora. Si bien dolió saber que me equivoqué y sentí humillación, finalmente pasa. Esto es alentador para mí porque me dice que hice lo correcto y que esto es algo que sucederá. Sobre todo porque este es realmente mi primer trabajo. :)
Ben Richards
1
Tienes derecho a que la gente se olvide. Una vez ayudé a derribar a la empresa durante medio día una vez que realicé una actualización fallida de DB. Ese fue un día horrible, pero ya lo superé y creo que todos los demás también.
Kratz
55
Buena anécdota y un buen punto. Por supuesto que estoy pensando: fácil de decir para el CEO. No invirtió su propio dinero. Alguien con piel en el juego no tendrá una reacción tan extrañamente desapegada ante un error colosal. Sin embargo, si son honestos, reconocerán que cometieron muchos errores menores en el camino y aprendieron de cada uno. La clave es fallar rápidamente, ser honesto y elegir algo nuevo para su próximo error. :) Esa actitud será reconocida y recompensada en las empresas en las que vale la pena invertir su tiempo de carrera.
Greg Hendershott
1
@BiAiB Vicepresidente: generalmente significa "segundo al mando".
Jonathan Henson
2
@ Greg H: "extrañamente desapegado?" No, solo racional. Alguien que intenta hacer un buen trabajo que comete un error, aprende de ese error. Reemplazar a esa persona, después de haber aprendido mejor, con otra persona que no tiene experiencia es una mala decisión. El nuevo chico puede tener un historial limpio, pero solo porque nunca ha intentado nada interesante.
Zan Lynx
33

He estado haciendo esto durante mucho tiempo (más de 15 años), y todavía no lo hago bien la primera vez. Los mejores diseños surgen de un proceso iterativo y colaborativo. Cuando ha estado trabajando en un diseño durante un tiempo, es fácil quedar atrapado pensando que es la única forma de hacerlo. Una nueva perspectiva es útil para ver las cosas que echas de menos.

Para que esto funcione, el equipo necesita confiar el uno en el otro. No puede tener miedo de mostrarle a la gente un diseño que puede ser defectuoso, y debe ser capaz de aceptar las críticas al diseño. A su vez, el resto del equipo necesita comprender que las fallas en un diseño no son un reflejo del diseñador. Es una parte esperada del diseño. También es cómo los miembros del equipo aprenden y mejoran: de sus propios errores y de los errores de los demás.

Si está en un equipo disfuncional que no funciona así, tiene dos opciones:

  1. intenta arreglar el equipo
  2. encontrar un nuevo equipo (ya sea internamente o en un nuevo empleado).
KeithB
fuente
20

Hasta donde sé, siempre he sido fundamentalmente defendible . Eso no es lo mismo que ser fundamentalmente correcto . A menudo, las circunstancias cambian entre el momento en que tiene que tomar la decisión 'x' y el momento en que queda claro que 'x' fue la decisión incorrecta en retrospectiva .

Es como preparar sus impuestos sobre la renta en los Estados Unidos. Mucha gente piensa que se supone que debe haber una respuesta. No hay Tienes tu opinion; su contable fiscal tiene su opinión; El IRS tiene su opinión.

Cuando cometo errores, no pierdo el respeto de nadie. (Hasta donde sé). Creo que es porque, en parte, siempre admito mis propios errores. (De hecho, a menudo encuentro mis propios errores). Además, en casi todas las decisiones de diseño importantes, más de una persona las aprueba. Cualquier error en esas decisiones es propiedad del grupo, no del todo de una sola persona.

En cuanto a admitir errores, creo que eso se vuelve más fácil a medida que adquieres competencia y experiencia. En mi experiencia, cuanto más nuevo sea para diseñar y desarrollar, menos probable es que admita un error.

Sucede de vez en cuando, y no debería descarrilar su carrera. Nadie en una posición de responsabilidad significativa invariablemente toma decisiones correctas. De hecho, nadie en una posición de responsabilidad significativa invariablemente toma decisiones defendibles.

Pero la mayoría de las veces, debe poder tomar decisiones defendibles basadas en información incompleta. Como diría mi hija, "Eso es solo ser personas".

Mike Sherrill 'Cat Recall'
fuente
Cuanto más sé, más sé que no sé. Mi amplitud de conocimiento crece más lentamente que mi conciencia de las cosas que debo saber. Solo me esfuerzo por ser mejor cada día. Utilizo las mejores prácticas que conozco. He aprendido que algunos de estos no serán tan buenos como creo que son. Desafortunadamente, estoy de acuerdo en que admitir errores se vuelve más fácil a medida que ganas experiencia. Sin embargo, si no tiene la experiencia, se deben esperar errores.
BillThor
¡Gran respuesta! Ciertamente cometí mis errores en los diseños, pero no creo que alguna vez me hayan humillado o perdido el respeto de mis compañeros de equipo. Mis decisiones siempre se tomaron por una razón, y cuando resultó que mi razonamiento se basó en un conocimiento erróneo o incompleto, siempre reconocí el error y trabajé para corregirlo.
Carson63000
8

Todo el mundo se equivoca a veces. Los errores son inevitables. Admita libremente cuando esté equivocado, aprenda de sus errores y muestre humildad, especialmente si inicialmente no estaba convencido de que realmente estaba equivocado.

La "humillación" nunca debería suceder. No es probable que mejore el rendimiento de una persona en absoluto.

Aquí, en mi empresa, hemos desarrollado una cultura de respeto por aquellas personas que todavía están dispuestas a esforzarse por tomar decisiones difíciles, pero pueden admitir que están equivocadas y ajustar su comportamiento cuando sea necesario.

MadKeithV
fuente
Voy a la segunda "cultura del respeto". Tengo la desgracia de ser uno de los dos programadores de nuestra empresa. ¿Por qué desafortunado? Porque cada vez que yo (o incluso alguien) comete un error, el otro programador se ríe en tu cara como si fueras un idiota. Peor aún, cuando comete un error, siempre logra colocar la culpa en otro lugar (otro miembro del personal, Windows, alineación planetaria). Así no es como deberían ser las cosas y por eso odio absolutamente pedirle ayuda por miedo a que se convierta en un concurso de meadas.
hermiod
6

¿Siempre has sido fundamentalmente correcto en los diseños de software que propusiste?

¡Sí, soy sobrehumano! Bueno, claro que no.

Cuando entrega un diseño que era fundamentalmente incorrecto, tiende a perder el respeto de los demás miembros del equipo.

¡No! Si eso sucede, entonces hay algo mal con el espíritu de equipo.

Todos cometen errores. Algunas soluciones resultan ser buenas, otras malas, la mayoría algo intermedio. Tanto los éxitos como los fracasos deben ser tomados como una lección, por usted y por el resto del equipo.

Los primeros errores pueden sentirse mal, pero después de haber cometido cientos de ellos, es como parte del trabajo.

Joonas Pulakka
fuente
4

Le pasa a todo el mundo. Lo principal es aprender de sus errores y tratar de no dejar que vuelva a suceder. Además, asegúrese de admitir que fue un error de su parte. Por ejemplo, una vez cometí el error de usar una capa de acceso a datos inferior (SubSonic3). Cuando tomé la decisión, solo quería alejarme de las consultas SQL hechas a mano. Así que elegí lo que en ese momento parecía uno de los más fáciles de comenzar. Tampoco tenía mucha experiencia con los DAL. Bueno, después de resolver algunos problemas, me preguntaba por qué algunas consultas demoraban demasiado y descubrí que SubSonic estaba retirando tablas enteras sin una buena razón.

Entonces, le dije a mi jefe, le expliqué que había cometido un error y le di mi plan para arreglarlo. Mi jefe, por supuesto, no estaba entusiasmado con el hecho de que cometiera un error bastante grande que requería unos días de pura migración. Pero también se aseguró de que no volviera a cometer el mismo error. Me hizo crear un proyecto de prueba de concepto para la siguiente capa de acceso a datos a la que propuse migrar y nos aseguramos de que funcionara con nuestros requisitos y que no desplegara tablas completas. En general, fue una buena experiencia de aprendizaje para mí y ahora me aseguraré de que una parte clave del proyecto cumpla con los requisitos y no tenga grandes problemas.

Entonces, básicamente, lo que haces es esto:

  1. Admite que cometiste un error
  2. Haz un plan para arreglarlo
  3. Asegúrese de que su plan realmente funcione
  4. Asegúrate de nuevo.
  5. ¡Arreglalo!

Si no está seguro de cómo solucionarlo, no tenga miedo de involucrar a otros miembros del equipo.

Una última cosa, ¡relájate! Todos cometemos errores. Muy pocas personas lo hacen perfecto la primera vez

Earlz
fuente
3

Esto es un asunto de concurso de meadas geek, y no es una buena situación para estar. Nadie siempre tiene la razón, y no hay nada de qué avergonzarse si alguien encuentra una mejor manera de hacerlo, o si encuentran un problema con el como lo hiciste.

Debe deshacerse emocionalmente de su solución y dedicar su tiempo a tratar de encontrar la mejor solución, entonces puede estar satisfecho cuando se resuelve el problema, incluso si alguien más lo resuelve.

Satanicpuppy
fuente
3

Hay muchas cosas que no estás diciendo en tu pregunta. No puedo decir cuál es su configuración para "dar un diseño". ¿Es una discusión inicial con un compañero sobre su enfoque planificado o es la entrega de lo que espera que sea el código final?

Si es lo primero, entonces no hay razón para sentirse mal y no hay razón para que sus compañeros sospechen de usted en el futuro.

Si está esperando hasta la entrega final para discutir su diseño con otra persona, entonces no los culpo por sospechar de su otro trabajo.

Todos necesitan discutir su diseño con alguien más. Dependiendo de la complejidad o la importancia crítica, es posible que deba analizarlo con varias personas varias veces. Todos pueden cometer un error, malinterpretar un requisito o perder un caso especial.

Los errores identificados temprano son más fáciles y más baratos de solucionar. Deben ser muy perdonables a menos que esté repitiendo los mismos errores una y otra vez. Las revisiones por pares hacen que sea más fácil detectar errores temprano.

Si estás tratando de ser un codificador solitario en un entorno de equipo, estás cometiendo el pecado (casi imperdonable) de pensar que eres lo suficientemente perfecto como para no necesitar la ayuda de nadie más. El hecho de que sea un entorno de equipo demuestra que el problema es lo suficientemente grande como para que ninguna persona lo entienda todo. Las personas tienen que hablar entre sí o los errores levantarán sus cabezas demasiado cerca de la liberación (o después de la liberación).

jimreed
fuente
La solución que presenté no fue impugnada por mi equipo, ya que todos son juniors. Fui llevado al equipo para resolver un problema en el que el equipo estaba fallando. Además, ya existía el problema del mal diseño, los olores de código, etc. Fui atraído como la panacea para arreglarlo todo y hacer feliz al cliente. Cuando le propuse este nuevo diseño a nuestro cliente que tenía más experiencia que yo y que también era de mejor calidad, comencé a darme cuenta, justo cuando lo estaba derribando, de que había tomado una decisión fundamentalmente incorrecta en alguna parte. Fue incrementalmente mejor que lo que el equipo había hecho, pero todavía mucho en números rojos ...
user20358
Como recurso principal debería haber sabido esas cosas. Estoy seguro de que mi equipo también piensa lo mismo.
user20358
@ user20358 Diría que aún debería haber tiempo para salvar su reputación con el equipo. Los problemas importantes no se pueden solucionar al instante. ¿Fuiste atraído para ser una bala mágica de un solo disparo, o fuiste atraído para agregar experiencia al equipo de manera continua? Ojalá lo último. Suponiendo eso, debe integrarse con el equipo para que puedan enseñarle lo que han aprendido en el camino y pueda usar su experiencia para guiarlos en una mejor dirección. Reconozca sus éxitos y guíelos para que vean y descubran formas de mejorar el producto.
jimreed
3

Siempre he hecho una distinción entre, por un lado, buenas o malas decisiones; y en las otras decisiones correctas e incorrectas. Una buena decisión es aquella que, en las mismas circunstancias, con la misma información, tomaría de la misma manera; una mala decisión es la que tomarías de manera diferente. Una decisión correcta es aquella que, con el beneficio de la retrospectiva y la información adicional, demuestra haber sido correcta; y viceversa con decisiones incorrectas.

A menudo se ha dicho que la persona que no toma decisiones incorrectas nunca toma nada. Las decisiones incorrectas son la forma en que uno aprende. Las malas decisiones a menudo se exacerban porque el tomador de decisiones invierte en la decisión y trata de justificar retrospectivamente la decisión, o demostrar que fue una buena decisión después de todo (el encubrimiento siempre es más perjudicial que la decisión original).

La mayoría de las decisiones de diseño que tomé resultaron ser correctas, pero aprendí más y avancé más con aquellas decisiones que eran incorrectas. Espero que muy pocas de mis decisiones hayan sido malas, pero parte del problema con las malas decisiones de uno es reconocer que una decisión fue mala y aceptar las lecciones a menudo desagradables que surgen de ellas.

Chris Walton
fuente
3

Mientras no sean el " quarterback de lunes por la mañana ". No tengo uso para alguien que se sienta a través de todas las discusiones de diseño sin decir nada solo para afirmar que sabía que no funcionaría después del hecho. Debes ser capaz de aceptar las críticas incluso si no se ponen en un contexto constructivo.

Probablemente una de las mejores características del sitio SO es poder arriesgarse y proponer una solución incierta. Así es como aprendes. Pasar por la vida con un montón de basura en tu cabeza que está mal, pero nunca te han dicho lo contrario, es verdadera ignorancia.

Puede que sepan algo que tú no, pero no lo sabrán todo. Supéralo, ponte a trabajar y haz algo. Permítales perder el tiempo pensando que son tan listos.

JeffO
fuente
2

¿ Siempre he proporcionado un buen diseño? ¡No! Me esfuerzo por hacerlo, me esfuerzo por mejorar, pero con cada proyecto sucesivo, lo que parece que siempre puedo hacer es mirar hacia atrás a lo que he hecho antes y encogerme de alguna manera por haber perdido la marca.

En cuanto a alguien que ha propuesto un diseño menos que estelar, no lo consideraría en contra de esa persona si esa persona demostrara que está dispuesto a aprender del error y está abierto a las críticas. Si veo evidencia de que la persona se esfuerza de manera similar por mejorar y tiene la capacidad de hacerlo, entonces una mala propuesta de diseño es solo una oportunidad de aprendizaje.

Anthony Pegram
fuente
1

Le sucede a todos de vez en cuando, así que lo mejor que puedes hacer es descubrir por qué el diseño estaba mal y aprender de eso. Si se trata de una falta de conocimiento, es probable que la falla del diseño le brinde algunos conocimientos nuevos que puede usar la próxima vez. No dejes que te desanime, todos pasan por esto en algún momento. Es la mejor manera de ganar experiencia y atrapar con un nuevo equipo / entorno.

FrustratedWithFormsDesigner
fuente
1

Esto sucederá a menudo. Nuestra industria está cambiando tan rápidamente que las posibilidades de nunca equivocarse son efectivamente cero.

Sin embargo, ¿presionaste al mal diseño por sus objeciones? Esa podría ser la razón por la que están exagerando.

Si el error fue masivo, por supuesto que llevará tiempo recuperar el respeto. Si uno de tus compañeros de trabajo te llevara en una mala dirección y creara problemas para todo el equipo, ¿no necesitarías que se demuestre más a corto plazo?

Todo lo que puede hacer es admitir que estaba equivocado, dar crédito a quien tenía razón y esforzarse por escuchar mejor e investigar mejor las opciones en el futuro.

¿Qué no consideraste que hizo que el diseño fuera un error? (Ejemplo no aleatorio: diseñe un proceso de importación para usar el servicio web existente que se ejecuta fila por fila (reutilización de código y solo necesita cambiar las reglas comerciales en un solo lugar) sin darse cuenta de que algunas importaciones tendrán millones de registros y demorarían días en completarse terminar.) Aprenda de eso y considere esas cosas en el futuro.

HLGEM
fuente
No, no puedo empujar el mal diseño. Fui traído al equipo para resolver problemas que el equipo estaba fallando continuamente. Además, ya existía el problema del mal diseño, los olores de código, etc. Fui atraído como la panacea para arreglarlo todo y hacer feliz al cliente. Digamos que cuando le propuse este nuevo diseño a nuestro cliente que tenía más experiencia que yo y que también era de mejor calidad, comencé a darme cuenta, justo cuando lo estaba rechazando, que había tomado una decisión fundamentalmente incorrecta en alguna parte. Fue incrementalmente mejor que lo que el equipo había hecho, pero todavía mucho en números rojos ...
user20358
Admití que estaba equivocado, pero eso no ayudó mucho porque tanto para mi gerente como para el cliente debería haberlo sabido mejor, considerando mi experiencia.
user20358
1
Entonces solo tienes que trabajar para demostrarles a ti mismo a corto plazo. La gente comete errores, lo importante es cómo se recuperan de burlarse de ellos. Parece que no tenía toda la información que necesitaba para hacer el diseño, tal vez deba considerar hacer una investigación más exhaustiva antes de la próxima propuesta de diseño. Cuando somethign ya está en mal estado, es difícil diseñar para solucionar todos los problemas, se concentra en algunos, pero los más críticos podrían no haber sido tan evidentes.
HLGEM
0

Habrá siempre haber errores. Errar es ser un programador. Continúe aprendiendo de otros en Internet y especialmente de sus compañeros de trabajo. La única vergüenza aquí sería darse por vencido o enterrar la cabeza en la arena cuando se trata de problemas como este de aquí en adelante.

Ponlo detrás de ti, baja la cabeza y haz tu mejor esfuerzo. Si eres un buen programador, brillarás a través de tus errores.

Ortigas Jarrod
fuente
0

Si no está seguro de que su idea se base en una base sólida, debe discutirla con algunos colegas de confianza antes de proponerla a toda la empresa o departamento. De hecho, incluso si ESTÁS seguro, aún debes discutirlo con las personas con las que trabajas y que tienen más probabilidades de conocerte mejor. Te ayudarán a detectar problemas desde el principio.

Caleb
fuente
0

Nos pasa a todos a veces. Usa el primer diseño como prototipo. Averigüe exactamente qué funcionó y qué no funcionó y por qué. Entonces puedes escribir un producto final mucho mejor.

No intentes justificarte o ponerte a la defensiva. Admite el error y sigue adelante.

Tom Squires
fuente
0

El problema fundamental no parece explicarse: este es un problema social . Puedes ver ese comportamiento en casi todas las profesiones: si cometes un error y les gusta "categorizarte" en ciertas cosas, es para siempre. Es un comportamiento social. Incluso las personas inteligentes e inteligentes tenderán a seguir a todos.

Permíteme darte un ejemplo que no tiene nada que ver con la programación: en mi trabajo anterior, me había olvidado de lavar mis platos una o dos veces. Desde entonces, todos los trabajadores pensaron que soy el tipo de hombre que nunca lava mis platos. Y ahora, cuando hay algo sucio en el fregadero, soy yo (quién más podría ser).

Es lo mismo en todas partes: este es un comportamiento social , sin importar qué tipo de problema pueda ser.

¿Me dices que quieres comentarios honestos? La única solución es renunciar a otro trabajo. Si todas las personas del equipo piensan que no eres bueno en tu trabajo, no cambiará pronto, lamento decirlo de esta manera. Así que busca otro trabajo, porque nunca cambiarás este tipo de comportamiento social (estúpido, debo confesar) .

Olivier Pons
fuente
0

La clave es cómo declara su caso y qué tipo de cambios realiza. Si afirma ser un gurú de la programación que no hace nada malo y que es más increíble que Jon Skeet, es muy probable que en algún momento lo desanimen. La clave es cómo presentar sus soluciones para poder demostrar que esta es una solución razonable al problema en lugar de la solución perfecta que ni siquiera debería verificarse.

Mi mejor ejemplo sería descubrir los efectos secundarios de tener una clase staticen una aplicación web donde trabajé una vez. No sabía qué tan malo sería que esa instancia persistiera y se compartiera entre todos los usuarios de la aplicación, pero aprendí de ella y me recuperé a tiempo. A veces puede ser que se encuentre algo y se tengan que hacer correcciones importantes. También estuve en ese campamento donde tuve que examinar un montón de VBScript para reducir las concatenaciones de cadenas que causaban problemas de memoria donde trabajé una vez. Incluso puedo recordar escribir código vulnerable a las inyecciones de SQL en 1998 cuando estaba escribiendo un código de encontrar un cliente que tenía que generar dinámicamente el SQL ya que tenía ~ 20 campos opcionales en esa parte de la aplicación.


El perfeccionismo puede ser una especie de espada de dos filos aquí, así es como veo ese tercer comentario, además de ser una forma en que soy a veces también. Lo malo es ver que hay todos estos errores y que nada es correcto. Lo bueno es que al obtener lo mejor que puede, podría estar cumpliendo si no superando las expectativas de los demás sobre usted. La mejora continua bien podría ser la forma en que la PC ve el perfeccionismo y, si se mantiene con moderación, lo veo como algo bueno. Por todos los errores cometidos, ¿su código entra en producción? ¿Se hace el trabajo? Esos son puntos para reflexionar, así como si alguien siempre está arreglando algo o ¿es bueno que quieras ser tan bueno que preferirías no hacer nada más hasta que eso sea perfecto? La práctica puede ser útil para ayudar a encontrar los patrones para hacer mejor el trabajo. Sin embargo,

JB King
fuente
I'm no jon skeet :)
user20358
También cometí un error similar. Decidir mantener una clase estática como controlador en una aplicación MVC. Viniendo de un contexto procesal, mi pensamiento OOP está evolucionando todos los días. Todavía creo que tengo mucho que aprender al tomar una decisión sobre cuándo abstraer y cuándo no. cuándo heredar, cuándo buscar composición. La peor parte es que después de ser derribado, paso tiempo aprendiendo y después de un tiempo siento que finalmente lo tengo ... hasta que me derriban de nuevo ... luego es hora de pasar tiempo aprendiendo.
user20358
No me importa el aprendizaje. Es solo la reputación que pierdes cuando sigues cometiendo errores, incluso si son diferentes cada vez. Para todos los que lo rodean, parece que cometiste muchos errores. No uno nuevo cada vez, que aprendió y mejoró.
user20358