jueves, 29 de mayo de 2014

Programación 100% práctica

Ya había comentado que he comprado varios libros de programación y que casi ninguno me sirvió. Sencillamente el proceso de leer unas páginas, escribir mi código y ver si salió lo que decía el libro, se me hizo algo tan tedioso que creo que ese proceso es el culpable de que estén desertando del aprendizaje de la programación 100 personas por segundo en todo el mundo. 

Afortunadamente todo ha cambiado y ahora hay muchos recursos para aprender a programar de manera totalmente interactiva y adaptable a varios estilos. No me malentiendas, los libros son necesarios en algún punto, pero más necesario es que tú despegues, que arranques con un impulso tal que ya no te detengas. El arranque hasta alcanzar un a velocidad constante es la etapa más crítica, a mi parecer, de aprender a programar. 

Te voy a hacer una lista de las escuelas on line donde he podido aprender bastante de programación. Por orden cronológico:

1. http://www.codecademy.com/
Sitio muy bueno para comenzar a programar ya. Se encuentra disponible en español y además es gratuito.

2. http://teamtreehouse.com/
Buenísimo sitio de paga, barato por cierto, que además da 15 días gratis, lo suficiente para hacerte el curso de html o algún otro. Aquí hay mucha produccción, videos, etcétera. Lo recomiendo. No recuerdo que esté en español pero sí viene subtitulado en inglés.

3. http://www.codeavengers.com/
Otro sitio muy bueno es codeavengers, que parece ser más dirijido al publico infantil (no es tan cierto). Tiene parte de sus cursos de html, css y javascript, de manera gratuita. También es barato. Está empezando a ser traducido al español. 

4. https://es.khanacademy.org/
Sitio muy bueno para aprender a programar desde un acercamiento gráfico. Es gratuito y además el sitio tiene otras cursos gratuitos como matemáticas. La mujer que explica el curso además tiene una personalidad para hablar y una vocación de enseñar que da miedo. Gran parte del curso está subtitulado en español.

5. http://code.org/
Muy recomendado para aprender pseudocódigo. Está enfocado este sitio a enseñar las estructuras básicas de un programa. Es un sitio muy bonito en el que aprenderás bastante. El curso es corto, gratis y está disponible en español.

En todos estos sitios se tiene una especie de marco de trabajo en donde podemos ver si funciona o no lo que estamos escribiendo. Creo que la excepción sería teamtreehouse, pero los otros cuentan con el recursos de estar viendo cómo funciona lo que vamos escribiendo.

Mi recomendación es que tomes los 15 días de teamtreehouse; que resuelvas al menos un curso de codeacademy; que hagas el curso completo de khanacademy; y que hagas el curso completo de codeorg. Verás que todos tienen un acercamiento distinto a la programación. Claro que tú puedes seguir el orden que quieras, no es que deba ser como lo escribí yo. 

Como dato quiero decir que en México no he encontrado nada parecido a esto. La verdad es que estos gringos (en su mayoría) se están esforzando mucho mucho por llevar la programación a la gente y no me queda más que reconocerlo. 

Buen código.

El chapulín de los lenguajes de programación

En esta entrada quiero hablar de una de los obstáculos que harán más difícil trayectoria en el mundo del desarrollo de software. No es nada del otro mundo y creo que es un fenómeno muy particular del la programación o mejor dicho de los aspirantes a programadores. Ya he contado que uno se acerca a la programación esperando hacer cosas muy bonitas pero muchas veces podemos escribir varios cientos o miles de líneas de código y lo único que hemos conseguido es un programa que calcule las propinas que un individuo debe pagar en un restaurante. Además están todos esas personas bien intencionadas que nos recomiendan seguir un lenguaje o el otro o hablan maravillas de un lenguaje y de otro dicen que está en extinción. No saben cuánto tiempo he perdido leyendo incontables foros en los que se hablaba sobre cuál era el mejor lenguaje para aprender programación (de esto hablaré en otra entrada). He intentado aprender a programar en python, ruby, visual basic, C++ entre otros y nunca aprendí, ¿por qué? Pues yo era un chapulín de los lenguajes; saltaba de un lenguaje a otro buscando ese lenguaje de programación definitivo, ese lenguaje de programación más sencillo para aprender a programar, pero ¿cuál era? La verdad es que nadie lo sabe; no existe una respuesta contundente a esta pregunta porque no sólo depende del lenguaje sino depende de otras cosas.



