Muchos desarrolladores de Java me preguntan cómo llegar a ser mejores programadores, o cómo pueden mejorar sus destrezas como programador, o que si son muy buenos en Java pero no tan buenos resolviendo problemas y haciendo análisis, etc…

Todo es cierto, vivimos en una época en la que abundan muchos expertos en lenguajes de programación pero no hay muchos programadores de los de verdad. Es relativamente sencillo entender palabras clave, métodos y APIs del lenguaje de programación de Java, pero al mismo tiempo resulta complicado solucionar problemas reales, diseñar software robusto y reutilizable y sacar el máximo de la estructura de los datos y de los algoritmos.

A menudo he visto a los programadores en Java pasándolo mal cuando se les pide diseñar y picar código en un breve plazo de tiempo a pesar de ser muy buenos en lo que se refiere a los conceptos de Java y toda la teoría. Incluso los programadores senior con entre 4 y 6 años de experiencia programando en Java a veces fracasan a la hora de diseñar cosas como máquinas de café, programar máquinas de vending o incluso a veces invirtiendo de forma recursiva una lista enlazada. Igual me estoy desviando del tema de como ser un mejor programador pero es muy importante conocer cuales son las limitaciones propias e intentar averiguar como pulirlas. Si te cuesta picar código, entonces debes picar todo el código que puedas… Si te estresa y te sientes perdido diseñando cuando usas análisis y diseño orientado a objetos, entonces debes diseñar usando papel y bolígrafo todo lo que sea posible.
El hecho de que te cueste al principio es lo que realmente te puede impedir que te conviertas en un buen programador. Personalmente mi experiencia me dice que el hecho de programar y picar código, y el diseño de aplicaciones le cuesta mucho a un programador medio. Se debe a que la mayoría en su día a día en el trabajo no pican el código suficiente ni realizan muchos desarrollos. Por cierto, hay una gran cantidad de consejos para ser mejor programador pero yo me ciño a mi lista, la cual sigo y me ha ayudado siempre.
10 consejos para mejorar las destrezas de programación y llegar a ser mejor programador
Para llegar a ser mejor programador, tienes que ser realmente bueno en lo que se refiere a la estructura de los datos, algoritmos, diseño usando OOPS, multi-hilo y varios otros conceptos de programación, por ejemplo, recursión, divide y vencerás, prototipado y pruebas de unidad.
Programar requiere combinar varias destrezas o habilidades, lo que implica que no es posible aprender a programar en un breve plazo de tiempo. Más bien es un proceso que implica tiempo y experiencia y no ocurrirá de forma automática.


Te puedes echar 5 años haciendo un proyecto de programación en Java sin ser un gran programador debido al hecho de que la mayoría de las entrevistas de trabajo a programadores de Java se centran en la teoría más que en las destrezas básicas de programación. Pocos programadores practican los fundamentos básicos de programación. Si existiese un examen de programación obligatorio sobre como resolver problemas, apostaría que la formación media de los programadores sería mucho mejor. De todos modos, ahí va mi lista de como mejorar como programador:

1) Pica código: picar y picar y picar

¿Por qué situo picar código en el primer lugar de mi lista de consejos? Pues porque es lo más complicado y a la vez es el aspecto clave de la programación. Al picar código te das cuenta de los errores que cometes a la hora de diseñar, en la gestión de bugs, en la creación de hilos y luego vuelves sobre cada una de esas destrezas para mejorar. No puedes solo dedicarte al diseño de soluciones, tienes que programar para producir una aplicación, lo cual es importante dominar para tener éxito. Y ya que estás no pares después de solucionar un problema del código, siempre es mejor desechar tu primer desarrollo, que casi siempre será un prototipo, y es tu segundo desarrollo el que debe apuntalar los problemas y funcionalidades que perdiste de vista al programar dicho prototipo.

2) Lee libros de programación

Picar código es más fácil dicho que hecho, y existe una gran diferencia entre un buen código y un código pobre. Esto es obvio, pero, ¿cómo puedes distinguirlos? Hasta que no ves con tus propios ojos un buen código es difícil de entender realmente la diferencia… Y es aquí cuando los libros resultan muy útiles ya que la mayoría de la veces los autores son grandes programadores. Ofrecen toda su experiencia en forma de libro. Yo adoro los libros, pero hay uno que me ha ayudado especialmente, Clean Code de Uncle Bob. Al leer este libro he descubierto defectos en mi código y la forma de solucionarlo gracias a los consejos que ofrece. Mi consejo personal es que si puedes hacerte con libros de programación, no lo dudes. También recomiendo la lectura de libros más clásicos y usarlos como libros de consulta. Otro libro muy útil es Effective Java de Joshua Bloch, que está repleto de buenos consejos. Está en mi lista de libros imprescindibles para programadores de Java. Además, al leer, estás aprendiendo de la experiencia de otra persona, y solo hay dos formas de mejorar: o mediante tu propia experiencia (que es limitada) o mediante la experiencia de otros (que es ilimitada). Recuerda que el que mucho abarca poco aprieta, en vez de leerte 5 libros, es mejor leerse 2 que realmente te sirvan varias veces.

3) Contribuye a Código Abierto y darse de alta en listas de Mailing

