Yo empecé a programar profesionalmente cuando no existía Stack Overflow

Internet llegó para solucionarnos la vida en muchos aspectos. Una de sus ventajas más importantes es que nos permite colaborar entre todos. Gracias a la inteligencia colectiva, no hay casi nada que alguien en algún sitio no se haya preguntado ya, intentado, e incluso resuelto; por lo que tienes la respuesta a cualquier duda a golpe de click. Stack Overflow es un buen ejemplo de lo eficiente que puede ser esta "mente colmena", pero no existió siempre. ¿Cómo se las apañaban antes?

Stack Overflow, fundada en 2008, es la comunidad en línea más grande de desarrolladores. 50 millones de programadores profesionales y aspirantes la visitan cada mes. En ella aprenden y comparten sus conocimientos de manera grupal, para así encontrar soluciones a problemas de programación entre todos.

Si has intentado solucionar un pequeño trazo de código roto que no se visualiza, una compilación que da error y demás frustraciones por el estilo, sabrás que puedes pasar horas con tu propio error frente a tus narices. A veces no lo ves, otras aunque lo veas no lo entiendes. Y simplifica mucho la vida que alguien que ya se haya topado con el error venga y te lo señale. Pero antes esta posibilidad no existía.

Hablamos con programadores que se formaron a sí mismos consultando manuales oficiales y respondiendo sus propias preguntas, porque no existían plataformas de colaboración como estas. Esto es lo que nos han contado sobre el arte de aprender "a golpe de manual":

Francisco Ros.

Francisco Francisco, fotografía cedida para la entrevista.

Francisco es Doctor en Ingeniería Informática y co-fundador de Moss. "Además de realizar tareas no técnicas, dedico parte de mi tiempo al desarrollo de algunos componentes de Moss. En estos momentos programo en Python, aunque en etapas profesionales anteriores trabajé con C, C++ y Java".

"Siendo un niño mis padres compraron un Amstrad CPC 6128 con el que aprendí a programar en Basic (año 1991 aproximadamente). Principalmente leía manuales (en papel) y asistí a algunas clases de programación en una academia, pero en aquel entonces mi interés por programar se centraba en crear juegos absurdos de línea de comandos. Años más tarde me tocaba elegir carrera y por aquella fecha el uso de Internet se había extendido (aunque aún no teníamos tarifas planas y nos conectábamos con módems de 64kbps como mucho), y volví a sentir curiosidad por cómo funcionaba todo ese mundo: la web, el email, los ordenadores. Esto me hizo decantarme por estudiar Ingeniería Informática, y en la facultad es donde realmente aprendí los fundamentos de la programación".

Nos cuenta que en las carreras de informática en esos años se aprendía sobre todo a base de apuntes, libros de texto y la documentación del software: "Páginas de manual de llamadas al sistema o funciones de la libc, documentación de las librerías de Java, etc. En general, siempre que tenía algún problema con algún software de terceros acudía a la documentación oficial o al código fuente (si estaba disponible) para tratar de solventarlo".

En cuanto a lo positivo de "los tiempos de antes", nos dice que de alguna manera aprender algo “por las malas” hace que lo interiorices mejor pero que, evidentemente, puede llevar mucho tiempo cuando se trata de un problema complejo o difícil de depurar.

"Los sitios Q&A como Stack Overflow son geniales para ahorrar tiempo y tratar de ir a la raíz del problema cuanto antes. Como todo, eso sí, el problema viene cuando se abusa. No pasa nada por usar un trozo de código que veas allí en tu propia aplicación, siempre que entiendas bien qué hace y qué implicaciones tiene. Si no es así, se debería dedicar el tiempo necesario a entender bien el problema y la solución".

Por poner un ejemplo reciente que nos comentó Francisco, la vulnerabilidad Zip Slip, que afecta a multitud de software Java (entre otros), descomprime archivos ZIP porque los desarrolladores han usado en masa snippets vulnerables que encontraban en Stack Overflow sin saber lo que hacían.

David López:

Img 2816 Portrait David López, fotografía cedida para la entrevista.

"Soy programador PHP especializado en desarrollos Drupal. Nací en España y he vivido en Londres y, actualmente, en Suiza".

David aprendió a programar haciendo la antigua formación profesional. "La base, porque lo que se aprendía antes (no sé si ahora) era COBOL. Después de eso empecé la carrera de Ingeniería Informática pero nunca llegué a acabarla. Me puse a trabajar en algo relacionado con informática de sistemas y un día necesitaron una web interna. Como me atraía más la programación que los sistemas y llevaba tiempo practicando por mi cuenta con PHP me puse a ello y quedó medianamente decente", comenta.

"De ahí salieron más webs, fui depurando metodología, leyendo mucha documentación, prueba y error, etc. Eso, el arranque de esa primera web, fue hace casi 16 años. Una vez fui mejorando y podía resolver cuestiones más complejas decidí hacerme autónomo (jamás lo recomendaría en España, por cierto) y me fui especializando en Drupal porque hay un mercado específico que se paga mejor".