Como dije yo era un chapulín de los lenguajes de programación. Primero leía algún foro con el título ¿Qué lenguaje de programación aprender? Luego me entusiasmaba lo que escuchaba de alguno, por ejemplo python. A continuación buscaba "sitios web desarrollados con python" y ya saben, salían varios sitios. También pudiera ser que buscara aplicaciones desarrolladas con python y lo mismo, me encontraba con muchas. Esto que estoy describiendo lo aplicaba con varios lenguajes, porque cuando python me cansaba comenzaba otra de mis búsquedas y ahora en lugar de python era ruby (en general siempre anduve rondando estos lenguajes). Dicho lo anterior podrás ver que el tratar de aprender a programar saltando de un lenguaje a otro era algo poco realista. Ahora mayormente lo que hago es programar en Javascript y me gusta. Siempre me gustaron los sitios web bonitos, con aplicaciones y cosas así y para eso javascript se pinta solo, de hecho javascript es el lenguaje de la web. Pero espera, no es que yo haya leído eso y di otro salto, ahora a javascript: no. No estoy diciendo que debas aprender este lenguaje, más bien te explicaré por qué estoy aprendiéndolo:

1. Típicamente si quieres hacer aplicaciones web y sitios web debes aprender HTML y CSS, y a continuación javascript es el paso casi lógico, aunque muchos se van por PHP. 
2. Muchos cursos on en línea gratuitos y muy buenos como el de Khan Academy, están hechos sobre o para aprender Javascript.
3. Me gusta.

Sí, yo sé que javascript no puede hacer cosas como las que podrías hacer con python, pero seamos sinceros, el elegir un lenguaje de programación basado en lo que podría hacer es como tratar de que al empezar un maratón, en el primer paso que demos, milagrosamente ya se vea la meta. Nada de eso, la meta no se ve, está lejos, lejísimos. Tú aprende en un lenguaje que te guste, yo elegí javascript principalmente porque hay muchos cursos buenos y bonitos en la red. Lo que quieres es aprender a programar y si logras tener esa mente de programador no importará el lenguaje con lo que lo logres. Con el tiempo aprenderás otros lenguajes, o aprenderemos, eso espero. Concéntrate en un lenguaje, no seas otro chapulín.

Programar es difícil

Antes de irme a dormir porque no he dormido en 24 horas, quisiera hablar de lo que separa a los hombres del código de los niños llorones del código. Esto de lo que hablo no es la inteligencia; no son las matemáticas; ni tan siquiera es una buena computadora; no, no, no, tampoco es la imaginación. Queridos aprendices de programación, lo que definirá si te puedes dedicar a esta profesión, que es bastante dura, es tu resistencia.

La resistencia de estar haciendo horas de código es lo que nos dice que por lo menos tenemos el requisito básico para ser programadores. No cualquiera puede estar un mes seguido escribiendo código, al menos unas líneas diarias; sencillamente la gente se aburre. Yo mismo en mis "n" intentos por aprender a programar he tirado la toalla una y otra vez. No era por falta de resistencia sino por otra cosa de la cual hablaré en otro post, pero sin embargo esa cosa de la que hablaré acababa por minar mi resistencia. 

¿Qué es lo que hace la resistencia por tí? Varias cosas y voy a enlistar algunas a continuación:

1. Te permite no desesperarte de ver tantas líneas de código y hasta te ayuda a disfrutarlo, casi casi como un juego.

Y es que cuando llegamos muchos a esto de aprender programación, queremos hacer cosas muy bonitas, y después de horas y horas de código apenas podemos hacer el famosísimo "Hello World!" y unas que otras pequeñas cosillas que distan mucho de lo que pensábamos que podríamos hacer.

Les aseguro que yo compré libros de html desde sus orígenes hasta el más actual HTML5 con la esperanza de hacer una página web, pero me empezaban a quedar cosas tan simplonas, tan decididamente feas, que en varias ocasiones renuncié sintiendo que era un papanatas del coding. Tambíén traté de incursionar en python, ruby, lenguaje R, flash, C++, etcétera. Además compré libros de lógica de programación, ingeniería de programación, entre otros. ¡Tenía todo eso y no programaba nada!

Tengo varios amigos que como yo quieren aprender a programar porque tienen muy buenas ideas pero como les dije, programar es duro, no difícil realmente, pero sí muy duro. Claro, vemos a gente que sale en comerciales diciendo "aprendí a programar en 2 meses", ¡WOOOORALE! Saben qué, es falso. Yo al día de hoy ya he de llevar mis dos meses aprendiendo a programar y apenas comienzo a sentir que entiendo ciertas cosas, pero me consuelo porque ya no me atoré, pude entender todo o al menos resolverlo y eso nunca lo había podido conseguir. 

2. Te permite salir del atorón programezco.

El atorón programezco es esa situación en la que el libro que compraste de 40 dólares dice que debes escribir tal o cual cosa y tú juras que estás escribiendo exactamente lo mismo, pero qué crees, en el libro funciona y en tu computadora no funciona y no sabes qué rayos pasa. Pues nada que te da el atorón programezco, situación que hace desistir de aprender a programar a 70 aprendices de programador por segundo en todo el mundo. El atorón programezco es creo lo más peligroso que te puede pasar como programador porque sencillamente es desesperante. Yo lo he sentido muchas veces menos ahora. El atorón no sólo es por el código porque puede surgir también al bajar archivos y en otras tantas situaciones. 