Si contriubuyes a proyectos de código abierto, especialmente de Apache, Google y algunos otros es otra forma de mejorar tus destrezas como programador. El simple hecho de darse de alta a listas de mailing y seguir los debates y la actualidad te enseña mucho. Debido a que la mayoría de los debates son entre buenos programadores, al prestarles atención entiendes los problemas y el enfoque que les dan, las soluciones y puntos de vista, etc… Con el tiempo vas adquiriendo automáticamente buenos hábitos de programación. Para sacarles el máximo provecho, haz preguntas, da tu punto de vista si puedes, pero también sopesa y pondera los puntos de vista de los demás.

4) Practica la estructura de datos, Algoritmos y los problemas relacionados con el diseño

Iba a poner este punto en segundo lugar pero al final es el cuarto… En mi opinión esto es una de las cosas más críticas a la hora de llegar a ser mejor programador. La mayoría de lo buenos programadores que he visto y conocido son realmente buenos en estructura de datos, algoritmos y fundamentos. Al dominarlos, puedes sacarle el máximo provecho a todo lo que hay disponible. Debido a que la estructura de los datos es una parte fundamental de cualquier programa, su dominio es muy útil a la hora resolución de problemas. De igual forma, un conocimiento sólido de los principios de programación, y de algoritmos de búsqueda y de ordenar, y otros algoritmos típicos te ayudan a mejorar tus destrezas como programador.

5) Lee buenos blogs

Leer buenos blogs es como leer una pequeña parte de un libro. ¿Cómo puede leer blogs ayudarte a ser mejor programador? Bueno, simplemente lo hace. Debido a que la mayoría de los blogs los escriben programadores y la mayoría dan su opinión personal, su experiencia, a menudo resultan relevantes. Además, los blogs son pequeñas píldoras de información así que se digieren bien. Los blogs además ayudan a aprender sobre nuevas tecnologías y sobre las novedades de los lenguajes y APIs que ya existen. A menudo he visto cosas sútiles o cosas que he pasado por alto de algún aspecto realmente conocido en Java descrito en un pequeño post de un blog.

6) Lee código

Si leer blogs te ayuda a convertirte en mejor programador, leer código te ayuda aún más. El problema es que leer blogs resulta mucho más sencillo que leer código. ¿Se te da mal? Pues entonces tienes que insistir. Lee código de proyectos de código abierto, el código de tus compañeros programadores, tu propio código propietario, código de la SDK de Java e intenta entender por qué y cómo funcionan. Busca los patrones, desarrolla tu habilidad de ojear y buscar cosas… Al principio te resultará aburrido y difícil, pero con el tiempo desarrollarás un buen sentido del código, lo que te pondrá en guardia cuando cometas un error al picar y ayudar a otros a encontrar bugs. Tener un buen sentido del código es un signo de ser un buen programador. Ellos ven lo que otros pasan por alto.

7) Escribe pruebas de unidad

Las pruebas de unidad complementan el proceso de pensar y picar el código, y en consecuencia te ayuda a diseñar mejor tus aplicaciones. Cualquier cosa que sea difícil de probar puede ser mejorable. Además, al hacer pruebas de unidad, mejoras a la hora de hacer abstracciones, interfaces y mejora el código en general. Pero al igual que el diseño y picar código, hacer pruebas de unidad también es un trabajo árduo para el programador medio y lo más probable es que te resulte complejo. Algunos programadores hacen testeos triviales en vez de hacer pruebas pensando en el verdadero uso que el usuario va a hacer de esa aplicación. Recuerda que no hay substituto para el testeo ya que te hace pensar en la aplicación desde un punto de vista global en un escenario de usuario. Es otra oportunidad para encontrar errores y lagunas en tu código.

8) Revisa código

Al igual que las pruebas de unidad y el testeo, revisar código es otra cosa que te puede venior bien a la hora de mejorar como programador. La revisión de código es algo beneficioso tanto para el autor como para el que revisa. El que revisa coge a la larga un buen sentido del código y está en un lugar óptimo para dar consejos genuinos, mientras que el autor aprende de sus errores. A veces un código que tu piensas es está perfecto tiene bugs que solo unos ojos limpios de un tercero pueden ver. Cuatro ojos ven más que dos. Si trabajas en una empresa que hace pruebas de unidad y testeos del software, el hecho de revisar el código ya te convierte en mejor programador.

9) Habla con otros programadores y desarrolladores

La lectura es un ejercicio pasivo si se compara con hablar. Hablar sobre un desarrollo y debatir sobre el mismo con un compañero resulta muchas veces en un mejor desarrollo y en una mejor aplicación. Y es normal porque al hablar tu mente está más metida en asunto. Muchas veces encuentro bugs y lagunas al debatir mis desarrollos con otros desarrolladores. En la industria del software en la que los programadores suelen trabajar aislados en sus ordenadores, el hecho de charlar y hacer sesiones en la pizarra ayuda una barbaridad. No te sientes y piques código, también debes escuchar, pensar y pasar tiempo con tus compañeros desarrolladores.

10) Participa en foros y comentar en los blogs

Esta es otra forma de actividad que ayuda a repasar los conocimientos propios. Al compartir tus conocimientos, la primera persona que se beneficia es aquella que comparte. El mundo de la programación es enorme y tiendes a olvidarte de las cosas que no usas más allá de tres meses. Participando en, por ejemplo, StackOverflow y resolviendo dudas de otros, comentando en blogs y foros es una buena forma de repasar lo que ya sabes y a la vez corregir dudas propias.
Todo programador quiere mejorar como programador, pero no todos son capaces. Además de talento natural y ser capaz de resolver problemas, exige mucho trabajo, formación continua y constancia llegar a ser mejor.