Una de las lecciones más importantes que aprendí como desarrollador hace 15 años fue este simple pensamiento:
Un buen código es expresivo, no impresionante.
Recuerdo que cuando escuché esto, pregunté: “¿Cuál es la diferencia?”, Y recibí una respuesta.
"Expresivo": comprensible, inequívoco y específico. Y si es así, escribir código expresivo requerirá trabajar con una tarea específica. La inversión de tiempo y energía en su creación tiene un propósito específico, y el resultado corresponde a la expectativa.
Impresionante es un código que se recuerda. Escribir código que sea recordado por sus complejas estructuras y algoritmos, aunque arañe su ego, será un verdadero dolor para alguien que lo respalde en el futuro. Y si este último resulta ser un maníaco que conoce tu dirección, Dios te salve de su ira.
Es por eso que un buen desarrollador es sabio, no brillante. Un desarrollador inteligente no solo tiene inteligencia, sino también la capacidad de pensar constantemente sobre las consecuencias de sus acciones. Él sabe qué código específico escribe, por qué lo hace y, lo más importante, cómo se comportará este código en el futuro. O, si es más simple, el desarrollador inteligente está tratando de curar la enfermedad, no los síntomas.
Los desarrolladores "ingeniosos", que tienen la misma inteligencia, por el contrario, piensan solo en el presente. Pueden resolver problemas actuales de forma rápida y efectiva. Eso es solo la montaña de sus trucos y trucos que se acumula constantemente y una vez que bloquea el código, enterrando la reputación de todos los involucrados. Es por eso que Steve McConnell comentó una vez correctamente:
La programación no es un trabajo en la CIA; no tienes que ser inteligente.
Y los desarrolladores sabios no hacen nada inteligente. Escriben código aburrido y simple que es fácil de entender. Ni más ni menos.
Aquí hay algunos principios más de desarrolladores sabios.
Prefieren la simplicidad.
Martin Fowler dijo una vez:
Cualquier tonto puede escribir código para computadora. Un buen desarrollador escribe código que la gente puede entender.
A veces los desarrolladores tienen el deseo de hacerse valer. Muestra a otros tu talento. Y comienzan a buscar soluciones abstrusas para cada problema que encuentran, aunque una solución simple está al alcance de la mano. Y este es uno de los peores errores que puede cometer un desarrollador.
Un desarrollador sabio escribe código directo. Es fácil de mantener, optimizar y refactorizar si es necesario. El código no hace algo complicado, todos los que lo encuentran entienden de inmediato lo que está sucediendo "bajo el capó". Los algoritmos avanzados e inusuales demuestran ser excelentes durante el sprint nocturno para café y energía, pero fallan mucho más tarde en la producción.
Cuando el ego comienza a tentarlo lentamente durante la programación, pregúntese: "Si vuelvo a trabajar con este código después de 2 meses, ¿puedo recordar qué está sucediendo exactamente aquí?" Si la respuesta es sí, entonces adelante. Sin embargo, recuerde acerca de sus colegas que algún día tendrán que trabajar con este código.
El código es como una broma. Si necesita ser explicado, es malo.
Saben cuándo (no) necesita optimizar su código.
Edsger Dijkstra comentó una vez correctamente:
Un buen desarrollador se centra en QUÉ, NO EN QUÉ AYUDA al escribir código.
Sin embargo, hay muchas formas diferentes de optimizar su código. Cada uno de ellos está asociado con un cambio en la cantidad de memoria consumida, el tiempo del procesador y un algoritmo específico. Y los desarrolladores sabios eligen este camino pragmáticamente.
Pero antes de comenzar a mejorar algo, siguen la regla de oro de "no hacer daño".
¿Con qué propósito voy a cambiar algo? ¿Quizás el programa ya resuelve perfectamente la tarea? Considerando cómo y en qué entorno se lanzará el programa, ¿tiene algún sentido hacerlo más rápido? Todas estas preguntas deben ser respondidas por usted mismo antes de comenzar la optimización.
Cualquier optimización tiene sentido solo en el contexto de la mano de obra y los retornos, si el programa es importante y es realmente lento, y existen razones razonables para creer que puede optimizarse manteniendo la fiabilidad, la corrección y la claridad. Nadie necesita un programa que produzca resultados erróneos, no importa cuán rápido sea. Un código bien optimizado es mejor que no optimizado, pero con un enfoque incorrecto, es exactamente lo contrario.
Recuerde: cualquier cambio de rendimiento durante la optimización debe medirse. La intuición en este asunto es un pobre ayudante.
Prefieren usar en lugar de crear código.
Vic Gundotra dio en el blanco, una vez diciendo:
Empiezas escribiendo código. Empiezo por encontrar una solución.
Y los desarrolladores sabios hacen lo mismo. Comienzan buscando un código listo para usar. Aunque a algunos les parece que ahora harán todo desde cero "cómo", la mayoría termina con la invención banal de una bicicleta.
Siéntase libre de googlearlo. La búsqueda de soluciones, ya sea en línea o en su propia base de código, ya es útil incluso desde el punto de vista de estudiar los enfoques que funcionaron anteriormente en problemas similares, así como sus pros y sus contras. Es por eso que los desarrolladores inteligentes pasan mucho tiempo leyendo el código de otra persona antes de escribir el suyo. Crear código desde cero siempre vale la pena el tiempo, el dinero y la energía. No desperdicie recursos hasta que sea realmente necesario.
Entonces, al resolver otro problema, primero trate de ver si alguien lo ha resuelto antes que usted. No evitas tu trabajo, evitas el trabajo innecesario.
Intentan ser mejores.
Aristóteles dijo una vez:
Si está trabajando en algo que ya sabe cómo hacer, no mejorará.
Los desarrolladores sabios están tratando de mejorar ellos mismos, o más bien su código en cada oportunidad. Son lo suficientemente modestos como para darse cuenta de que aún no han creado su mejor código.
No se sientan en la zona de confort una y otra vez con el mismo enfoque. Están haciendo todo lo posible para garantizar que sus propios hábitos no se conviertan en dogma para ellos. Buscan constantemente formas y oportunidades para mejorar, especialmente si pueden aprender algo nuevo en el proceso.
Los desarrolladores sabios no están fascinados por la tecnología de moda y las características geniales. Son lo suficientemente pragmáticos como para comprender que no existe una bala de plata y que cualquier enfoque tiene sus ventajas y desventajas.
No tienen miedo de pedir ayuda.
Sócrates pronunció:
Si nos estuviéramos ayudando constantemente, nadie necesitaría suerte.
Como desarrolladores, nos gusta pensar en nosotros mismos como personas inteligentes. Además, entre nosotros realmente hay genios. Pero también estamos inclinados a creer que deberíamos saberlo todo en el mundo. Y realmente, ¿quién se complace en decir frente a sus colegas: "No sé"? ¿Quién quiere admitir que la nueva tecnología para él es un conjunto de jeroglíficos?
En cambio, susurras en voz baja: “Lo resolveré por mi cuenta. Ya lo he hecho muchas veces antes, ahora puedo ".
Los desarrolladores sabios no hacen esto. Saben cuándo pensar por sí mismos y cuándo pedir ayuda. Ya saben que alargar una solicitud de ayuda solo mata el tiempo antes de los plazos, lo que perjudicará a todo el equipo. Por lo tanto, no tienen miedo de parecer incompetentes y piden ayuda cuando la necesitan.
Una solicitud de ayuda oportuna no socavará la fe de los colegas en sus capacidades. Fortalecerá la confianza en usted, como profesional, listo para hacer todo lo necesario para cumplir con los plazos y lograr resultados de alta calidad.
Como Cubra Sait comentó una vez:
Los cambios positivos comienzan con preguntas.