Programar está de moda, pero eso no lo hace fácil.

Hace tiempo decía de mi mismo que era un diseñador que sabía programar, pero en los últimos seis años de mi carrera, el orden de los factores se ha ido invirtiendo poco a poco. Ahora soy un programador –la mayor parte del tiempo– que también diseña.

Esto no quiere decir que me guste una carrera más que la otra, pero desafortunadamente el diseño gráfico es una de las carreras peor pagadas en México mientras que los ingenieros de software se encuentran en gran demanda gracias al boom tecnológico que vivimos. Dólares contra dólares, es fácil elegir.

Los bolsillos profundos de los inversionistas que nutren al sector tecnológico han provocado una guerra entre las compañías para conseguir el mejor talento, así haya que encontrarlo en el rincón más remoto del planeta. Ésto, por consecuencia, ha hecho que cambiar de carrera, desde cualquier carrera, hacia la ingeniería de software tenga mucho sentido económico.

Y el mundo lo ha notado. Por eso ahora el internet está lleno de escuelas y academias y cursos que enseñan a programar, porque programar es la habilidad del futuro. Programar va a sacar al mundo de pobre. Programar empodera a las minorías. Programar es el nuevo alfabetísmo.

Programar se puso de moda.

No estoy tratando ser cínico, nade de eso. Habiendo pasado personalmente por este cambio de carrera, puedo atestiguar en carne propia sus beneficios. Lo que no me late, es que parece que se minimizara el esfuerzo requerido para ser un buen programador1. Es como si, luego de mirar los éxitos obtenidos por J.K. Rowling y George R.R. Martin, de repente el mundo decidiera que el camino al éxito termina en saber leer y escribir. Para hacer un best seller, hace falta mucho más que conocer el abecedario.

El camino del coder.

Para mi han sido más de diez años y todavía tengo un fuerte caso de síndrome del impostor. Cada año trato de remembrar lo que he aprendido en los últimos doce meses y cada vez me sorprende mi audacia de haber pensado que sabía algo. Me avergüenzo terriblemente de el código que escribí hace 5 años y casi siento que debería regresar lo que me pagaron por él (not really). Lo que quiero decir es que es un proceso de aprendizaje que no termina, es como correr un maratón donde la meta no deja de moverse, es una tortura para quien quiere una profesión fácil y estable.

Y no se trata solo de tener amor al arte y desear superarse a uno mismo, además la industria nos cambia el juego cada poco tiempo, volviendo obsoleto gran parte de nuestro conocimiento. Me cuesta pensar en otra profesión donde la necesidad de actualizarse sea tan tiránica como en programación de software. Tratándose de campos que están en constante movimiento, como el desarrollo de front-end, no es poco común que el zeitgeist cambie por completo cada seis meses.

Si la industria decide colectivamente que hay una mejor forma de hacer las cosas, se moverá, sin importarle el tiempo y esfuerzo que hayas invertido en el status quo. O tus sentimientos.

Esos locos que programan.

Mientras que aplaudo los esfuerzos por enseñarle a programar a la mayor cantidad de personas posible, dudo que un futuro en el que todos programemos sea realista. Mucho menos uno en el que todos estén ganando sueldos competitivos de Silicon Valley. La realidad es que solo algunas personas –algún tipo de personas— pueden ser programadores.

Es fácil pensar que esta distinción tiene que ver con la inteligencia, pero no necesariamente. Probablemente la mayoría de las personas podrían aprender a programar, es decir: aprender los conceptos, si su enseñanza fuera obligatoria en las escuelas. Pero no todos pueden ser programadores.

En mi opinión, para ser un buen programador que además se siente feliz y realizado con su trabajo, se requiere cierto tipo de personalidad. Hay que tener una curiosidad natural, un deseo insano de aprender todo el tiempo. Hay que tener una gran paciencia Se requiere tener una curiosidad natural, unas ganas de aprender, una enorme paciencia y una resistencia inhumana al aburrimiento.

La motivación económica ayuda, pero no es suficiente. Para ser programador hay que amar el código. Y no todos pueden.


[1]: Donde para definir bueno uso los crecientes requerimientos de la industria.


Disclaimer: Como experimento, publiqué este post también en Medium.

Babel, el Javascript del futuro, hoy.