3. Te permite ir a un ritmo en que puedes entender.

Mucha gente se quiere saltar cosas; quisiera tener una mente tan poderosa que con sólo unas cuantas horas de código le permitiera hacer el próximo facebook. Cuando tienes resistencia vas avanzando a tu ritmo, sin desesperarte y de hecho te preocupas más por aprender que por avanzar rápido. Sobre todo cuando ya has pasado por varios atorones sabes lo importante que es aprender bien los fundamentos. Lamentablemente eso de buscar atajos es un vicio que viene de nuestra enseñanza de las matemátcas en el colegio, cuando odiábamos hacer ejercicios porque "ya habíamos entendido". 

Bueno, hasta aquí este post el cual espero les ayude a no desistir en su lucha por aprender a programar.

Buen código.


lunes, 19 de mayo de 2014

Programando

Hace mucho que no había escrito en este blog. La razón es que había abandonado el intento de aprender a programar. Sin embargo he regresado y tengo muchas cosas que contar. Los voy a poner al día y después haré algunas entradas particulares relativas a lo que exponga en este post.
programan do
Pues bien, me decidí a volver a la programación por instinto, por gusto. He intentado muchas veces programar, pero ¿saben? La programación es difícil, dura, tediosa. He leído a varias personas que se convirtieron en programadores exitosos, que hablaban de esto mismo. Incluso tengo amigos que dicen que la programación es tediosa. Tienen razón, sin embargo me decidí a aprender. Yo sabía que en el tiempo que no había programado algo debía haber pasado y claro que pasó, surgieron muchos recursos nuevos para aprender a programar de manera más efectiva, menos tediosa e incluso hasta divertida. Revisando testimonios de programadores encontré algunos sitios dedicados al asunto que ya probé:http://www.codeacademy.comhttp://www.teamtreehouse.comhttp://www.codeschool.com y http://www.codeavengers.com.
En otro post hablaré de estos sitios, hoy les diré que me renovaron el gusto por la programación y es por una sencilla razón: la calidad de los maestros. Inicié mi primer intento de “regreso” en un sitio diferente a los que mencioné, y fue http://www.coursera.org. Coursera es un sitio donde muchas universidades del mundo imparten cursos online. Inicialmente me enrolé en un curso de temas científicos, en otro de temas demográficos y dos relativos a la programación. He de decir que no terminé ninguno pero los relativos a la programación me hicieron recapacitar. Después buscando más fue que encontré los sitios que ya mencioné arriba.
Ahora bien, hablaba de la calidad de los profesores. He mencionado en otras entradas que soy alumno de la UNAD y que en dicha universidad curso la carrera de Ingeniería en Desarrollo de Software. En la UNAD uno entra a las lecciones y hace las tareas y exámenes que se piden y salvo porque es a distancia, el sistema es muy similar al clásico de universidad. He llevado algunas materias de dudosa calidad y lo relativo al software es bueno a secas pero podría ser mejor. Aquí es donde se separan esos sitios que mencioné arriba de todo lo demás. Estos sitios de verdad están comprometidos con que uno aprenda a programar y no sólo eso sino que existe una férrea competencia entre ellos, lo cual redunda en mejor contenido para los alumnos. Cada sitio cuanta con maestros que a su manera se desviven por enseñar lo mejor que pueden. En estos sitios aprendí en un mes lo que nunca aprendí en mi estancia en la UNAD y de paso en ningún libro. Nada de tonterías, directo a programar, a experimentar, a observar los resultados. Pueda ser que en este punto ya sentía la determinación por aprender código y esto afectó mi forma de aprovechar las clases, pero a esta determinación contribuyó la determinación de los creadores de estos sitios por enseñar código a sus alumnos. Cada uno de estos sitios, como proyecto, tiene sus propias características, pero detrás de ellos está la gran pasión por lo que hacen.
Les decía que me decidí y estos sitios me cayeron como anillo al dedo. Por primera vez no me desanimé, no me atoré en nada, todo pude resolverlo. De hecho pude lograr una racha de 30 días sin dejar de escribir al menos unas líneas de código. Estos 30 días me metieron de lleno en la dinámica del que desarrolla software y me hizo sentir que en efecto, tenía madera de programador y que el tedio para mí no era tal y que si había desertado antes una y otra vez no era por falta de ganas sino era por ausencia de buenos maestros y buenos contenidos. Pero ya no pasa eso más ya que hay gente buenísima por ahí tratando de que aprendamos código.
Sin duda que esta etapa en mi carrera como desarrollador de software es de las mejores que he tenido y apenas estoy comenzando.