Hay quien entra en un sector porque “es lo suyo”, le gusta desde joven, su padre se dedicaba a ello o cualquier otra opción. David cuenta que se metió a programador porque se le da bien "la analítica del problema, el plantear una solución eficiente, el 'resolver el puzzle' y, además, está bien pagado".

Técnicamente no le gusta la programación en sí, pero es una parte más de resolver un problema que tiene un cliente. Precisamente por este punto de vista, respecto a si es más fácil o mas difícil ahora, con comunidades en lugar de a golpe de manual, nos dice que depende:

"Depende. Recomendaría asistir a clases al menos para la materia básica y luego ir probando. Pero la programación es algo para lo que no todo el mundo vale. Programar es lo de menos. Lo especial que requiere la programación es saber estructurar un problema, escoger la mejor solución de las disponibles (siempre hay más de una), descubrir y entender las implicaciones que tiene a posteriori esa solución y, una vez hecho esto, es cuando te pones a escribir código. Si no eres capaz, o no te gusta, la analítica en sí… entonces da igual que aprendas por tu cuenta, en Stack o en clases".

Si nos atrae realmente la programación, David recomienda lo básico: "un par de libros sobre algoritmos y, probablemente, empezar con algo medianamente interesante como Python. Hay muchos cursos gratuitos, no es excesivamente complicado el meterse con ello y tiene muchas aplicaciones 'reales' que hacen que te apetezca seguir. Hay cursos interesantes sobre elementos generales y comunes a cualquier lenguaje. No está de más echarles un ojo, pero a programar se aprende programando. Diseñando solución e implementando. Viendo cómo se puede mejorar esa implementación. Y practicando más que preguntando".

Miguel González:

Miguel Miguel, fotografía cedida para la entrevista.

"Mi nombre es Miguel Gonzalez, soy ingeniero técnico en Informática de Sistemas por la Universidad de Salamanca e ingeniero superior en Informática por la Universidad de León. Como la mayoría de los ingenieros en los 90, aprendí Pascal, C, C++ y luego más tarde Java (en una Erasmus que hice en Inglaterra, ya que no se impartía todavía en las facultades). También algo de PHP (y HTML, claro) y administración de sistemas Linux".

Nos cuenta sobre sus tiempos de universidad, que lo típico de la facultad era la programación en C bajo Unix, que terminó derivando en sistemas Linux. "Lo habitual era utilizar el conocido Man (que era el sistema de ayuda en línea de los sistemas Unix) y su equivalente escrito en manual. Aprendías a programar con algún libro de programación de dicho lenguaje, artículos en revistas y con el manual en línea de algún comando o función. Existían algunos foros en Internet donde la gente preguntaba, pero en aquella época en España el acceso a Internet era muy limitado y el precio por minuto era carísimo, como un 902".

Hablamos de una época en la que había que conectarse a Internet vía modem porque el ADSL o el cable todavía no habían aparecido. "Los primeros accesos a Internet los hacíamos dentro de la Universidad, donde la conexión era mala pero, al menos, gratuita. Apenas había páginas webs y pocos buscadores (solo existía algo parecido a Google llamado Altavista). Por tanto, al final cuando tenías un problema tenías que acceder a tu entorno cercano, algún compañero o preguntar a algún profesor. Hasta finales de los 90 o principios del 2000, no empezaron a hacerse habituales las mailing lists de grupos por tecnologías donde la gente se ayudaba con las dudas".

Hoy en día, Miguel piensa que el aprendizaje con cursos presenciales está siendo reemplazado paulatinamente por los cursos por vídeos, que permiten en muy poco tiempo y de forma visual aprender cualquier lenguaje o paradigma.

"Pero los manuales siguen siendo importantes para afianzar y estructurar la información y los detalles de un lenguaje o una herramienta, tanto para aprender de cero, como herramienta de consulta. Mi recomendación a la gente que comience ahora sería que, al igual que yo, aprendan primero unos pocos meses de mecanografía, es una inversión de futuro, y luego que aprendan varios lenguajes, tanto de muy alto nivel como Python a medio o bajo nivel como Ensamblador o C. También diría que algo de algoritmia (pseudocódigo sobre todo). Lo importante es convertirte en políglota y ver cómo se estructuran los lenguajes para poder adquirir rápidamente nuevos lenguajes en poco tiempo".

En este aspecto, casi todos los entrevistados parecen de acuerdo en que los lenguajes de programación son como, válgase la redundancia, los lenguajes (idiomas). Cuantos más aprendes, más simple te es el siguiente porque tu cerebro aprende a interpretar más deprisa los conceptos aunque sean dichos de otra forma.

José Arturo Sánchez:

Img 20180913 151357 José, fotografía cedida para la entrevista.

"Me llamo José Arturo Sánchez Canals, tengo 43 años y resido en Pinoso, Valencia". Aunque sus estudios oficiales son Licenciado en Química, Técnico Superior en Industrias Alimentarias y Enólogo, José se dedica desde hace muchos años a la informática, y más en concreto a la programación.