Babel –antes llamado 6to5– es un traspiler, o sea una herramienta que te permite escribir tu código usando muchas de las novedades en ES6 y produce código compatible con ES5, el cual es soportado por la mayoría de los navegadores modernos.

Para los que no saben, ECMAScript 6 (o solo ES6, para los cuates) es el nombre de la siguiente versión estandarizada de JavaScript, la cual añade un gran número de mejoras que nos facilitarán la vida a quienes pasamos la mayor parte del día escribiendo en este lenguaje.

Personalmente he estado usando Babel en mis últimos proyectos y me estoy (mal) acostumbrado muy rápido a las nuevas bondades sintácticas. Es perfecto para usarse en conjunto con Browserify y React.

Si eres un front-end, tienes que mirarlo de ya.

Harp es la mejor herramienta para hacer sitios estáticos

Harp es una utilidad de línea de comando que facilita enormemente la creación de sitios estáticos. Si ya tienes instalado node.js y npm empezar a desarrollar con Harp es tan simple como instalarlo via npm:

$ npm install -g harp


Ultimamente he tenido que hacer muchos sitios estáticos y en diferentes grados de dificultad y he experimentado mucho con mi toolchain tratando de encontrar las herramientas que me ayudan a trabajar más cómodo y contento. Luego de probar diferentes combinaciones de (toma aire) grunt, gulp, browserify, codekit, livereload, http-server, broccoli, webpack, etcétera (¡uf!) estoy feliz de haberme topado con Harp que es super simple y más que suficiente en la mayoría de los casos.

En términos simples, Harp es dos cosas: Por un lado es un servidor web que ejecutas desde el directorio de tu proyecto y que ejecuta automáticamente varios lenguajes pre-procesadores de HTML, CSS y Javascript tales cómo HAML, Jade, Ejs, SASS, Less, Stylus y CofeeScript entre otros.

Por otro lado, Harp incluye una herramienta para exportar y compilar la salida de todos estos procesadores en HTML y JavaScript plano que puedes colgar en cualquier servidor que pueda servir HTML.

Así que si eres un desarrollador front-end y necesitas crear algunos sitios estáticos y no quieres complicaciones te recomiendo que le des una oportunidad a Harp antes de complicarte con las otras herramientas.

¿Es usted un artesano?

En algún momento de el año pasado se cumplió oficialmente mi primera década como –la verdad es que no se bien cómo definirlo, ¿web designer? ¿web developer…?– persona que se dedica a hacer web profesionalmente. Y por alguna razón me he puesto muy reflexivo e introspectivo respecto a la profesión, al medio, y a lo que significa hacer lo que hacemos diariamente.

Hoy me encontré con este artículo: Seven principles of rich web applications, escrito por Guillermo Rauch que en partes iguales me voló la cabeza y me confirmó algunas conclusiones a las que había llegado por mi cuenta y enseñaba en mis charlas.

El stack de aplicación y la cantidad de tecnologías involucradas en hacer un sitio (o aplicación) web hoy en día requiere de una cantidad de habilidades interdependientes que van creciendo cada día en complejidad. Antes era un tema controvertido el que si los diseñadores deberían ser capaces de implementar sus diseños en código, hoy me parece un tema tan absurdo como que si los carpinteros deberían saber cortar madera.

Al igual que un buen artesano conoce su producto de pe a pa, desde la selección de ingredientes hasta la manufactura, producción y distribución de los bienes que produce, el desarrollador web moderno posee las habilidades necesarias y puede crear productos completos si hace falta. Es un artesano.

Es mi opinión que esos diseñadores que solo saben pasarle los PSDs que hizo a alguien mas para que los rebane y los maquete, junto con otros especialistas, pronto no tendrán lugar en la industria. Repito, es mi opinión, pero mi intención no es convencer a los especialistas actuales que tienen buen trabajo y ganan bien. Bien por ustedes.

La razón por la que comparto esta opinión es para las siguientes generaciones que no están siendo preparadas para el mundo hiper-competitívo que es la escena tech de hoy en día. Lo siento, lo más probable es que su licenciatura en comunicación gráfica y su maestría en diseño de interacción no les vaya a servir de mucho.

Sean generalistas, sean artesanos.

Necesitas saber CoffeeScript

CoffeeScript es un pequeño y bonito lenguaje de programación que compila en JavaScript creado por Jeremy Ashkenas, luego de leer este libro

