Hacker & Developer. Una vida unidos, una vida separados. Y es que cuando te dedicas a buscar vulnerabilidades en el software, te dedicas a buscar posibles fallos en la construcción de un software. Una condición no controlada. Una situación que no existía en la mente del programador, una característica oculta en la tecnología utilizada por del developer para localizar un fallo.
Si embargo, entre hacker & developer hay una relación de amor/odio. Creo que existe una mezcla de admiración y respeto por lo que cada uno es capaz de hacer, aunque sea malo y doloroso para el otro. Da mucho coraje cuando developer bloquea a hacker con una protección. Y supongo que a developer le duele que hacker encuentre la vulnerabilidad.
Pero, yo fui developer antes que dedicarme a buscar fallos en la tecnología, y por eso siempre amaré a los que tiran líneas de código como forma de vida para hacer que algo resuelva un problema. Hoy he entrevistado a Carlos Azaustre, uno de esos developers. Uno de los que tiran líneas para solucionar problemas. Y que además se dedica a enseñar y a ayudar a otros developers a aprender.
Ha publicado un par de libros para aprender JavaScript y Angujar.JS, y ayuda a los que quieren aprender a programar desde su canal en Youtube y en Twitch, y por todo su trabajo ha sido reconocido como Microsoft MVP en Developer Technologies. Vamos, un divulgador nato.
Como aprender a programar es algo que, seas hacker o developer, debes saber en alguna u otra medida, le he hecho una entrevista para que nos dé su punto de vista sobre el estado del aprendizaje de la programación hoy en día, sobre cómo ve él la incursión de ChatGPT o CoPilot, y conocer un poco más a uno de los desarrolladores premiados por Microsoft. Espero que os gusten las preguntas.
1) Carlos, ¿a qué edad y con qué lenguaje te pusiste a crear tus primeros programas?
Pues descubrí la informática con unos 12-13 años. No tenía ordenador en casa y mi primer contacto con un PC fue en clases extraescolares en el colegio. Ahí todavía no sabía que se podía programar. En mi familia y círculo más cercano no había nadie que se dedicara a la informática como tal y mucho menos a programar.
Fue en bachillerato, con 16-17 años que tuve una asignatura optativa dónde la profesora nos enseñó a programar en C (TurboC de hecho) y a partir de ahi fue cuando descubrí que quería aprender todo sobre ello. Me compré algún libro de TurboC y descargué tutoriales para ampliar lo que aprendíamos en clase. Mi primer programa, por así decirlo, fue hacer un Trivial en C.
2) ¿No te dio nunca por crackmes o hackmes?
La verdad es que no. Me ha parecido siempre un tema muy interesante pero nunca me ha atraído mucho más que crear algo de cero. Considero que la ciberseguridad es un tema muy importante y esencial en cualquier software o aplicación y me gustaría saber más, pero hay tanto que saber en la vida que no se puede llegar a todo :)
3)¿Crees que con la llegada de NoCode/LowCodey AIs como ChatGPT/Copilot, programar va a ser una profesión de futuro?
Hay mucha gente alarmada con esto. Si entendemos la programación como únicamente picar código, está claro que no. Pero desde hace tiempo, la gran parte de las empresas y productos no son sólo líneas de código. Hay un proceso detrás de creatividad, ingeniería, optimizaciones… que la IA, por lo menos ahora y en un tiempo, no lo va a poder sustituir. A día de hoy y por unos cuantos años, las IA lo que nos van a ayudar es a reducir tiempos y optimizar nuestro día a día. Tareas repetitivas o tediosas la IA las puede hacer por nosotros en segundos o minutos y nosotros podríamos perder 1 día.
Lo que sí creo que es que la profesión de Programador, Desarrollador o Ingeniero de Software va a sufrir transformaciones. Pero esto es la tónica habitual de esta profesión. El trabajo se verá afectado, por supuesto, pero surgirán nuevos empleos más específicos que aún no somos capaces de ver. Lo que está claro es que un trabajo de programar 8h al día no tiene sentido desde hace ya un tiempo y estas nuevas tecnologías nos lo dejan más claro.
4) ¿Cuánto dedicas a aprender a programar y cuánto a saber programar sin cometer fallos de tipo SSRF, SQLi, Race Concitions, Reentrancy Attack, etc...? Por que no siempre son evidentes, ¿no?
Evidentemente. Programar se puede aprender más o menos rápido. Un poco de lógica, conocer que es una variable, bucles, funciones, etc… Lo difícil es hacerlo bien y esto se aprende con el tiempo, con la experiencia, y equivocándose muchas veces.
Pues descubrí la informática con unos 12-13 años. No tenía ordenador en casa y mi primer contacto con un PC fue en clases extraescolares en el colegio. Ahí todavía no sabía que se podía programar. En mi familia y círculo más cercano no había nadie que se dedicara a la informática como tal y mucho menos a programar.
Fue en bachillerato, con 16-17 años que tuve una asignatura optativa dónde la profesora nos enseñó a programar en C (TurboC de hecho) y a partir de ahi fue cuando descubrí que quería aprender todo sobre ello. Me compré algún libro de TurboC y descargué tutoriales para ampliar lo que aprendíamos en clase. Mi primer programa, por así decirlo, fue hacer un Trivial en C.
2) ¿No te dio nunca por crackmes o hackmes?
La verdad es que no. Me ha parecido siempre un tema muy interesante pero nunca me ha atraído mucho más que crear algo de cero. Considero que la ciberseguridad es un tema muy importante y esencial en cualquier software o aplicación y me gustaría saber más, pero hay tanto que saber en la vida que no se puede llegar a todo :)
3)¿Crees que con la llegada de NoCode/LowCodey AIs como ChatGPT/Copilot, programar va a ser una profesión de futuro?
Hay mucha gente alarmada con esto. Si entendemos la programación como únicamente picar código, está claro que no. Pero desde hace tiempo, la gran parte de las empresas y productos no son sólo líneas de código. Hay un proceso detrás de creatividad, ingeniería, optimizaciones… que la IA, por lo menos ahora y en un tiempo, no lo va a poder sustituir. A día de hoy y por unos cuantos años, las IA lo que nos van a ayudar es a reducir tiempos y optimizar nuestro día a día. Tareas repetitivas o tediosas la IA las puede hacer por nosotros en segundos o minutos y nosotros podríamos perder 1 día.
Lo que sí creo que es que la profesión de Programador, Desarrollador o Ingeniero de Software va a sufrir transformaciones. Pero esto es la tónica habitual de esta profesión. El trabajo se verá afectado, por supuesto, pero surgirán nuevos empleos más específicos que aún no somos capaces de ver. Lo que está claro es que un trabajo de programar 8h al día no tiene sentido desde hace ya un tiempo y estas nuevas tecnologías nos lo dejan más claro.
4) ¿Cuánto dedicas a aprender a programar y cuánto a saber programar sin cometer fallos de tipo SSRF, SQLi, Race Concitions, Reentrancy Attack, etc...? Por que no siempre son evidentes, ¿no?
Evidentemente. Programar se puede aprender más o menos rápido. Un poco de lógica, conocer que es una variable, bucles, funciones, etc… Lo difícil es hacerlo bien y esto se aprende con el tiempo, con la experiencia, y equivocándose muchas veces.
Figura 5: Libro Hacking de Aplicaciones Web: SQL Injection de Enrique Rando y Chema Alonso |
Hasta que no rompes algo no te das cuenta de lo que tienes que aprender. En ese momento, es el indicado para empezar a leer y formarse sobre patrones, algoritmos, código limpio, arquitectura, etc… Todo tiene su proceso y este es un camino en el que bajo mi opinión, nunca llegamos a ser “Seniors”, somos “Junior” en un eterno aprendizaje.
5) ¿Cuál es el proyecto del que te sientes más orgulloso de haber hecho?
Sin duda al aplicación web que era producto de una Startup que co-fundé con mi pareja hace ya unos cuantos años. Se llamaba Chefly y nuestra idea es que fuera “el Airbnb de la comida casera”. Como toda Startup, algunas salen bien y otras no tanto. Nuestro caso fue de los segundos pero aprendimos muchas cosas y conocimos a mucha gente.
5) ¿Cuál es el proyecto del que te sientes más orgulloso de haber hecho?
Sin duda al aplicación web que era producto de una Startup que co-fundé con mi pareja hace ya unos cuantos años. Se llamaba Chefly y nuestra idea es que fuera “el Airbnb de la comida casera”. Como toda Startup, algunas salen bien y otras no tanto. Nuestro caso fue de los segundos pero aprendimos muchas cosas y conocimos a mucha gente.
Desarrollar una aplicación completa, con su Frontend y Backend, usando nuevas tecnologías para la época y con poca experiencia en proyectos grandes y complejos fue toda una aventura. A veces miro hacia a atrás lo que hice y aunque tenía sus fallos me sigo sorprendiendo de que fuera capaz de desarrollar todo aquello.
6) Yo aprendí, BASIC, COBOL, Pascal, C, C++, Java y luego los lenguajes Web (y muchos menores), ¿cuáles son los que hay que aprender para el futuro según Carlos?
Salvo los tres primeros, yo también aprendí C, C++ y Java, sobre todo en la Universidad. Después en el “mundo real”, aunque empecé con Java, terminé decantando por el Frontend de las aplicaciones web y ahí JavaScript es el rey.
A día de hoy y de cara al futuro los más importantes son JavaScript por todo lo que puede abarcar (Frontend, Backend, IoT, Machine Learning, Tooling,...) y Python (Backend, Machine Learning, Data Science,...).
Despues tenemos otras alternativas dependiendo hacia donde nos queramos dirigir. Para sistemas y tooling tenemos a Rust pegando muy fuerte junto a Go. Y si nos orientamos hacia el sector blockchain ahi tenemos Solidity, Solana, etc…
7) ¿Qué es lo peor que has visto en un código publicado en un repo?
“He visto cosas que no creeríais”.
6) Yo aprendí, BASIC, COBOL, Pascal, C, C++, Java y luego los lenguajes Web (y muchos menores), ¿cuáles son los que hay que aprender para el futuro según Carlos?
Salvo los tres primeros, yo también aprendí C, C++ y Java, sobre todo en la Universidad. Después en el “mundo real”, aunque empecé con Java, terminé decantando por el Frontend de las aplicaciones web y ahí JavaScript es el rey.
A día de hoy y de cara al futuro los más importantes son JavaScript por todo lo que puede abarcar (Frontend, Backend, IoT, Machine Learning, Tooling,...) y Python (Backend, Machine Learning, Data Science,...).
Despues tenemos otras alternativas dependiendo hacia donde nos queramos dirigir. Para sistemas y tooling tenemos a Rust pegando muy fuerte junto a Go. Y si nos orientamos hacia el sector blockchain ahi tenemos Solidity, Solana, etc…
7) ¿Qué es lo peor que has visto en un código publicado en un repo?
“He visto cosas que no creeríais”.
Por suerte no he tenido muchas malas experiencias, pero las que se tienen se graban a fuego en la memoria. Alguna vez he tenido que meter mano a una aplicación web cuyo código era un solo fichero JavaScript con miles de líneas en jQuery donde no había manera de arreglar nada. También me he encontrado con claves y secret token en repositorios públicos… Más o menos lo normal en esta profesión :D
8) ¿Qué no debería hacer alguien que comience a programar hoy en día para no ser un programador mediocre mañana?
No parar de formarse. Ya no solo porque la tecnología avance y surjan nuevos lenguajes o frameworks, sino porque aprender a hacer buen código, estable, buenas arquitecturas que permitan escalar y evolucionar no es algo que se aprenda en un minuto. Hay que leer mucho y sobre todo aplicar lo que se va aprendiendo, es la única manera de mejorar en tu trabajo y no hay un camino rápido. Es cuestión de tiempo y dedicación.
8) ¿Qué no debería hacer alguien que comience a programar hoy en día para no ser un programador mediocre mañana?
No parar de formarse. Ya no solo porque la tecnología avance y surjan nuevos lenguajes o frameworks, sino porque aprender a hacer buen código, estable, buenas arquitecturas que permitan escalar y evolucionar no es algo que se aprenda en un minuto. Hay que leer mucho y sobre todo aplicar lo que se va aprendiendo, es la única manera de mejorar en tu trabajo y no hay un camino rápido. Es cuestión de tiempo y dedicación.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
No hay comentarios:
Publicar un comentario