Solo puedo decir lo que funciona para mí.
En un momento incluso tuve un “bloque de código” (quiero decir algo muy parecido al bloqueo del escritor, no unas pocas líneas entre paréntesis) debido a esa mentalidad. Escribí un fragmento de código, o incluso pensé en un fragmento de código sin siquiera escribirlo … y todo lo que pude ver fue otras formas de hacer lo mismo, eso sería mejor: más eficiente, más simple, más genérico, más fácil de reutilizar, etc.
Finalmente me di cuenta de que el código perfecto no existe por sí mismo. Cada pieza de código se puede mejorar. Por ejemplo, generalmente es casi imposible escribir código que sea rápido y genérico. Quiero decir que el código genérico puede ser rápido, pero si acepta restringir el espacio del dominio, generalmente puede hacerse aún más rápido.
- ¿Qué espacio de programación (lenguajes y tecnologías) presumiblemente ofrecerá el ROI más alto en el futuro?
- ¿Cuál es el papel de la administración de la configuración para los diversos entornos de producción y prueba en la tubería de implementación?
- ¿Cuál fue el error de software que resultó en un premio gordo erróneo de $ 43M que no fue otorgado por una máquina tragamonedas?
- ¿Cuál es la mejor solución de analizador de correo electrónico disponible?
- Entonces, ¿qué hace que un buen ingeniero de software? ¿Después de una graduación de pregrado?
Pero incluso si mantiene una mentalidad muy estrecha, como solo pensar en el rendimiento, el código “perfecto” sigue siendo inalcanzable. El libro clásico de Michael Abrash Zen Of Optimization me ayudó mucho sobre eso en ese momento. Se incluye en el Libro negro de programación de gráficos de Michael Abrash, edición especial disponible gratuitamente aquí.
Entonces, olvídate de la perfección. Todo el código que escriba siempre será imperfecto , al menos ante los ojos de su yo futuro . Si no lo siente, significa que dejó de mejorar en la programación en algún momento o la falta de lucidez, nada de lo cual es muy deseable.
¿Cómo superé mi bloque de código? En algún momento decidí escribir código incorrecto a propósito (pero la unidad probó un código incorrecto). Las pruebas unitarias eliminaron mi temor de que podría romper todo si cambiaba esa mierda de código más tarde.
Lo que sucedió fue que una vez que supe que podía cambiar mi código incorrecto si era necesario, pude continuar y realmente cambiarlo solo si fuera necesario (si el código incorrecto se interpuso en la escritura del nuevo código que deseaba escribir).
También me concentré en escribir código más simple. Escribir código complejo que casi nadie entiende es fácil. Puede haber alguna razón, como una arquitectura abstracta atractiva o algo así, pero un código más simple facilita la vida de las personas que trabajan con usted, incluido su yo futuro.
Me convertí en un gran admirador de los olores a la refactorización, es maravilloso ver cómo se aclaran cosas intrincadas y ver que la estructura emerge por sí misma de algo mal pensado al principio. A menudo obtengo una mejor arquitectura de código final de esa manera que a través de un diseño cuidadosamente pensado. No fui tan lejos como el mal diseño a propósito, pero realmente 5 minutos de reflexión a menudo dan algo tan bueno como diez horas, de ahora en adelante no es necesario pasar las diez horas de diseño.
Otro truco que uso es escribir TODOS comentarios en el código cada vez que no tengo tiempo para escribir algo correctamente (o si veo posibles problemas en el código). El propósito es evitar interrumpir el flujo deteniendo lo que estoy haciendo para corregir de inmediato cualquier pequeño error. De hecho, vuelvo más tarde, para arreglar TODOS y esa es probablemente la parte más difícil. Este truco lo tomé del escritor de novelas de fantasía Piers Anthony. Es un escritor prolífico y explicó que uno de sus trucos fue incluir perturbaciones externas dejando una nota en el texto que está escribiendo , para evitar dejar de escribir. Eso es más o menos lo que pretendo hacer.
Espero eso ayude. Esto funciona para mi.