Si conoces bien JavaScript no te costará nada de trabajo aprender CoffeeScript y muy probablemente agradecerás lo elegante y simple de su sintáxis, la cual se inspira mucho en Ruby o Python. Pero CoffeeScript no se trata solo de quitar parentesis y corchetes a JavaScript, sino que el lenguaje incluye bondades como comprensiones y herencia pseudo-clásica. Además de que el código generado está tan optimizado no es de sorprender que a menudo el JavaScript resultante es mucho más eficiente que uno generado a pesar de seguir siendo bastante legible.

Habrá una inevitable y comprensible resistencia al cambio de parte de algunos desarrolladores, pero la importancia de CoffeeScript es evidente para cualquiera que esté prestando atención. Personalmente, empecé a experimentar con CoffeeScript a finales del 2010 y ahora se ha vuelta una herramienta indispensable en mi workflow.

Si los ejemplos en la documentación oficial no te bastan, el mejor recurso para aprender a entender CoffeeScript es el excelente tutorial de PeepCode.

PadPressed



Hoy fue el lanzamiento oficial de PadPressed, un plugin para WordPress que transforma tu sitio en una aplicación HTML5 para ser navegado comodamente desde una iPad.

Si quieren quedar bien con estos hipster y early-adopters con dinero que son los usuarios de iPad, les recomiendo que compren el plugin y lo instalen en su sitio. Pero corran antes de que se acaben.

Fue hace poco más de un mes qué Andres y Jason me mostraron la idea y me invitaron a formar parte de este proyecto al que simplemente no me pude negar. Muchas horas de desarrollo y miles de líneas de código después puedo decir que ésta ha sido una de las experiencias más gratificantes en mi carrera como diseñador/desarrollador web.

Las tecnologías involucradas son lo último y lo más avanzado en diseño web basado en estándares: HTML5, CSS3 y Javascript. Es dificil de creer todo lo que es posible hacer cuando tienes permiso de ignorar por completo a Internet Explorer. Es sorprendente.

Aprendí muchísimo con éste proyecto y aunque me falta el tiempo necesario para hacer todos los tutoriales, screencasts, conferencias online, etc. que quisiera, me gustaría compartir algo de lo que aprendí con ustedes. Así que pueden preguntar lo que quieran sobre el desarrollo de PadPressed en los comentarios de este post y prometo que haré mi mejor esfuerzo por responder.

Por cierto, si quieren darse una idea de como se ve PadPressed, pueden visitar este humilde sitio desde una iPad o desde Safari 4 cambiando su User Agent.

CodeHere

En un post anterior, les platiqué de mis eternos problemas para insertar snippets de código en este humilde blog. En aquella ocasión había llegado a la conclusión que Gist era la herramienta perfecta pero la verdad es que tiene un defecto: el código no se ve en el feed.

Así que se me ocurrió que no era necesario para nada escribir el código “a mano” en el post (lo cual apesta) sino que es más fácil subirlo WordPress, adjuntarlo al post y luego usar un plugin para colorear el código. Y aqui les presento éste plugin.

Bueno, lo presento despues del salto.

Continue reading

Video de HTML5 para principiantes

Creo que le debo una explicación a mi audiencia: La semana pasada durante la transmisión en vivo de la conferencia antes anunciada experimenté una serie de problemas técnicos que finalmente hicieron imposible que ésta se llevara a cabo con éxito.

No está de más decir que fue una fuente de frustración personal, puesto que llevaba casi mes y medio preparando todo para ese día y me daba mucha pena con las casi 200 personas que llegaron a estar viendo el evento en vivo.

Pero bueno, creo que en lo que resuelvo estos problemas técnicos, lo más indicado es entregar lo prometido. Así que grabe de manera offline la conferencia y aqui está para todos ustedes.

Continue reading

Pequeño tip para que las imágenes quepan en el viewport del iPhone

Resulta que estoy haciendo una versión especial para el iPhone de un proyecto – que les anunciaré la próxima semana– y me topé con un problema: las imágenes cuyas dimensiones exceden el ancho de la pantalla aparecen mochas y sin ninguna forma de hacer scroll.

¿Les ha pasado? Están de suerte, pues descubrí una manera muy simple de solucionarlo con solo un poquito de jQuery.

Continue reading