¿Dónde se aprende a ser programador?

by @juanmaribeltran on 20/12/2012

“The only thing that interferes with my learning is my education”  - Albert Einstein

Últimamente parece que hay un hype enorme en la búsqueda de buenos programadores para startups y empresas de reciente creación. Se inunda la red de anuncios sobre ninjas, héroes, expertos y genios, pero la oferta real está llena de profesionales que, aún sabiendo programar, no son capaces de aportar la experiencia, conocimiento y/o velocidad de aprendizaje necesarios para poder funcionar en una empresa con pocos recursos y mucha necesidad de sacar trabajo adelante. Se necesitan buenos programadores y no se sabe muy bien donde se hacen.

Recientemente he pasado por varias situaciones, con diferentes personas, que me han llevado a la pregunta que encabeza el post y la verdad es que no tuve muy claro como responder. Es por ello que me he animado a escribir estas líneas.

En una de estas situaciones (bastante típica) estaba hablando con un amigo, de poco menos de 20 años, que se encuentra ante la decisión de qué camino tomar en su formación. Dentro de las opciones posibles se plantea la universidad, módulos, cursos, etc. A su parecer cualquiera de las alternativas eran desoladoras: en un país con un 50% de paro juvenil y un exceso de titulados que el mercado laboral no puede absorber, invertir 5 años de su vida en una carrera sin tener la más mínima seguridad de poder encontrar trabajo le hacen a uno pensar, y yo la verdad que lo entiendo.

Me pidió consejo y le informé del fuerte dinamismo que existe en mi sector. Son muchos los perfiles relacionados con el mundo de Internet para los veo que hay una demanda no cubierta: diseñadores, expertos en UXSEO, marketing online, etc. pero sobre todos ellos hay un perfil sobre lo que la demanda es muy elevada: programadores.

En las tecnologías con las que nosotros trabajamos (Ruby on Rails, Javascript, Node.js etc.) vemos que las ofertas por parte de startups y otras empresas para incorporar programadores son continúas. Así se lo hice saber a mi joven amigo y su pregunta inmediata: “¿y qué carrera hago para ser programador?”.

Uff….repasando todos los programadores que conozco, con los que he trabajado, en los lugares en los que había buscado para formar nuestro equipo, etc. la verdad es que la respuesta no parecía tan sencilla. Desde luego si esperaba algo del tipo “haz la carrera X” se llevó una decepción. Y es que no hay una formación formal, reglada o pensada para crear programadores. 

La repuesta (en mi experiencia) es que no hay un patrón, cada uno ha aprendido a su manera: cursos especializados, conferencias en Internet, foros, charlas, carrera, libros, amigos, prueba/error y un largo etc. En estos casos suele pesar más el esfuerzo y motivación de cada uno por formarse que el fácil acceso a un tipo de formación a medida. Y digo yo: dado que esta es una profesión con una demanda tan grande ¿no sería lógico que existiera una opción académica clara para formar programadores?… pues no, lo siento pero no la hay.

Por si os vale de algo hemos hecho una recopilación de las fuentes y medios de formación que han utilizado nuestros chicos:

 

Libros

 

La lista sería interminable pero algunos de los que más nos gustan:

Structure and Interpretation of Computer Programs (SICP): se trata de un libro sobre conceptos generales de programación publicado en 1984. Ha sido escrito por profesores del MIT.

Design Patterns: es un manual sobre ingeniería del software que describe soluciones a problemas habituales en el diseño de software.

Pragmatic Programmer: un libro escrito con entretenidas anécdotas, ejemplos completos e interesantes analogías. Ilustra las mejores prácticas y dificultades de muchos aspectos del desarrollo de software. ¿El objetivo? Convertirse en un programador pragmático.

Thinking Forth: se trata de todo un clásico en libros sobre programación. Aplica una filosofía de cómo resolver problemas y estilos de programación al lenguaje de programación Forth. Se tratan muchos principios de programación, ejemplos de código, entrevistas, aplicaciones reales, etc.

The Little Schemer: en un tono de humor y dejando ver la pasión del autor este libro abre nuevas puertas de en la manera de pensar para aquellos que quieran descubrir lo que es realmente programar.

Hackers and Painters: Escrito por Paul Graham esta compuesto de una colección de ensayos que tratan sobre lenguajes de programación, “hacking”, startups y muchos otros temas tecnológicos.

Javascript, the good parts: conocido por algunos como “el mejor libro de JavaScript” esta obra identifica la abundancia de buenas ideas que hacen de JavaScript un fantástico lenguaje orientado a objetos. También deja ver algunas limitaciones del lenguaje.

Growing Object Oriented Software, Guided by Tests: A través de ejemplos extensos puedes aprender como TDD (Test Driven Development) funciona en múltiples niveles. A lo largo del libro sistemáticamente se tratan los desafíos que los equipos de desarrollo encuentran con TDD.

Javascript web applications: A través de este libro podrás trabajar con ejemplos reales de aplicaciones que te ayudarán a comprender los conceptos involucrados. Aprender como crear aplicaciones en JavaScript que ofrezcan un experiencia óptima.

