He estado pensando en lo que separa a los grandes programadores de los simplemente buenos programadores. Aquí hay algunos pensamientos. Si tienes algunas ideas adicionales, por favor entra y comenta esta entrada,
1. No se trata de la etapa de codificación.
Claro, los grandes programadores también son grandes codificadores. Pero es más que eso. Creo que los grandes programadores también son grandes ingenieros. Un ingeniero conoce sus herramientas. Un ingeniero sabe cómo descomponer un problema complejo en piezas que pueda resolver, y luego sabe cómo volver a ensamblar las piezas para formar un todo. Un ingeniero conoce íntimamente el dominio del problema. En el contexto de la programación, esto significa que entiende el problema que está tratando de resolver; entiende cómo encaja en el marco más amplio; y entiende las limitaciones de la tecnología.
2. Se trata de la etapa de codificación.
Leer un gran código es como leer una novela bien escrita. La historia simplemente fluye de la página. Las estructuras de datos son exactamente lo que se necesita para resolver el problema. El código se divide en procedimientos cuya función está clara por su nombre, uso y código. Los nombres son descriptivos. El código es consistentemente indentado. Los comentarios están estratégicamente colocados, son útiles, serios, y no redundantes con el código ejecutable. Los comentarios no cuestionan el comportamiento del código cercano (si alguna vez te sientes tentado a hacer esto, ¡detente y tómate el tiempo para averiguar qué está pasando en su lugar!) El código nunca se duplica innecesariamente; cualquier acción dada se implementa sólo una vez. Las funciones realizan una tarea sin efectos secundarios gratuitos. Se ha pensado en mejoras futuras obvias, y se han hecho previsiones razonables para anticiparlas en el diseño actual.
3. No tienen miedo.
Un programador que no trabaje en un pedazo de código porque piensa que es demasiado complicado o demasiado frágil probablemente tenga razón. Pero no se refieren al código. ¡Se refieren a sus propias habilidades! Los grandes programadores, cuando se enfrentan a un lío, saben cuándo y cómo construir un caso a la gerencia que es hora de reimplementar el código nudoso en cuestión. Los peores programadores simplemente se zambullen y empeoran el desastre.
4. Los grandes programadores siempre están pensando en el rendimiento.
Saben que si escogen la estructura de datos correcta para la tarea en cuestión, ya han evitado la mayoría de los problemas de rendimiento. Pero no hacen ninguna suposición sobre el rendimiento. Cuando depuran su código, se toman el tiempo de hacer pruebas de estrés y lo sacuden al máximo. Entienden que hacer que el código funcione a 1 TPS no es lo mismo que hacerlo a 1000 TPS. También entienden que hacer que funcione durante 15 minutos no es lo mismo que hacer que funcione durante días y semanas.
5. Los grandes programadores no adivinan.
Cuando llegan a algo que necesitan saber, y no saben, descubren cómo adquirir el conocimiento necesario, sin adivinar, y sin perder mucho tiempo.
Espero que encuentre esta lista intrigante, y también útil.