Por mucho tiempo he querido escibir este artículo, incluso tengo uno en borrador que descarté por fome. Una serie de conversaciones me llevaron eventualmente a darle más coherencia al asunto.

Los sistemas operativos están hechos para usuarios normales

La otra vez conversaba con un amigo acerca de que lo difícil para empezar desarrollar en Android, había sido solucionar los problemas de Windows8.1 con Android Studio. Mi amigo me respondió que el problema no era del sistema operativo sino que de la aplicación, porque el sistema operativo no puede adivinar qué cosas van a necesitar las aplicaciones. Y concluyó con “Los sistemas operativos están hechos para usuarios normales, un desarrollador no es un usuario normal”. No está equivocado, le encuentro toda la razón, eso sí, me gustaría hacer una salvedad. En efecto, si usted lector no me cree que tiene razón, pregúntese, cuando fue la última vez que realmente leyó el mensaje de error antes de apretar aceptar. El usuario normal existe, no es peyorativo, pero es difícil hacer un sistema operativo estable y flexible para desarrollar, si la experiencia del usuario promedio se basa en meterse al Facebook y su mayor problema en olvidarse de las claves. La salvedad que quiero hacer es que, los sistemas operativos deberían de tener versiones para empezar a desarrollar. Por ejemplo, si en Ubuntu no se necesitara tanto la consola, o si hubiera algo intermedio y gratuito entre Windos8.1 y la versión pro (omito MAC apropósito por el precio). Sí, el sistema operativo es un calvario, muchos de los problemas para empezar a desarrollar derivan de ahí: Si los sistemas operativos fueran completamente transparente para el usuario que empieza a desarrollar, apuesto a que más personas desarrollarían.

I have a fever! And the only cure is a GUI!

Las GUI, Graphical User Interface, una interfaz para usar una herramienta de desarrollo. En general en desarrollo hay la cultura de hacer todo por línea de comandos, no sé por qué, pero la hay. Hay veces que usar la consola es el equivalente de ser machote. El Alexander Holmes me decía que no entendía eso, no le veía razón a usar la consola para GitHib si había una GUI (de hecho hay 3, la de GIT, la de SourceTree y la de GitHub). A lo que le respondí que lo entendía pero que a mi GIT no me hacia tanto problema, pero que las GUI son una gran opción para ese tipo de cosas y si te facilitan la vida no hay por qué no usarlas. En general cualquier herramienta que te facilite la vida está bien, a menos, que te vuelva dependiente y en el fondo no estés aprendiendo a codear. Por mi parte, la herramienta que me facilita la vida es Nitrous.io que es… es todo. Nitrous es un computador que está en la nube y accedes a eso a través del explorador de internet, ofrecen varias opciones con lenguajes de programación listas para empezar a programar en cuenta te terminas de crear la cuenta (gratuita).

The code hour

Hace unos días leí un artículo de Nitrous que hablaba acerca de The code hour y como la parte más dolorosa de desarrollar es preparar el ambiente de desarrollo. Cualquiera que haya tratado de instalar Rails en Windows8.1 lo sabe, y ahora también me pasó con Android Studio. En el artículo Nitrous contaba como usando su servicio a través del navegador se podía fácilmente pasar directo a desarrollar.

Cursos presenciales y la fantasía del código abierto

Yo aprendí a desarrollar en el curso presencial de Rails de en1mes. Hace poco ellos hicieron un bootcamp que dura varios meses, su publicación en Fayerwayer desató un montón de troleo. En resumen la idea era “está todo en internet, el código abierto se puede aprender con tutoriales gratis”. Eso es sólo parcialmente verdadero. Sí se puede. El problema es que un tutorial gratuito no es mantenido, si alguno de los componentes que se usan cambian, te quedaste tirado, hasta ahí llegó tu aprendizaje. Otro problema, los tutoriales abiertos no siempren son pedagógicos, no necesariamente están orientados a personas que no saben, hay veces que asumen que sabes un montón. Un ejemplo groso es el tutorial de Google para desarrollar aplicaciones de Android, hay varios puntos en donde asumen que sabes JAVA y que estás familiarizado con una IDE. Lo que más me acuerdo es que en un punto la instrucción es “Ahora refactoriza eso y cuando estés listo continua” ¡Qué es refactorizar! Un tutorial en internet puede no ser la mejor opción, la idea de que el código abierto está ahí para aprenderlo tiende un poco a la ideología.

No te quiero apabullar con la idea de que empezar a desarrollar te va a quemar, sino que te prepares. Si alguien me hubiera explicado eso, creo que hubiese controlado mejor mi frustración en un comienzo. Lo ideal sería que todo fuera perfectamente fluido para el novato y que a medida que se agarra experiencia, y con ello la necesidad de control, se pasara a sistemas operativos más personalizables. También hay muchas herramientas que te pueden ayudar a entender como funcionan las cosas, con botones y dibujitos, no las desaproveches ¡Pero no te vuelvas adicto!. Recuerda buscar formas de hacer menos doloroso el empezar, yo decididamente recomiendo Nitrous.io. Y por último no te dejes llevar por la corriente, lo importante no es tu sufrimiento, sino que escojas una alternativa con la que te sientas a gusto. Gran parte de desarrollar es no saber lo que estás haciendo, ten paciencia, se perseverante, y lo vas a lograr.