Object Oriented analysis and design: libro de referencia para lenguajes orientados a objetos. Se explican conceptos esenciales, métodos y muestra exitosas aplicaciones en una variedad de campos importante.

On Lisp: es un exhaustivo estudio de técnicas avanzadas del LISP. Da una completa descripción de macros y aplicaciones macro. El libro también cubre temas importantes relacionados con la programación como programación funcional, prototipado rápido, desarrollo interactivo y lenguajes embebidos.

Refactoring: esta obra trata sobre como mejorar el diseño del código existente. Sobre el proceso de modificar software de una manera que altere el comportamiento del mismo y mejore su estructura interna.

Smalltalk Best Practice Patterns: Este libro presenta una serie de modelos que organiza la experiencia exitosa de una serie de programadores de Smalltalk.

The Rails 3 Way: permite a los desarrolladores centrarse en lo que realmente importa: crear valor de negocio a través de código limpio, claro y mantenible.

 

Blogs, Webs, recursos…

 

Se pueden encontrar miles blogs, artículos  y en general webs interesantes sobre la tecnología que queráis desarrollar. Algunas de las fuentes preferidas por nosotros son:

CodeSchool: Se trata de una especie de escuela online de desarrollo. Puedes formarte a través lecciones en formato vídeo, desafíos y screencasts

StackOverflow: Es un web colaborativa de preguntas y respuestas específica para programadores y profesionales del sector. Una especie de “Quora” para desarrolladores..

Github: Se trata de una plataforma de uso muy extendido entre programadores para alojar proyectos de código abierto utilizando el sistema de control de versiones Git.  Es ideal para leer código de otros y mejorar el existente. Un recurso imprescindible.

Y muchos otros: destroyallsoftware.com , addyosmani.comigvita.comdailyjs.commartinfowler.com,

joelonsoftware.comlispcast.comblog.saush.comzachholman.com, etc.

 

Un poco como resumen algunas conclusiones e ideas que hemos recopilado a raíz de la creación de este post y que puede que os sea de ayuda si estáis interesados en formaros como programadores son:

Las bases se pueden obtener de  los libros: algoritmia, programación básica, paradigmas, etc.

La habilidad de hacer cosas se obtiene con la práctica y el “cacharreo”. Siempre hay que estar haciendo cosas nuevas, probando, experimentando y rompiendo cosas para saber como arreglarlas y como construir.

El buen diseño se obtiene con el estudio y la experiencia. Estudiando como han solucionado los problemas otros o con tus propias soluciones, hablando con otros programadores, leyendo código fuente e intentar comprenderlo y mejorarlo.

La mejor manera de aprender algo es haciendo un proyecto que necesite utilizar lo que quieres aprender, pero partiendo antes de una pequeña base funcional que te lo pueden dar libros, cursos, tutoriales u otros programadores.

El ser un buen programador, te lo da el tiempo. Cuando tienes que mantener código de otros o el tuyo propio que escribiste hace meses o años.. es cuando empiezas a pensar en como escribir código que luego puedas entender, extender, modificar y mejorar de manera fácil.

El contar a tu lado con un programador bueno, o un equipo, es la mejor manera de aprender. Complementa perfectamente las otras técnicas como leer libros o código de otros con resoluciones rápidas de dudas y muy especificas, explicación de nuevos conceptos, aclarar estructuras complejas, etc.

 

Este es uno de los temas que desde hace algún tiempo nos ha traído de cabeza en Redradix. Nuestro objetivo  es poder ofrecer un programa formativo donde un chaval entre sin nada más que su ilusión por aprender y salga siendo un buen programador. No es sencillo plantear un programa de este estilo, ya que se necesita una ingente cantidad de conceptos, materia, horas y recursos que habría que dedicar y aún somos una empresa joven (tiempo al tiempo). A pesar de ello vamos haciendo lo que podemos a través de nuestros cursos especializados donde pretendemos dar una base y una formación de calidad que se acerque a este objetivo.

Y ya puestos ¿por qué no nos decís donde os formasteis vosotros?…seguro que hay muchos preguntándose lo mismo.

 

juanmari@redradix.com

4 Responses to “¿Dónde se aprende a ser programador?”

  1. frecaze says:

    Esta interesante el post, pero falto añadir el recurso más importante de todos… “las comunidades” :)

  2. frecaze says:

    Es en las comunidades donde uno encuentra personas “locas” que te mantienen motivado a seguir aprendiendo, a compartir lo aprendido, a darte cuenta de todo lo que has compartido en este post :) en mi caso particular, lo poco o mucho que se de algún tema y lo que vengo aprendiendo últimamente y de modo autodidacta se lo debo a las comunidades en las que participo :)

  3. [...] diseño y desarrollo web ya han pasado por nuestras aulas. Vemos que existe una necesidad enorme de formación técnica de calidad en estas materias y la demanda de profesionales formados en estas materias no está, ni de lejos, [...]

Leave a Reply