Siempre ha querido aprender a crear software por sí mismo -o simplemente a crear un script de vez en cuando- pero nunca ha sabido por dónde empezar. Por suerte, la web está llena de recursos gratuitos que pueden convertirte en un programador en poco tiempo.
Este navegador no soporta el elemento de vídeo.
Desde la invención de Internet, los programadores lo han usado para discutir técnicas de desarrollo de software, publicar tutoriales y compartir muestras de código para que otros aprendan y usen en línea. Si tienes curiosidad por saber cómo convertirte en programador, puedes empezar a trabajar con toneladas de tutoriales y recursos gratuitos en la web.
Lo primero es lo primero: No te obsesiones con la elección de un lenguaje
Publicidad
Un escollo común para los principiantes es atascarse averiguando qué lenguaje de programación es mejor aprender primero. Hay muchas opiniones por ahí, pero no hay un «mejor» lenguaje. La cuestión es la siguiente: al final, el lenguaje no importa tanto. Entender las estructuras de datos y control y los patrones de diseño sí importa mucho. Cada lenguaje -incluso un simple lenguaje de scripting- tendrá elementos que también usarás en otros lenguajes y te ayudarán a aprender. En las clases que tomé para obtener mi título en Ciencias de la Computación, programé en Pascal, Ensamblador y C, lenguajes en los que nunca me pagaron por programar profesionalmente. Aprendí por mi cuenta todos los lenguajes que he utilizado en mi carrera, reutilizando conceptos que ya conocía y consultando documentación y libros para aprender su sintaxis. Así que no te obsesiones con qué lenguaje aprender primero. Escoge el tipo de desarrollo que quieres hacer, y simplemente empieza a usar uno que funcione.
Hay varios tipos diferentes de desarrollo de software que puedes hacer para varias plataformas, desde la web hasta tu escritorio, pasando por tu smartphone o una línea de comandos. En este artículo, vamos a esbozar algunos de nuestros tutoriales y recursos favoritos para aprender a programar para cada plataforma principal. Vamos a suponer que eres un usuario experto, pero un novato cuando se trata de manejar fragmentos de código, por lo que mantendremos las cosas a nivel de principiante. Incluso siguiendo un tutorial de programación para principiantes, se alegrará de ver lo lejos que puede llegar.
Publicidad
Scripting de escritorio
La forma más fácil de probar su mano en la programación para su escritorio de Windows o Mac es comenzar con un programa de scripting o macro como AutoHotkey (para Windows) o Automator (para Mac). En este momento, los codificadores más acérrimos de los lectores de Lifehacker están gritando a sus monitores, diciendo que AHK o AppleScript no son programación «real». Eso puede ser cierto – técnicamente este tipo de herramientas sólo hacen scripts de alto nivel. Pero para aquellos que se inician en la programación y que sólo quieren mojarse los pies, automatizando acciones en su escritorio, estas herramientas gratuitas son una forma fantástica de empezar, y te sorprendería lo mucho que puedes hacer con ellas.
Publicidad
Por ejemplo, Adam desarrolló la aplicación independiente de Windows que todos conocemos y amamos, Texter, utilizando AutoHotkey, por lo que este lenguaje de scripting es capaz de mucho más que proyectos de automatización a pequeña escala. Para empezar con AutoHotkey, echa un vistazo al tutorial de Adam sobre cómo convertir cualquier acción en un atajo de teclado utilizando AutoHotkey. (A continuación, echa un vistazo al código fuente de Texter para ver las entrañas de una aplicación de Windows basada en AHK.)
Publicidad
Desarrollo web
En lugar de estar atado a lenguajes de programación específicos y a la apariencia de un sistema operativo concreto, puedes poner tu aplicación asesina en el navegador y ejecutarla en la nube, como una webapp. Bienvenido al maravilloso mundo del desarrollo web.
Publicidad
HTML y CSS: Lo primero que hay que saber para construir cualquier sitio web es HTML (el marcado de la página que compone las páginas web) y CSS (la información de estilo que hace que ese marcado se vea bonito). El HTML y el CSS no son verdaderos lenguajes de programación: son sólo información sobre la estructura y el estilo de las páginas. Sin embargo, deberías ser capaz de crear HTML y CSS sencillos a mano antes de empezar a crear aplicaciones web, porque una página web es el frontend de toda aplicación web. Este tutorial de HTML es un buen lugar para empezar.
JavaScript: Ahora que puedes diseñar una página web estática con HTML y CSS, las cosas se ponen divertidas, porque es el momento de aprender JavaScript. JavaScript es el lenguaje de programación del navegador web, la magia que hace que los efectos dinámicos en la página funcionen. JavaScript es también la materia de bookmarklets, Greasemonkey scripts de usuario, y Ajax, por lo que es la clave para hacer todo tipo de golosinas web. Empieza a aprender JavaScript aquí.
Publicidad
Servidor de scripting: Una vez que sea bueno en hacer que las cosas sucedan dentro de una página web, va a necesitar poner alguna acción dinámica del servidor detrás de ella – y para eso, tendrá que pasar a un lenguaje de secuencias de comandos del lado del servidor, como PHP, Python, Perl o Ruby. Por ejemplo, para crear un formulario de contacto basado en la web que envíe un correo electrónico a algún lugar en función de lo que haya introducido el usuario, se necesita un script del lado del servidor. Los lenguajes de programación como PHP también pueden comunicarse con una base de datos en el servidor web, así que si quieres crear un sitio en el que los usuarios puedan iniciar sesión y almacenar información, ese es el camino a seguir. El excelente sitio de desarrollo web Webmonkey está lleno de tutoriales para varios lenguajes de programación web. Consulta su tutorial de PHP para principiantes. Cuando estés listo, revisa cómo usar PHP para hablar con una base de datos en el tutorial de PHP y MySQL de WebMonkey. La documentación y referencia de funciones en línea de PHP es la mejor de la web. Cada entrada (como ésta sobre la función strlen) incluye comentarios de los usuarios en la parte inferior que a menudo son tan útiles como la propia documentación. (Resulta que tengo debilidad por PHP, pero hay muchos otros lenguajes de scripting del lado del servidor con los que puedes decidirte).
Publicidad
Framas web: A lo largo de los años, los desarrolladores web han tenido que resolver y solucionar los mismos problemas y reescribir código similar para construir sitios web dinámicos. Para evitar que todo el mundo tenga que reinventar la rueda para cada nuevo proyecto de desarrollo web, algunos programadores han ideado marcos de desarrollo que hacen parte del trabajo repetitivo por ti. El popular marco de trabajo Ruby on Rails, por ejemplo, toma el lenguaje de programación Ruby y ofrece una estructura específica de la web para realizar las tareas comunes de las aplicaciones web. De hecho, Adam utilizó Rails para crear su primera aplicación web seria (¡e impresionante!), MixTape.me. Aquí está su opinión sobre cómo construir un sitio web desde cero sin experiencia. Otros marcos de desarrollo web populares son CakePHP (para programadores de PHP), Django (para programadores de Python) y jQuery (para JavaScript).
Publicidad
APIs web: Una API (Application programming interface) es una forma programática para que diferentes piezas de software se comuniquen entre sí. Por ejemplo, si quieres poner un mapa dinámico en tu sitio web, quieres usar un mapa de Google en lugar de construir tu propio mapa personalizado. La API de Google Maps facilita la inclusión programática de un mapa en una página con JavaScript. Casi todos los servicios web modernos que conoces y amas tienen una API que te permite incluir datos y widgets de ellos en tu aplicación, como Twitter, Facebook, Google Docs, Google Maps, y la lista continúa. Integrar otras aplicaciones web en tu aplicación web a través de las API es la última frontera del desarrollo web enriquecido. Todas las buenas e importantes API de servicios web ofrecen una documentación exhaustiva y algún tipo de guía de inicio rápido para probarlas (aquí está la de Twitter, por ejemplo). Vuélvete loco.
Publicidad
Scripting de línea de comandos
Si quieres escribir un programa que tome una entrada textual o de archivo y produzca algo útil, la línea de comandos es el lugar adecuado para hacerlo. Mientras que la línea de comandos no es tan sexy o atractiva como una aplicación web o de escritorio, para el desarrollo rápido de secuencias de comandos que automatizan los procesos, no se puede superar.
Publicidad
Varios lenguajes de secuencias de comandos que funcionan en un servidor web basado en Linux también funcionan en la línea de comandos, como Perl, Python y PHP, por lo que el aprendizaje de uno de esos malos hace que usted sea competente en dos contextos. Mi camino nunca me llevó demasiado lejos por el camino de Perl, pero me enseñé a mí mismo Python usando el excelente y gratuito libro en línea, Dive into Python.
Publicidad
Si convertirte en un ninja de Unix es uno de tus objetivos como programador, debes absolutamente conseguir ser bueno en el shell scripting con bash. Bash es el lenguaje de scripting de línea de comandos de un entorno *nix, y puede hacer de todo, desde ayudarle a configurar copias de seguridad automatizadas de su base de datos y archivos a la construcción de una aplicación de pleno derecho con la interacción del usuario. Sin ninguna experiencia escribiendo scripts en bash más allá de una docena de líneas, terminé desarrollando un completo gestor de listas de tareas personales en bash, Todo.txt CLI.
Add-ons
Hoy en día, las modernas aplicaciones web y los navegadores son extensibles con bits de software que se atornillan a ellos y añaden características. El desarrollo de complementos está ganando en popularidad a medida que más desarrolladores miran el software existente, como Firefox o WordPress, y piensan «Pero si sólo pudiera hacer ESTO…»
Publicidad
Puedes hacer un montón de cosas en cualquier navegador web con sólo un dominio de HTML, JavaScript y CSS. Los Bookmarklets, los scripts de usuario de Greasemonkey y los estilos de usuario de Stylish se crean con los mismos trozos de código con los que se crean las páginas web normales, por lo que merece la pena aprenderlos incluso si sólo quieres retocar un sitio existente con un pequeño fragmento de código.
Los complementos más avanzados del navegador, como las extensiones de Firefox, te permiten hacer más cosas. El desarrollo de las extensiones de Firefox, por ejemplo, requiere que usted esté familiarizado con JavaScript y XML (marcado que es similar a HTML, pero mucho más estricto en el formato). Ya en 2007, expliqué cómo construir una extensión de Firefox, una habilidad que adquirí después de tropezar con un tutorial gratuito.
Publicidad
Muchas aplicaciones web gratuitas y muy queridas ofrecen también un marco de extensión, como WordPress y MediaWiki. Ambas aplicaciones están escritas en PHP, por lo que la comodidad con PHP es un requisito previo para empezar. Aquí se explica cómo escribir un plugin para WordPress. Los desarrolladores que quieran estar a la vanguardia de Google Wave pueden empezar a escribir gadgets y bots en HTML, JavaScript, Java y Python. Yo escribí mi primer bot para Wave siguiendo este tutorial de inicio rápido en una tarde.
Publicidad
Desarrollo web para el escritorio
Lo mejor de iniciarse en la programación en un contexto es cuando puedes tomar esas habilidades y aplicarlas en otros lugares. Aprender el desarrollo web primero es una gran manera de empezar porque ahora hay maneras de poner esas habilidades para trabajar en aplicaciones de escritorio, también. Por ejemplo, Adobe AIR es un entorno de tiempo de ejecución multiplataforma que te permite crear tu aplicación una vez y liberarla para que se ejecute en el escritorio de cada sistema operativo en el que se ejecute AIR. Las aplicaciones de AIR están escritas en HTML, Flash o Flex, por lo que le permiten aplicar sus conocimientos de desarrollo web en un contexto de escritorio. AIR es una gran opción para desplegar aplicaciones de escritorio como una de nuestras 10 mejores aplicaciones para las que vale la pena instalar Adobe AIR.
Publicidad
Desarrollo de aplicaciones móviles
Las aplicaciones móviles como las que ejecutas en tu iPhone o smartphone Android están de moda ahora mismo, así que puede que sueñes con hacerte rico en la iTunes App Store con la próxima aplicación estrella. Sin embargo, para los nuevos programadores, meterse de lleno en el desarrollo de aplicaciones para móviles puede suponer una dura curva de aprendizaje, ya que requiere estar familiarizado con lenguajes de programación avanzados como Java y Objective C. No obstante, merece la pena comprobar cómo es el desarrollo para iPhone y Android. Echa un vistazo a este sencillo ejemplo de desarrollo de aplicaciones para iPhone para hacerte una idea de lo que hacen los desarrolladores de iPhone. Las aplicaciones para Android se escriben en Java, y aquí hay un video tutorial amigable de cómo se ve la construcción de un flujo de trabajo de la aplicación «Hola Android».
Publicidad
Paciencia, grasa en el codo, ensayo y error
Los buenos codificadores son una raza especial de persistentes solucionadores de problemas que son adictos a las pequeñas victorias que vienen a lo largo de un largo camino de ensayo y error. Aprender a programar es muy gratificante, pero también puede ser una experiencia frustrante y solitaria. Si puedes, consigue un compañero que te acompañe en el camino. Llegar a ser realmente bueno en la programación, como cualquier otra cosa, es una cuestión de perseverancia, de probar cosas y de adquirir experiencia a medida que se avanza.
Publicidad
Este artículo es sólo una recomendación de un programador autodidacta para los principiantes. Programadores con experiencia: ¿Qué me he perdido? No importa tu nivel de habilidad, añade tus ideas y recomendaciones para principiantes en los comentarios.
Gina Trapani, editora fundadora de Lifehacker, piensa que los mejores programadores son autodidactas. Su artículo semanal, Smarterware, aparece todos los miércoles en Lifehacker. Suscríbase al feed de etiquetas de Smarterware para recibir nuevas entregas en su lector de noticias.
Publicidad