Entrevista con Cory Althoff

Cómo convertirte en programador autodidacta: entrevista con Cory Althoff

Introducción

Cory Althoff es autor, ponente y asesor de empresas emergentes. Book Authority calificó su libro «The Self-Taught Programmer» como uno de los mejores libros de software de toda la historia. El libro se basa en su experiencia trabajando como ingeniero de software en eBay y en distintas empresas emergentes en Silicon Valley, a pesar de haberse graduado en ciencias políticas en la universidad.

Su libro te enseña a convertirte en programador autodidacta en Python con un método poco tradicional: aprender a programar primero y, después, conocer la teoría. Es una guía que te explica desde cómo escribir tu primer programa de Python hasta cómo pasar tu primera entrevista técnica.

Hoy en día, cada vez hay más personas que se convierten en programadores autodidactas. Pensando que esta tendencia no hace más que continuar, hemos decidido hablar con Cory sobre los mayores desafíos a los que se enfrentan los nuevos desarrolladores. Nos ha hablado sobre si es razonable que un nuevo desarrollador aprenda y ponga en práctica desarrollos de front-end y back-end, y en qué tipos de proyectos pueden esperar trabajar al principio de su trayectoria profesional los desarrolladores de Python.

self-taught-programmer python bookCory Althoff at Pyconjp

Evrone:  Hola, Cory. ¡Es un placer tenerte con nosotros! Empecemos la entrevista. ¿Crees que existe una «afinidad natural» hacia el desarrollo de software, de forma similar a lo que ocurre con tocar un instrumento o dibujar?

Cory: Seguro que hay personas que tienen un talento natural para la programación. Pero eso no quiere decir que la mayoría de las personas no puedan programar.

Te recomiendo leer «The Talent Code» de Daniel Coyle si te preocupa la idea de que no tienes un don natural suficiente para aprender a programar. Explica muy bien por qué el talento natural está sobrevalorado y por qué la clave del éxito en cualquier habilidad está menos relacionada con el talento y más con la práctica sistemática.

 

Evrone: Los editores de programación e IDE modernos, como VS Code, tienden a integrar Git con una atractiva interfaz gráfica. Para los nuevos desarrolladores, ¿crees que es mejor aprender a usar una interfaz de línea de comandos de Git o usar las integraciones de IDE?

Cory: En mi libro y en mis cursos, enseño a los alumnos a usar Git con la línea de comandos. Las integraciones de IDE son útiles, pero necesitas tener una comprensión básica de lo que ocurre debajo de la interfaz de usuario.

 

Evrone: ¿Cuál es el concepto o elemento que más les cuesta aprender a los nuevos desarrolladores?

Cory: Lo primero con lo que se atascan la mayoría de los programadores son las funciones. Sin embargo, el concepto que les suele resultar más difícil de aprender a los nuevos programadores es la programación orientada a objetos. La idea de pasar «yo» como parámetro en Python puede resultar especialmente confusa.

 

Evrone: ¿Necesitan los desarrolladores de software de todo el mundo ser capaces de leer y escribir inglés correctamente en 2020? ¿Es un requisito obligatorio para nuestra profesión o se trata más bien algo opcional?

Cory: Sin duda resulta útil, pero no es obligatorio. Es útil porque hay mucha documentación en inglés. Dicho esto, el año pasado tuve la oportunidad de dar una conferencia en PyCon JP en Tokio. Python es muy popular allí, pero hay muy poca gente que hable inglés en Japón. Así que está claro que sin duda puedes tener éxito como programador sin hablar nada de inglés.

Cory althoff self-taught programmer
Self-taught programmer bookCory althoff signs self-taught programmer book

Evrone: Tu libro «The Self-Taught Programmer» estableció una base sólida con la que cualquier aspirante a desarrollador de software puede empezar. ¿A qué te dedicas ahora mismo, con toda esta popularidad y un grupo de Facebook de 50 000 personas a tu cargo?

Cory: En estos momentos, estoy escribiendo un nuevo libro llamado «The Self-Taught Computer Scientist». Es la continuación de mi segundo libro. En el primer libro, explico algo sobre teoría de la informática; sin embargo, en este nuevo libro exploro en profundidad y explico algunos de los conceptos que ayudarán a los programadores autodidactas en toda su trayectoria profesional.

También tengo un nuevo proyecto denominado «Coding List». Es un sitio web que te permite filtrar más de 20 000 cursos de programación por precio, opiniones, temática y más. Una vez encuentres el curso adecuado, te ayuda a conocer a otras personas que también están aprendiendo a programar.