"No hice la carrera de informática, porque en mis tiempos no te enseñaban a programar, solo daban unas nociones… pero actualmente soy desarrollador en Ideade Creativos, me encargo del mantenimiento y creación de páginas web, así como del desarrollo de aplicaciones móviles y de aplicaciones de escritorio según las necesidades de los clientes".

Nos cuenta que los lenguajes de programación que utiliza son "php, html, jQuery (en sus diversas variantes de frameworks de desarrollo según las necesidades, Angular, Vue…) para la creación de páginas web, Java, Swift/objective-C y jQuery para los frameworks de desarrollo (ionic, electron, meteor, …) y para el desarrollo de aplicaciones móviles y de escritorio, sin dejar de lado Delphi (evolución de Pascal) para el desarrollo de aplicaciones. Con Delphi, de hecho, llevo trabajando desde algo más de 20 años".

"Comencé a programar con 14-15 años, con un MSX2, un ordenador de casa japonés. Inicialmente lo usaba para jugar pero, con el tiempo, un amigo y yo pensamos en hacer un juego nosotros mismos. Mi interés fue creciendo por lo que suponía programar: era crear, pensar algo, desarrollarlo (inicialmente en papel, cosa que sigo haciendo… antes de apretar una tecla, todo diseñado en papel), y superar los retos que puedan surgir".

Después de pasar por lenguaje Ensamblador, Visual Basic CC++ y Delphy, José pasó poco a hacer programas para terminales de punto de venta, programas de gestión, utilidades, etc…, incluso el programa Datagua para el Ministerio de Medio ambiente. "A partir de ahí, comencé a desarrollar páginas web utilizando diversas tecnologías según los requerimientos, y pasé al desarrollo de las aplicaciones para móviles cuando comenzó el auge de las mismas, allá por el Android 2.0. Y hasta la actualidad, en la cual ya me dedico dentro de esta empresa al desarrollo ‘full-stack’.

El acerbo de lenguajes que domina José resulta bastante sorprendente así que le preguntamos cómo podía saber tantos a la vez. Comenta que suele adquirir uno o dos cursos al mes en diversas plataformas online para ‘instruirse’ con los nuevos frameworks que van saliendo. "Lenguajes ya no se crea ninguno nuevo, pero sí lo que son frameworks (básicamente entornos o librerías de desarrollo, colecciones de funcionalidades, como lo queramos llamar), así siempre estoy al día".

"En mi época (hablo ya como los viejos), Internet no estaba tan extendido como ahora, por lo que dependía (y supongo que muchos otros también) de los libris/manuales que podías comprar y de las revistas de informática, de donde se aprovechaba todo. El método ‘oficial’ era el de prueba y error, se hacían las cosas y si daban fallos, se retocaba, y así hasta que funcionara. Actualmente, se tira para consultas de foros específicos, de Stackoverflow sobre todo, de YouTube en ocasiones, etc,. Lo que hemos visto los programadores ‘senior’ es un aumento del copy-paste".

Nos cuenta que, en su experiencia, la gente muchas veces no consulta los foros para solucionar las dudas; los consulta para que le den el código final hecho. "Esto implica realmente que no lleguen a aprender el motivo de su consulta. Te puedo comentar un caso así, que me sucedió en una prueba que realizamos para contratar a un desarrollador. Yo no me fijo en los títulos, valoro más los cursos realizados y, sobre todo, me gusta realizar una prueba práctica. En este caso, se puso un problema, y el candidato lo resolvió bien. El asunto es que el código me sonaba... había copiado el código de un artículo mío, con líneas de comentario y todo. Al comentárselo y pedirle que me explicara la solución, es decir, que me explicara el cómo funcionaba, no sabía explicarlo".

Un brindis por los tiempos de antes

Había gente construyendo informática incluso antes de que la informática en sí (software y hardware) fuera verdaderamente accesible para todos los públicos. Y fue duro, pero también parece que apasionante. Respecto a la conclusión de si era mejor o peor... diferente. Sin duda muy diferente.

Con Internet a mano todos somos muy listos porque todos sabemos lo que saben todos los demás, y eso está bien para mejorar grupalmente. Aunque, quizá, individualmente de la forma "dura" se interiorizaban mejor las cosas, según algunos de nuestros entrevistados.

Lo cierto, al final, es que este tipo de plataformas se han vuelto imprescindibles y han venido para quedarse. Mientras los tiempos siguen avanzando y las formas de aprender lo hacen con él, no olvidemos de dónde venimos para saber hacia dónde vamos. Y, de cuando en cuando, echemos la vista atrás para ver cómo han cambiado las cosas. En ocasiones las diferencias son sorprendentes.

Imágenes: portada de Emile Perron, siguientes de los respectivos entrevistados.

Comentarios

Entradas populares de este blog

Julian Assange será expulsado en "horas o días" de la embajada de Ecuador y será detenido por Reino Unido, según WikiLeaks

Country tonk gurl comes with spring