En este artículo vamos a hablar de los libros que te pueden ayudar a avanzar en tu carrera como desarrollador de software, que desde mi punto de vista, son esenciales.
Algunos desarrolladores piensan que basta simplemente con aprender a programar o diseñar software bien, pero lo cierto es que también hay que tener otras habilidades y conocimientos para que tu carrera avance a buen ritmo, y llegues a puestos de liderazgo si así lo deseas.
En este post hablaremos de tres tipos de libros:
- Consejos de carrera para desarrolladores y habilidades blandas
- Libros de historia de la computación
- Temas que te pueden ayudar a desarrollar habilidades de soporte
Como siempre, si tienes alguna recomendación, puedes dejarla en los comentarios. Empecemos.
Desarrollo de carrera
En estos libros verás consejos específicos de desarrolladores experimentados sobre la carrera de programador, qué habilidades y actitudes te conviene desarrollar.
The Pragmatic Programmer | David Thomas & Andrew Hunt
Este es uno de los mejores libros sobre la carrera como programador, que te da consejos de dos programadores muy muy experimentados. Su tema principal es el pragmatismo, que es una filosofía que te dice que no hay una sola forma de hacer las cosas, sino que debes adaptarte a las circunstancias y hacer lo que sea necesario para lograr tus objetivos. Otra forma de ver el pragmatismo es que hay que ser práctico, y no darle tantas vueltas a las cosas.
A grandes rasgos trata estos temas:
- Introducción a la filosofía pragmática
- Cómo ser pragmático al desarrollar software (nota que no es al programar, sino al crear programas)
- Herramientas que te pueden servir para desarrollar buen software
- Cómo llevar un proyecto pragmáticamente
Estaba en la duda de clasificarlo entre los libros de desarrollo de software o desarrollo de carrera, porque aunque habla sobre técnicas específicas y temas técnicos, su espíritu es una meta-habilidad o una actitud hacia el desarrollo y hacia la vida: el pragmatismo.
Puedes comprarlo aquí: The Pragmatic Programmer.
The Practice of Programming | Brian W. Kernighan & Rob Pike
Brian W. Kernighan es un desarrollador de software, programador y científico de la computación de las grandes ligas. ¿Has escuchado sobre AWK
? Es un programa y lenguaje programación legendario, y se llama así por sus creadores: Alfred Aho, Peter Weinberger y Brian Kernighan.
Rob Pike es uno de los co-creadores del lenguaje de programación Go, y también es un desarrollador de software con mucha experiencia. Ha co-creado otros lenguajes de programación, como Oberon.
En “The Practice of Programming” explican todas las prácticas que un desarrollador de software debe tener o aprender para desarrollar software exitosamente. Este libro se guía por los siguientes principios:
- Simplicidad
- Claridad
- Generalidad
- Automatización
Estos principios son aplicados a cosas como el estilo, la documentación, las pruebas, etc. Al igual que el libro anterior, estaba dudando en clasificarlo como libro de desarrollo de software, pero creo que el enfoque general, aunque muy técnico, va más enfocado en el desarrollo de una mentalidad conveniente.
Puedes comprarlo aquí: The Practice of Programming.
Code Ahead | Yegor Bugayenko
Yegor Bugayenko es un autor poco conocido de este lado del mundo, pero en Rusia es más famoso. Ha escrito varios libros sobre programación como “Elegant Objects” (1 y 2). Pero también escribió este libro sobre la carrera de programador, que es muy bueno.
Yo lo describiría como una visión cínica de la carrera de programación, con algunas recomendaciones sobre actitudes, formas de trabajo y tácticas para progresar en tu carrera. No creo que se deba tomar como una guía, sino más bien como un contrapeso a las opiniones de carrera más tradicionales, para ampliar tu visión. Además sí creo que dice algunas verdades incómodas que no a todos les gustará escuchar.
El punto débil de libro es su formato (que para mi falló completamente), en el que trató de hacer un historia de ficción (supongo que al estilo de The Phoenix Project), pero que en realidad sólo consiste en una serie de explicaciones del protagonista.
A pesar de lo mencionado anteriormente, creo que es un libro que vale mucho la pena leer y que te puede ayudar a ver las cosas desde otra perspectiva.
Puedes comprarlo en Amazon: Code Ahead
The Phoenix Project | Gene Kim, Kevin Behr & George Spafford
Este libro, a diferencia del anterior es una novela que sí salió bien, en la que describe la progresión de alguien del área de IT que obligadamente se convierte en líder del área. Describe como es que las áreas de IT se convierten de cuellos de botella en partes que agregan valor a la empresa.
El libro da los fundamentos de DevOps, y cuáles son los principios que todos los equipos de desarrollo de software deberían seguir para producir software más efectivamente.
Aunque está enfocado en la operación y la entrega del software, a final de cuentas, es donde todos queremos que nuestro software llegue, así que todos los desarrolladores de software se pueden beneficiar de los principios que presenta.
Se ha convertido en un clásico, y con justa razón. Lo puedes comprar aquí: The Phoenix Project.
Libros de historia de la informática
En esta sección recomendaremos algunos libros que creemos que te pueden ayudar a conocer más la historia de tu campo y que por lo tanto te ayudarán a aprender de lo que ya se ha hecho. Esto te ayudará a no cometer los mismos errores y más mejor, “pararte en hombros de gigantes” para poder ver más lejos.
Afortunadamente, de estos tenemos tanto libros en inglés como en español.
Historia de los lenguajes de programación: Años 1940-1959 | Manuel Rubio
Aquí, Manuel Rubio explica el nacimiento de las lenguajes de programación y cómo esto va de la mano con la historia de la computación. Me gusta mucho de este libro que te da una visión más amplia que la centra en US que normalmente nos dan en la escuela y en la mayoría de los libros de computación.
Manuel hizo una investigación muy amplia, cuestiona algunas cosas implícitamente (¿de verdad fue Ada Lovelace la primera programadora?) y te da una visión más amplia de lo que significa la computación.
Me gusta mucho que resalta algunas cosas que nos siguen sucediendo hoy:
- Nos cuesta naturalmente despegarnos del trabajo
- El campo siempre se ha resistido a las innovaciones
- Siempre creemos que lo que viene después de lo que ya sabemos tiene menos valor
En el blog hicimos ya un resumen de este libro y también hicimos un resumen en video pero sinceramente te recomiendo leerlo completo.
Lo puedes comprar aquí: Historia de los lenguajes de programación. Si necesitas un descuento para comprarlo, no dudes en contactarme o contactar a Manuel, que es muy accesible y una gran persona.
Mentes Geniales | Camilo Chacón Sartori
Camilo Chacón Sartori es un gran desarrollador de software, pronto Doctor en Ciencias de la computación y escritor. Ha escrito varios libros de programación o temas relacionados y en realidad es un escritor (y lector, ¿se puede ser buen escritor sin leer mucho?) muy prolífico.
En este libro, habla de 12 personas que han contribuido de diferentes formas al desarrollo de la computación y se les ha reconocido con el Premio Turing. Aunque no es un libro histórico en todo el sentido de la palabra, además de que no sigue una cronología, sí habla de importantes eventos históricos de la computación y desarrollo.
Lo recomiendo porque no sólamente te habla de los logros de las personas que menciona, analiza su entorno, te cuenta sobre su personalidad y extrae lecciones. Además, te deja las fuentes y referencias por si quieres leer más de ellos.
Algunos de los personajes que a mi me impactaron:
- Manuel Blum - El creador de CAPTCHA
- Michael Stonebraker - El creador de PostgreSQL
- Barbara Liskov - Una gran proponente de los tipos abstractos de datos
- Leslie Lamport - Un gran matemático que ha contribuido a la computación con cosas como el algoritmo de Paxos y TLA+
- Richard Manning Karp - Un matemático que ha contribuido a la computación con cosas como el algoritmo de Karp-Rabin y el análisis de complejidad de algoritmos
Sin duda te llevarás muchas buenas lecciones y aprendizajes sobre el desarrollo de la computación de este libro. Lo puedes comprar aquí: Mentes Geniales.
Dealers of Lightning: Xerox PARC and the Dawn of the Computer Ag | Michael A. Hiltzik
En los años 70 y 80’s, la compañía Xerox (sí, la de las impresoras), consiguió un equipo de personas muy hábiles con la tecnología. Eran conocidos como el PARC (Palo Alto Research Center) y fueron los creadores de muchas de las tecnologías que hoy usamos, como:
- La primera computadora personal
- La interfaz gráfica
- La impresora láser
Todas estas tecnologías cambiaron el mundo, ayudando a crear la tecnología que hoy en día nos da trabajo y ha moldeado todas las industrias y la vida en general.
Este libro está basado en entrevistas con las personas que vieron de cerca estas creaciones y que muestran cómo es que Xerox nunca vio el potencial de las creaciones de este equipo de ingenieros. Si quieres aprender sobre la historia de la tecnología que tenemos hoy, ver cómo se forman equipos de altísimo rendimiento y aumentar tus posibilidades de crear algo que sea digno de mención, este libro es un gran recurso.
Puedes comprarlo aquí: Dealers of Lightning.
La Catedral de Turing | George Dyson
En este libro se narra el comienzo de la computación después de la segunda guerra mundial y de todos los actores que tuvieron un impacto en el desarrollo de la computación moderna.
Es una crónica muy completa, junto con la explicación de muchos conceptos de la computación. El autor, hijo del físico Freeman Dyson, tuvo acceso a muchos de los actores de la historia y a sus documentos, lo que le permitió hacer una libro que revela muchos detalles.
Sin duda es algo que muchos dedicados a esta área del conocimiento queremos leer. Lo puedes comprar aquí: La Catedral de Turing.
Otros temas relacionados
Finalmente, como última parte de este artículo y de la serie de libros recomendados. Quiero poner algunas recomendaciones sobre temas y habilidades alternas a la programación que te ayudarán tanto como programador como a desarrollar tu carrera.
Algunos de estos temas o libros pensarás que no tienen nada que ver, pero te puedo asegurar que son habilidades y temas de soporte necesarios que te van a ayudar a resaltar.
How to solve it | George Polya
George Polya fue un matemático del Siglo XX que contribuyó en el área de heurística y resolución de problemas. Fue un gran profesor al mismo tiempo que un gran investigador. Este libro es una combinación de ambas facetas de él: le preocupaba que las matemáticas se enseñaran bien al mismo tiempo que él era muy bueno haciendo matemáticas.
En este escrito, Polya establece los pasos a seguir para resolver problemas matemáticos, pero que por extensión también nos sirve a los desarrolladores para aprender a establecer un método para resolver los problemas que encontramos día a día en nuestro trabajo.
Los cuatro pasos que propone son:
- Plantear y entender correctamente el problema
- Idear un plan para resolverlo (aquí da algunas técnicas comunes)
- Ejecutar el plan
- Revisar el resultado, el proceso y los aprendizajes
Cuando lo leí, noté inmediatamente que era un libro que se debería dar en todas las escuelas relacionadas con la ingeniería o la computación, ya que nos da claridad, o por lo menos una idea de cómo empezar a resolver algo.
Lo puedes comprar aquí: How to solve it, pero también lo puedes leer gratis: Cómo plantear y resolver problemas.
Enfócate | Cal Newport
La atención es uno de los bienes más preciados que tenemos los seres humanos, ya que a nuestra mente consciente sólo entra aquello a lo que la dirigimos o enfocamos. Pero cuando más beneficios da es cuando la enfocamos en una sola cosa por un periodo prolongado. Es como si nuestra mente fuera acelerando y tomando impulso para resolver un problema.
Esa es la tesis principal de “Enfócate”, un profesor de ciencias de la computación, muy interesado en temas como el logro académico, la productividad intelectual y el rendimiento a pesar de los obstáculos modernos.
En este libro, presenta un caso muy sólido para convencerte de apartar tiempo ininterrumpido para lograr tus tareas más difíciles. Además, relata cómo él lo logra y te da algunos consejos para que tú lo puedas hacer.
Creo que este libro es especialmente relevante para los desarrolladores de software por el entorno en el que trabajamos y porque muchos de los problemas que enfrentamos rebasan nuestra capacidad o conocimiento actual, por lo que necesitamos toda la ayuda posible para poder resolverlos.
Puedes comprarlo aquí: Enfócate.
Accelerate | Nicole Forsgren
¿Qué es lo que distingue a un equipo de alto rendimiento en la entrega de software de uno de bajo rendimiento? La medida más básica es el tiempo que toma un cambio en ser liberado o en llegar a producción. En este libro se habla de 1) cómo medir esto y 2) los factores que llevan a un equipo a mejorar esas métricas.
En realidad el libro es el resultado de un estudio de muchos equipos de desarrollo de software, en el que descubrieron varias cosas acerca de los equipos de alto rendimiento, entre ellas:
- Las prácticas técnicas que tienen
- El tipo de liderazgo que los guía
- Qué tipo de arquitecturas siguen
- Qué prácticas de administración de recursos humanos siguen
- Cómo hacen todo el trabajo sostenible
Además el libro habla de la forma en la que se realizó el estudio. Sin duda, es un libro muy valioso para los desarrolladores de software que quieren mejorar su rendimiento y el de sus equipos. Puedes comprarlo aquí: Accelerate.
Data and Reality | William Kent
Creo que como programadores, gran cantidad del tiempo lo dedicamos a procesar datos, o a crear representaciones datos de procesos externos a la computación. Esto es el modelado de datos, y es de lo que este libro habla, pero de manera bastante especial.
William Kent hace un análisis profundo de las cosas a las que estamos acostumbrados: modelos, datos, registros, relaciones, atributos, entidades. Primero, intenta definirlas y después aplicarlas al modelado de datos, explorando las implicaciones de definición. Es un libro que te va a hacer pensar bastante, relacionado con la epistemología, la ontología y en nuestra percepción de la realidad.
Aunque el libro te deja con más dudas que respuestas, deja algo totalmente claro: no existe una forma correcta de modelar el mundo, sólo representaciones más convenientes para un caso u otro, ya que todas son arbitrarias.
Yo leí la tercera edición, que es la que única que está en producción actualmente. Esta tiene comentarios de otro modelador de datos muy experimentado, pero que según Hillel Wayne cambió completamente el libro.Hillel recomienda leer la segunda edición, que aunque ya no está en impresión, lo puedes encontrar en PDF. Yo tengo pendiente leer la segunda edición, pero tengo altas expectativas ya que incluso la tercera me dejó grandes enseñanzas.
Conclusión
Para avanzar en tu carrera no basta con aprender sólo habilidades técnicas, también hacen falta algunas meta-habilidades, habilidades paralelas y conocimiento de la historia de tu profesión.
Tener estos conocimientos te puede hacer destacar de los demás profesionales, y son especialmente útiles si quieres lograr un puesto de liderazgo. Así que sigue preparándote, recuerda que un libro bien editado es de las mejores inversiones que puedes hacer.
Comentar