Evrone: Dirigir una comunidad tan grande en Facebook, ¿te ayuda a descubrir formas nuevas y mejoradas de enseñar a los nuevos desarrolladores?

Cory: Sin duda. Te ayuda a ver las preguntas que suelen realizarse una y otra vez. Este es uno de los motivos por el que creé Coding List. Muchas personas preguntaban cuál es el mejor curso para distintos temas de programación, algo que no era eficiente, porque teníamos que responder a las mismas preguntas continuamente. Así que decidí crear un sitio web que te ayudara a encontrar el mejor curso para cualquier tema de programación. He tenido bastantes reflexiones similares, lo que también me ha permitido mejorar el plan de estudios de mi curso.

 

Evrone: Suele decirse que Python es el mejor lenguaje de programación de uso general con el que deberían empezar los nuevos desarrolladores. ¿Pero qué lenguaje crees que es el segundo mejor para conseguir un empleo? ¿Te gustan otros lenguajes además de Python?

Cory: Si no enseñara Python primero, enseñaría JavaScript o Swift, según el campo en el que quiera centrarse el alumno. Son fáciles de aprender y hay una gran demanda.

 

Evrone: ¿Recomendarías a un nuevo desarrollador que empezara con un «editor para programadores» simple, pero ampliable, como VS Code? ¿O crees que es mejor empezar directamente con un IDE completo, como PyCharm?

Cory: En mi libro y en mis cursos, recomiendo a todo el mundo que empiece con IDLE. Muchos alumnos tienen problemas para aprender a usar IDLE, aunque es mucho menos complicado que VS Code o PyCharm.

Me gusta darles la oportunidad de conocer algo más sencillo primero. Más adelante, les presento PyCharm, que es mi IDE favorito. PyCharm tiene un gran número de características útiles que hacen que las tareas de programación resulten más sencillas, pero no las necesitas nada más empezar.

 

Evrone: Hay una idea de Ruby que afirma que «al elegir el lenguaje, también eliges los proyectos que harás para tu trabajo diario y cómo los desarrollarás». En relación con Python, ¿en qué tipo de proyectos crees que pueden esperar trabajar los nuevos desarrolladores al principio de su trayectoria profesional?

Cory: Uno de los motivos por los que me gusta tanto Python para los nuevos programadores es que es muy versátil. Si estudias JavaScript, solo te resulta útil en el desarrollo web. No vas a poder usarlo para ciencia de los datos.

Con Python, puedes abarcar un gran número de campos: desarrollo web de back-end y desarrollo de aplicaciones, desarrollo de juegos y ciencia de los datos, entre otros. Como Python se usa en tantas áreas distintas, como programador de Python, puede que al principio trabajes en alguna de estas tareas, lo que resulta emocionante. Aunque es probable que no te encuentres trabajando en el front-end de una aplicación o sitio web.

 

Evrone: ¿Es bueno que los nuevos desarrolladores aprendan las nuevas bibliotecas «asincrónicas» de Python al principio de su viaje? ¿O crees que esta función necesita experiencia práctica y es mejor aprender asyncio y aiohttp después de unos años?

Cory: No creo que sea bueno centrarse en estas bibliotecas cuando estás aprendiendo a programar. Es mejor aprender a usar esas bibliotecas más tarde, una vez hayas dominado los conceptos básicos de programación.

 

Evrone: Las sugerencias de tipo y el método de «tipado gradual» se introdujeron recientemente en Python y ya son muy populares entre desarrolladores con experiencia y autores de bibliotecas. ¿Pero qué ocurre con los nuevos desarrolladores? ¿Crees que deberían aprender los tipos desde el principio? ¿O es mejor que esperen varios años para tener experiencia práctica antes de aprender a colocar trampas para sus futuros errores mediante tipos?

Cory: Comprender los tipos de datos fue una gran revelación para mí cuando estaba aprendiendo. Es importante que los nuevos programadores comprendan el concepto de tipos de datos y se familiaricen con los distintos tipos en su lenguaje de programación. Como nuevo desarrollador, al principio no me preocuparía mucho sobre las sugerencias de tipos. Es una característica atractiva, pero no resulta útil para los nuevos programadores.

 

Evrone: ¿Qué piensas sobre todo el entusiasmo en relación con los «desarrolladores de pila completa»? ¿Crees que es razonable que un nuevo desarrollador aprenda y practique con el desarrollo tanto de front-end como de back-end?

