Lo que debería conocer un buen programador

Espero no parecer pretencioso con los comentarios que voy a realizar, pero muchas veces las personas se preguntan si son o no buenos programadores, y que cosas deberían mejorar para ser un mejor programador, usted tal vez pueda estar de acuerdo o en desacuerdo con lo que voy a decir. Simplemente voy a plasmar lo que a mi consideración refleja las actitudes, comportamientos y conocimientos que debería tener una persona que se considere un buen programador según mi experiencia, obviamente usted podrá complementar o debatir mis puntos de vista pero espero escribir algo que le ayude a entender que puede mejorar para ser un mejor programador.

Lo primero es muy sencillo, debe conocer y dominar muy bien el lenguaje con el que desarrolla, esto no es solamente conocer la semántica, ni mucho menos memorizar las clases del framework, siempre he creído que conocer la semántica y las instrucciones básicas del lenguaje es supremamente fundamental pero mas allá de eso, lo que caracteriza al buen programador es el conocimiento de lo que pasa tras bambalinas con algunas instrucciones, o la forma en que el compilador interpreta el código que usted escribe. La curiosidad de los que escribimos código es innata, y los buenos programadores se caracterizan por querer conocer cómo funcionan las cosas, así que es indispensable que usted sepa que pasa cuando crea un objeto, cuando lo instancia, cuando utiliza una colección, un genérico, cuando sucede el boxing y el unboxing, como son manejadas cosas tan sencillas como los strings, las estructuras de datos, y cosas que le permitan entender porque los programas que usted escribe se comportan de x o y manera. Si usted no conoce lo que pasa por detrás nunca estará en capacidad de entender porque su código no funciona o no va a funcionar ni mucho menos estará en capacidad de mejorarlo.

Cuando usted entiende lo que pasa tras bambalinas, automáticamente empezará a escribir código más eficiente, a crear patrones de escritura de código y a buscar mejores prácticas en la escritura, esta es la segunda característica de un buen programador, el uso e implementación de patrones y buenas prácticas de código, que siempre se detectan a simple vista. El uso de buenas prácticas lo conducirá por el camino de la escritura de código seguro, eficiente y más limpio.

La reutilización de código es esencial e indispensable para el buen programador, esto le permitirá ser más eficiente, efectivo y le permitirá siempre encargarse de las cosas nuevas, relativas al negocio, a la innovación, y la resolución de problemas. Muchos programadores que se consideran buenos, creen erróneamente que siempre pueden hacer las cosas mejor que otras personas y pierden su tiempo reinventando la rueda, haciendo cosas que ya están hechas y probadas, simplemente por reducir milisegundos en tiempo de ejecución en cosas que la mayoría del tiempo no son un problema o no impactan la solución. Primero hay que enfocarse en ver que esta construido y partir de bases solidas que estén listas y puedan ser reutilizadas y luego se puede encargar de mejorar el rendimiento, en los lugares donde verdaderamente lo requiera, por eso un buen programador busca recursos que puede reutilizar en lugar de construir siempre sus propios recursos, y cuando su solución esta lista busca mejorar el código que es necesario mejorar.

Cuando un programador empieza a preocuparse por usar cosas ya construidas es cuando su curiosidad lo lleva a descubrir nuevas herramientas y servicios que antes no conocía y que le ahorran trabajo y esfuerzo a la hora de brindar soluciones. El buen programador está concentrado en brindar soluciones y en mejorar y solucionar los problemas a los que se enfrenta integrando componentes, por lo cual es indispensable un conocimiento básico de la plataforma Microsoft y sus diferentes familias de soluciones, de tal manera que pueda integrar las cosas que son necesarias para resolver los problemas de la organización.

Estar actualizado es fundamental, estamos en un negocio que tiene una evolución vertiginosa, siempre están creando nuevas tecnologías, metodologías y paradigmas que permitan dar diferentes alternativas de solución, y el estar al tanto de las innovaciones siempre permitirá obtener ventajas de manera rápida y brindar soluciones innovadoras a las organizaciones, esto no significa que apenas salga una tecnología usted debe utilizarla, pero si debe tener el criterio de evaluarla, conocer y ver sus pros y sus contras, seguir su evolución y entender muy bien el escenario en donde puede ser implementada de tal manera que pueda sacarle el mayor provecho.

Un buen desarrollador no es un perfeccionista, en varias oportunidades he trabajado con desarrolladores que tienden a destruir su trabajo cuando encuentran una mejor manera de implementar un algoritmo, o cuando no se sienten a gusto con el código escrito por así funcione perfectamente, estas personas suelen retrasar los proyectos y ocasionar errores al cambiar cosas que ya funcionan bien por el hecho de no sentirse conformes. La refactorización de código se trata de reutilizar lo que usted ya construyo mejorándolo, no destruir y volver a hacer.

Otra característica fundamental de un buen programador es pensar, y pensar mucho en todas las alternativas posibles para resolver un problema, aquel programador que se sienta a escribir código inmediatamente después de haber leído un requerimiento, cuando no hay un diseño claro y consecuente con un estudio de las alternativas de solución, seguramente terminara haciendo código para soluciones poco innovadoras y corre el riesgo de tener que rehacer su trabajo por no entender e implementar la mejor solución. Sea recursivo y busque muy bien todas las alternativas posibles antes de implementar una solución.

La experiencia como en cualquier otro campo es un pilar fundamental, no existe una sola persona que en su primer intento haga una obra maestra, aprenda de los que más experiencia tienen, escúchelos, pero evalué también la idoneidad de esa experiencia.

No confunda su pasión y su experiencia en escribir código con lo que un buen programador es, existen personas que han una gran cantidad de código, que saben las sintaxis de los lenguajes al derecho y al reves y que cuando se les pide una opinión dicen que el mejor programador es el que puede escribir codigo en notepad y compilarlo sin que salga un solo error de ejecución. Esto es algo comparado a decir que el mejor golfista es aquel que con un solo palo puede hacer todos los golpes, ser bueno en algo no es tener una excelente memoria o aprovecharse de una destreza, es poder aplicarla y potenciarla al maximo a traves de las mejores herramientas que pueda encontrar, si usted tiene una destreza busque como sacarle el mayor provecho y consiga herramientas que potencien su destreza al máximo, pero no caiga en el error de pensar que abusando de sus destrezas demuestra lo grande y bueno que es porque es un gran error.

Creo que los buenos programadores son aqullos a los que los apasiona y saben dominar las nuevas tecnologías, son personas con una estructura lógica de pensamiento encaminada a resolver problemas, pero tienen que conocer muy bien los problemas y las alternativas de solución, los pros y los contras, las posibilidades de mejora, lo que verdaderamente debe mejorarse y lo que no importa. Esta es una profesión de personas apasionadas y esa pasión hay que dirigirla muy bien para dar resultados que beneficien a la sociedad.