¿Cómo ser un buen programador? y no morir en el intento.

Alt text

Desde hace unos años, la sociedad esta intentando que cada vez hay mas personas interesadas en aprender lenguajes de programación y que los jóvenes sean mas “Geeks”. En Estados Unidos el gobierno esta recomendando que aprender a programar sea parte del currículo escolar. El cine, los videojuegos, el entretenimiento y muchas otras industrias nos van mostrando que ser “Geek” es cool y forma parte de nuestra realidad.

La realidad es que la demanda de programadores competentes es muy alta, y la competencia en el mercado cada vez es mas dura, diario salen nuevas herramientas, nuevas versiones de los lenguajes, muchas cosas que aprender y tan poco tiempo para realmente ser productivo. Hoy en día los genios introvertidos ya no satisfacen las necesidades de la industria.

Compañías y organizaciones hoy buscan profesionistas con habilidades blandas que complementen sus habilidades duras o técnicas. Es muy complicado estimar que tanto se requiere del conocimiento técnico sobre las habilidades blandas pero la planeación de proyectos es una de las tareas mas complicadas en el desarrollo de sistemas. Por poner un numero para este ejemplo podemos citar que las empresas hoy en día buscan personas que tengan un 60% habilidades duras y un 40% en habilidades blandas.

Un programador experimentado que lleve tiempo trabajando solo, difícilmente se puede adaptar al rol de un desarrollador en un equipo de trabajo y esto es debido a que muy posiblemente sea débil en habilidades blandas.

Para ser un buen desarrollador de Java, consideró que es necesario dominar las siguientes habilidades, desde mi punto de vista este es el patrón que buscan las empresas al momento de reclutar programadores para sus equipos de trabajo:

Habilidades duras (técnicas)

Entendimiento profundo del lenguaje de programación Java.

Es importante conocer porque es necesario escribir buen código, y como se beneficia un equipo de trabajo si eres un programador ordenado. Cuando entiendes las razones detrás de los patrones de diseño o escoges un determinado algoritmo para resolver un problema en particular, puedes presumir que sabes lo que estas haciendo. Recuerda leer más código del que escribes, adopta una guía de programación, infórmate sobre las novedades del lenguaje y habla con personas o únete a comunidades sobre java.

Herramientas para programar

No puedes ser un buen programador si no aprendes a dominar tus herramientas de trabajo. Una una de las partes mas importantes es escoger la herramienta adecuada y aprender a usarla. Es recurrente la búsqueda en Google comparando NetBeans Vs Eclipse, yo considero que esto es dictado por el entorno en donde trabajes y que poco a poco vayas adoptando otras herramientas que complementen tu productividad, por ejemplo.

  • Repositorios de versiones Git o Mercurial.
  • IDE de desarrollo IntellijIDEA, Eclipse o NetBeans.
  • Manejo de dependencias Maven o Graddle.
  • Automatización de despliegue Jenkins o Docker.
  • Administrador de proyectos Bugzilla o Jira.
  • Frameworks de desarrollo Spring MVC o Grails.
  • Servidor de aplicaciones Tomcat o Glassfish.
  • Servidores en la nube como Amazon AWS, Linode o Digital Ocean

Habilidades suaves

Claro es muy importante tener un conocimiento profundo de Java y sus herramientas, sin embargo tu cliente o empleador seguramente evalúa mas las siguientes habilidades:

Comunicación

La comunicación es la llave de todo lo que hacemos, sin ella seria imposible transmitir nuestras ideas. Es muy importante interactuar con el ambiente que nos rodea tanto en la vida privada como en la profesional, debemos aprender a comunicar los problemas, enfrentarlos y proponer soluciones. Darle sentido apropiado a las ideas que queremos comunicar puede ayudar en gran medida a que otros entiendan nuestra perspectiva.

Resolución de problemas

Parte importante del entrenamiento como programador es aprender a pensar y a solucionar problemas, sin embargo actualmente no es suficiente con solo escribir el código, es necesario involucrarse en la discusión de como se deben resolver los problemas y buscar la mejor manera de hacer. Algunos programadores parten de la idea que dice “dime que quieres crear y lo creare, sin embargo no me preguntes si es la mejor manera”, esta forma de pensamiento limita la manera de resolver los problemas ya que no se involucran en los proyectos.

Trabajo en equipo

Debes aprender a trabajar en equipo, hay varias técnicas donde la más común es la programación en pares, y esta se aplica tanto para proyectos pequeños como de gran escala. El objetivo es que dos programadores solucionen problemas, por lo regular uno es un programador senior y el otro junior. Es necesario que como desarrollador estés involucrado en contribuir a los objetivos del equipo.

Aprendizaje continuo, auto aprendizaje

La capacidad de aprender nuevos conocimientos a tu propio tiempo, es una habilidad muy importante para un desarrollador. Por lo regular las empresas no brindan capacitación y es necesario que aprendas nuevas tecnologías para proponer mejores soluciones. Es muy importante estar actualizado, puedes suscribirte a blogs, leer artículos y tratar de unirte a grupos de discusión.

Con este articulo pretendo ayudar a las personas que quieran convertirse en desarrolladores, en la actualidad no es suficiente con solo escribir código. Que otras habilidades crees que sean clave para mejorar como desarrollador.