Cory: No lo recomendaría. Aprender el front-end y el back-end fue uno de los mayores errores que cometí como desarrollador de software principiante.

Si volviera a hacerlo, me centraría en el front-end o el back-end únicamente. El problema de aprender los dos es que siempre me daba la impresión de que no era lo suficientemente bueno en ninguno de ellos.

Hay tanto que necesitas aprender continuamente para ser un buen desarrollador de front-end y back-end que no tiene sentido intentar aprender los dos. Es mejor convertirte en una superestrella de uno u otro. Además, ¡estás haciendo dos trabajos y solo te van a pagar por uno!

 

Evrone: Los desarrolladores aprenden cosas nuevas fuera de su trabajo, lo que con frecuencia suele hacer que se sientan «quemados» con su trabajo. ¿Qué recomendarías a los nuevos desarrolladores como una estrategia adecuada de conciliación de la vida laboral y personal para que la programación no ocupe literalmente toda su vida?

Cory: ¡Practica un deporte! Volví a empezar a jugar al baloncesto hace unos años y me ha venido muy bien para conciliar mi vida laboral y personal. Como programadores, nos pasamos todo el día delante del ordenador, así que encontrar una afición en la que no se use una pantalla, como jugar al baloncesto o cualquier otro deporte, es útil para evitar quemarte. También jugué a Ultimate Frisbee hace algún tiempo, que también es muy divertido, y estoy intentando aprender a jugar al golf, ¡aunque me parece muy difícil!

En uno de los episodios del pódcast de Tim Ferriss, habla sobre tener un objetivo profesional y otro personal (por ejemplo, duplicar los ingresos de su empresa y levantar 140 kg). De esa forma, si no alcanza un objetivo, aún tiene el otro, lo que es un consejo excelente que intento seguir también.

 

Evrone: El desarrollo de software es un sector que ha conquistado el mundo. Una gran cantidad de desarrolladores profesionales son autodidactas. ¿Pero cuál crees que es la formación adecuada para un desarrollador de software? ¿Realmente es necesario un grado en informática, con todos los contenidos de matemáticas, algoritmos y estructuras de datos? ¿O necesitamos algo distinto?

Cory: El problema que tengo con los planes de estudios de informática de muchas universidades es el orden en que enseñan las asignaturas. Es útil estudiar informática, matemáticas, algoritmos y estructuras de datos si quieres alcanzar el éxito como ingeniero de software. Sin embargo, creo que no tiene mucho sentido enseñar esas asignaturas al principio.

Los alumnos deben aprender a programar primero para ver lo divertido que es y, después, preocuparse por estas cosas. En algunos sectores, como el desarrollo web, no es necesario estudiar matemáticas para tener éxito. No tiene ningún sentido exigir matemáticas como un requisito previo para tu primera clase de programación, como hacen muchas universidades, ya que quita la ilusión de aprender a programar a aquellos que no les gustan las matemáticas.

Además, hay disponibles tantos recursos gratis y de bajo coste, que cada vez tiene menos sentido invertir tanto tiempo y dinero en ir a la universidad, ya que puedes aprender a programar más rápido por tu cuenta y sin endeudarte.

 

El primer libro de Cory se ha traducido a ocho idiomas y sus reseñas han aparecido en publicaciones como Forbes. Ahora, Cory está escribiendo su segundo libro, ayudando a los alumnos en su grupo de Facebook, «Self-Taught Programmers», aprendiendo a programar y creando la comunidad de Coding List. Nos complace saber que tantas personas de todo el mundo deciden aprender Python y orientar su desarrollo hacia este lenguaje. En Evrone, nos esforzamos por estar al día de los nuevos desarrollos tecnológicos y adoptamos nuevas e innovadoras herramientas y métodos. Si tiene alguna idea para un proyecto y quiere usar Python, nuestros desarrolladores estarán encantados de hablar con usted sobre las posibilidades. No importa en qué fase se encuentre del desarrollo de su proyecto: díganos cómo ponernos en contacto con usted y le ayudaremos a hacer realidad su proyecto.

 

Contacto
¿Tiene algún proyecto en mente?
Vamos a hacerlo realidad
Adjuntar archivo
Los archivos deben ser menores que 8 MB.
Tipos de archivo permitidos: jpg jpeg png txt rtf pdf doc docx ppt pptx.
Este sitio está protegido por reCAPTCHA y se aplican las Condiciones del servicio y la Política de privacidad de Google.