0 .- Ir al grano

El deber de un buen programador es reducir el riesgo tecnológico, eso implica ir a la parte más compleja del proyecto primero, en otras ocasiones la más importante (no siempre coinciden).

1 .- Debe conocer varios lenguajes de programación

Un buen programador debe conocer las diferencias de los diversos lenguajes de programación sus puntos fuertes, o sea cuando (y cuando no) se debe ocupar alguno de ellos.

De un buen programador al menos se espera que sea fuerte en algún lenguaje, los generalistas (unicornios) son siempre bienvenidos pero sólo saber muchas cosas a medias no te hace un buen programador.

2 .- Debe conocer y saber aplicar patrones de diseño.

Un programador no crear todo desde cero, debe estudiar y conocer soluciones tipo para los problemas frecuentes, ningún programador decente que se aprecie de hacerlo puede darse el lujo de no conocer los patrones básicos de diseño de su lenguaje fuerte, un programador de javascript que no sabe lo que es un closure simplemente no conoce javascript.

3 .- Debe realizar control de cambios sobre sus códigos.

Todo buen programador trabaja con algún sistema de control de cambios, ya sea con GIT, SVN u otro, además sabe trabajar de acuerdo a algún branching model que le permite implementar set de cambios con tranquilidad y seguridad de no romper su código ni la versión que está en producción.

4 .- Debe realizar tests automatizados sobre su código.

Antes de implementar un función X, ¿estamos seguros de que no romperemos la función Y? ¿Antes de actualizar la versión de alguna componente, plugin, plataforma, sistema operativo, estamos seguros de que todo seguirá funcionando como antes? Antes de publicar un nuevo set de cambios estamos seguros de que no romperemos algo?

Con tests automatizados es posible saber inmediatamente si un cambio rompió alguna funcionalidad, y, si además es implementado junto al control de cambio es posible saber con exactitud que parte del código y en que commit fue que una determinado cambio rompió o hizo dejar de funcionar alguna funcionalidad.

5 .- Debe respetar las convenciones sobre el lenguaje que trabaja.

Todo lenguaje tiene sus convenciones, como la forma de nombrar variables y la forma de poner paréntesis. Las convenciones no siempre son cosa de estilo, así que es importante respetarlas.

VI 6 .- Debe ser consistente.

Los nombres de las variables deben ser consistentes a lo largo del código, si usamos notación camel case que toda la notación a lo largo del código sea camel case, además hay que respetar las convenciones del lenguaje, y no olvidar que si contamos los índices desde cero, que todos los índices partan desde cero.

7 .- Debe exponer su trabajo y aceptar críticas (mejoras) sobre el.

Si una persona no comparte su trabajo tiene pocas posibilidades de recibir feedback de personas que sepan más que el y por lo mismo tiene pocas posiblidades de mejorar. Uno aprende a través de compartir, Quora y StackOverflow son muy buenas fuentes, seguir en github proyectos de interés también es muy buena fuente de aprendizaje, uno aprende mucho de las correcciones que otras personas te hacen y además aprende revisando el trabajo de otras personas.

8 .- Debe refactorizar y documentar su código.

Primero los problemas se resuelven para un caso, luego para diez y luego para cien. Los programadores primero escriben el código para resolver un problema pero luego lo arreglan para que el código quede ordenado, entendible por humanos y reutilizable para otras ocasiones.

Además es deber del buen programador documentar ya sea con comentarios, diagramas y buenos commits.

9. .- Debe saber que la optimización prematura es la madre de todos los males.

Si un programador pasa cuarenta horas optimizando una parte de su código y por lo mismo deja de hacer cientos de otras cosas pendientes, no es un buen programador, es un obsesivo y aunque todos los programadores somos un poco obsesivos, hacemos un esfuerzo constante por enfocarnos en las cosas que son importantes, como por ejemplo terminar nuestro producto a tiempo.

Este punto a primera vista se contradice con el anterior, pero son cosas bien distintas,

10 .- Debe llevar un blog, o un cuaderno con lo aprendido.

A lo largo de una vida de programador vas a olvidar casi tantas cosas como las que vas a aprender, por lo mismo es necesario que todo buen programador lleve un cuaderno, o mejor aún, un blog, con sus apuntes.

11 .- Debe saber que las personas no leen las instrucciones.

Es la regla de oro de la usabilidad, las personas nunca leen las instrucciones, aunque estén en letra gigante y en un marco rojo, los usuarios usarán y abusarán de tu programa a su antojo. A veces maliciosamente y a veces romperán cosas por ignorancia, pero hagan lo que hagan no leerán las instrucciones. Cuando un programador entiendo esto bien el programa debe ser probado para que haga lo que tiene que hacer y que no haga lo que no tiene que hacer.

12 .- Humildad

Un buen programador sabe que siempre hay algo nuevo que aprender, y por más bueno que sea no lo sabe todo, cualquier persona puede enseñarte algo nuevo, no importa si es más viejo o más joven que tu, por lo mismo todo buen programador debe ser humilde.

13 .- Buscar en google (RTFM)

Todo buen programador sabe buscar información en google, sabe que no toda información es fiable y muchas veces está desactualizada, el buen programador sabe seleccionar la información que necesita, no se limita al copy paste y puede entender como aplicar lo leído a otros contextos.

Share Button

Director de DesafíoLatam. Ingeniero Civil Informático de la Universidad Federico Santa María. Emprendedor lean, dedicado al desarrollo de una mejor web con ruby on rails. Fanático de los números y las métricas, la música y la fotografía.