14 puntos por baeba 3 시간 전 | 2 comentarios | Compartir por WhatsApp

Índice

Se comparten las ideas clave obtenidas tras leer 45 libros técnicos durante los últimos 2 años, y se repasa su impacto en la formación de la mentalidad como ingeniero de software, en particular una comprensión profunda de la era de la IA y de los procesos de desarrollo eficientes.

Presentación del podcast y retrospectiva del 2.º aniversario

Presentación de Book Overflow

  • Es un podcast de libros técnicos para ingenieros de software, cuyo objetivo es mejorar las habilidades leyendo cada semana los mejores libros técnicos.

Plan del episodio por el 2.º aniversario

  • Con motivo del 2.º aniversario del podcast, repasan todos los libros leídos durante los últimos 2 años y comparten una sola idea de cada libro: la más memorable y la que sigue influyendo hasta hoy.

  • Más allá de simplemente recordar el contenido de los libros, se enfocan en cómo influyeron en la formación de su manera de pensar como ingenieros de software.

Cambios durante los últimos 2 años

  • Carter y Nathan, los conductores del podcast, vivieron grandes cambios en su vida personal durante los últimos 2 años.

    • Nathan se mudó a otro país, ambos terminaron estudios de posgrado y Nathan está esperando el nacimiento de su hijo.

    • También hubo cambios profesionales. Nathan pasó a trabajar como consultor de tiempo completo, y Carter se cambió de una big tech a una startup.

  • Expresan su agradecimiento, ya que pudieron mantener el podcast pese a esos cambios personales gracias al apoyo y el interés de los oyentes.

Ideas clave por libro técnico destacado

The Practice of Programming (Brian Kernighan, Rob Pike)

  • Idea clave: contiene la filosofía de programación que sirve de base para el lenguaje Go; aunque parte del contenido quedó desactualizado, las ideas centrales siguen vigentes.

    • Lo recuerdan porque, como programadores de Go, son fans de Rob Pike, y señalan que las ideas esenciales de la buena programación salieron de este libro.

    • También se menciona que algunas partes, como el parser de CSV, quedaron desactualizadas.

A Philosophy of Software Design (John Ousterhout)

  • Idea clave: el concepto de “diseñarlo dos veces” (Design It Twice), que enfatiza que se puede lograr un mejor diseño aprendiendo y mejorando mientras se construye el sistema, en lugar de intentar diseñarlo perfectamente desde el inicio.

    • En la era de la IA, usar LLM reduce el esfuerzo necesario para diseñar dos veces, lo que permite un diseño más eficiente.

    • Aunque este libro se publicó en 2018, todavía tiene una gran influencia y fue citado en muchos libros.

  • Ideas adicionales

    • Presenta ideas sólidas sobre enfoques para encapsular la complejidad, diseño de interfaces y manejo de errores.

    • A través de una entrevista con el autor, John Ousterhout, pudieron conocer sus opiniones y críticas sobre TDD.

Refactoring: Improving the Design of Existing Code (Martin Fowler)

  • Idea clave: el refactoring puede detenerse en cualquier momento; como es un trabajo para mejorar el diseño sin cambiar la salida del código, puede realizarse de forma constante en unidades pequeñas.

    • A menudo se malinterpreta el refactoring como reescribir todo el código, pero la definición de Fowler se limita a un alcance muy estrecho.
  • Caso de aplicación real

    • Recientemente aplicaron refactoring real en el proceso de mejorar el uso de Next.js y React para optimizar el rendimiento de roborobato.com.

    • Reorganizaron la estructura del código sin cambios de funcionalidad ni de UI, y lo dividieron en 5 commits para que fuera fácil de revisar y aplicar.

What Is ChatGPT Doing and Why Does It Work? (Stephen Wolfram)

  • Idea clave: ayudó a entender cómo funcionan los LLM, en particular el mecanismo de predicción del siguiente token y el concepto de temperatura (temperature).

    • Explica que la aleatoriedad inherente a los LLM es lo que genera su potencia.
  • Valor del libro

    • Ofrece un análisis bien estructurado que explica temas complejos de forma fácil de entender.

    • Proporciona vocabulario y un marco básicos para comprender los LLM, conocimiento que sigue siendo importante.

Fundamentals of Software Architecture (Mark Richards, Neal Ford)

  • Idea clave: enfatiza la importancia de la capacidad de vender una visión de arquitectura a stakeholders técnicos y no técnicos, y la considera un elemento fundamental de la arquitectura.

    • Hay que comunicarse constantemente y demostrar el propio valor; una actitud del tipo “se hace como yo digo” no es deseable.
  • Principios adicionales

    • No hay que quedarse en una torre de marfil: hay que acompañar al código y al equipo, experimentar el diseño directamente, avanzar unos pasos por delante y anticipar problemas potenciales.

    • Destaca el rol de los ADR (Architectural Design Document) y afirma que es importante registrar y evolucionar el proceso de toma de decisiones.

    • Para evitar el “fenómeno del Día de la Marmota”, es esencial registrar y compartir las decisiones.

The Clean Coder (Robert C. Martin, “Uncle Bob”)

  • Idea clave: explora qué significa el verdadero profesionalismo, en especial las posturas radicales de Uncle Bob sobre los deadlines y la entrega de estimaciones.

    • En la cultura de ingeniería es común confundir estimaciones con deadlines, pero para actuar con profesionalismo hay que distinguirlos claramente.
  • Características del libro

    • Contiene muchas historias y permite conocer más a fondo a la figura de Uncle Bob.

    • El libro está bien escrito, se lee con facilidad y es adecuado para leerlo de principio a fin.

Working Effectively with Legacy Code (Michael Feathers)

  • Idea clave: el código difícil o intimidante de cambiar está mal diseñado, y cualquiera puede hacer que el código sea más fácil de modificar.

    • El código legacy se define como código que no tiene cobertura de pruebas o cuyo comportamiento no se entiende.

    • Ofrece orientación sobre cómo empezar cuando no se trata de un proyecto greenfield o cuando se tiene poco control sobre la base de código.

  • Valor del libro

    • Como cada sección es independiente, funciona bien como referencia; es más eficaz buscar y leer las partes necesarias que leerlo de principio a fin.

Web Scalability for Startup Engineers (Artur Ejsmont)

  • Idea clave: en las etapas iniciales de una startup es más importante moverse rápido que perseguir una optimización excesiva o alta disponibilidad, y hay que invertir en eso en el momento adecuado.

    • Una startup en etapa temprana no debería intentar tener tolerancia a fallos perfecta ni alta disponibilidad cuando todavía tiene pocos clientes.
  • Limitaciones de época y sugerencias

    • Los temas que trata el libro fueron importantes en la década de 2010, y actualmente muchos de ellos ya fueron resueltos por empresas de SaaS y PaaS.

    • Una versión actualizada debería convertirse en un manual para fundadores primerizos o líderes técnicos.

Recoding America (Jennifer Pahlka)

  • Idea clave: muestra la ineficiencia del software gubernamental y su potencial de mejora, y plantea la posibilidad de que también el software del gobierno pueda construirse con calidad suficiente.

    • Como el software gubernamental se evalúa según si se completaron checklists, no se considera tan importante si realmente cumple su función.

    • Enfatiza la importancia de aplicar al desarrollo de software gubernamental principios centrales de Agile como la “colaboración estrecha con el cliente” y la “entrega continua de software funcionando”.

Building Evolutionary Architectures (Neal Ford, Rebecca Parsons, Patrick K. Kua, Pramod Sadalage)

  • Idea clave: mediante el concepto de “funciones de aptitud” (Fitness Functions), propone una forma de evaluar objetivamente si el sistema se comporta como se espera y de construir arquitecturas evolutivas.

    • Las funciones de aptitud son esenciales para rastrear el proceso de evolución del sistema y verificar si las decisiones de diseño funcionan como se pretendía.

    • Se debe formar el equipo y diseñar el sistema considerando el impacto que estructuras organizacionales como la ley de Conway tienen sobre la arquitectura de software.

Looks Good to Me (Adrian Bergeron)

  • Idea clave: aunque no recuerdan los consejos concretos del libro, les recordó una vez más la importancia de los pull requests (PR).

  • Al reflexionar sobre el proceso de migración realizado recientemente en la empresa, donde la revisión de PR fue descuidada, siento la necesidad de volver a revisar este libro.

  • Valor del libro

    • Ofrece una buena guía para definir contratos sociales y estándares dentro del equipo.

    • Los libros técnicos son útiles para volver a consultarlos cuando hace falta y desarrollar ideas.

Slow Productivity (Cal Newport)

  • Idea clave: A través del mensaje de “trabaja menos y concéntrate en trabajo significativo”, advierte contra la pseudo-productividad y enfatiza la necesidad de enfocarse en actividades de alto valor.

    • Es un libro que muestra la forma de pensar profunda de Cal Newport, quien redujo actividades innecesarias para concentrarse en cosas importantes, como llevar adelante un podcast.

    • A medida que avanza la carrera, hay que enfocarse en las actividades de mayor apalancamiento y valor; la pseudo-productividad lo impide.

The Unicorn Project (Gene Kim)

  • Idea clave: Explica la importancia de los procesos DevOps desde la perspectiva de la ingeniería de software y enfatiza que se deben resolver los problemas de fondo para aumentar la velocidad de desarrollo.

    • Un sistema que depende de un release manager es ineficiente; mediante procesos automatizados, cualquiera debería poder gestionar releases.
  • Estructura e influencia del libro

    • A diferencia de su libro anterior, The Phoenix Project, explica DevOps desde la perspectiva de la ingeniería de software, por lo que es aplicable a más desarrolladores.

    • Transmite contenidos técnicos de forma sencilla mediante una fábula y marcó una tendencia de combinar historias con libros técnicos.

Tidy First (Kent Beck)

  • Idea clave: Enfatiza el valor de la “opcionalidad (Optionality)” en la estructura del código, es decir, su flexibilidad y extensibilidad, que genera beneficios potenciales futuros de forma similar al valor temporal.

    • Como al escribir código por primera vez es difícil predecir qué funcionalidades se necesitarán en el futuro, es importante escribirlo de manera que pueda modificarse con flexibilidad.
  • Características y valor del libro

    • Aunque es un libro breve y conciso, ofrece perspectivas profundas y hace sentir el placer del desarrollo de software.

    • Aplicar al software ideas de otras industrias, como el trading de opciones, es una señal de desarrollo maduro.

Unix: A History and a Memoir

  • Idea clave: Permite comprender el funcionamiento y la importancia de las “pipes”, uno de los bloques fundamentales de Unix.

    • Gracias a la filosofía Unix, en la que cada programa recibe una entrada y devuelve una salida, el operador pipe permite conectar fácilmente las salidas entre programas.
  • El papel de Doug McIlroy

    • Doug McIlroy desempeñó un papel importante al integrar las ideas de Unix mediante pipes y contribuyó a formar la filosofía Unix.

The Twelve-Factor App

  • Idea clave: Presenta 12 principios para construir aplicaciones cloud native, y advierte que aplicarlos mal puede aumentar la complejidad.

    • Son principios creados en la época de Heroku y, al revisar sus fundamentos, uno tiende a asentir.

    • Al igual que ocurre cuando se aplica una tecnología específica como Kubernetes sin entenderla, estos principios también pueden usarse de forma incorrecta.

The Agile Manifesto

  • Idea clave: Agile surgió como reacción al modelo en cascada y busca entregar software funcional rápidamente e incorporar con agilidad el feedback del cliente.

    • La esencia de Agile es colaborar estrechamente con clientes y stakeholders para mejorar el software de forma iterativa.
  • Aplicación moderna y críticas

    • La esencia de Agile resulta familiar para muchos desarrolladores, pero sin un esfuerzo consciente es fácil que pierda su significado.

    • Está tan profundamente integrado en el desarrollo de software moderno que, más que aprender algo nuevo, invita a revisar las prácticas existentes.

    • Fue muy eficaz como reacción al modelo en cascada y enfatiza que, debido a la complejidad del software, es más importante entregar valor en unidades pequeñas que planificar a largo plazo.

The Software Engineer's Guidebook (Jorge Orozco)

  • Idea clave: Con el avance de la carrera, hay que enfocarse en tareas de alto apalancamiento y gestionar la propia trayectoria de forma proactiva.

    • Enfatiza la importancia de los managers y sponsors: el manager te apoya para que asciendas, y tú debes esforzarte por cumplir esas expectativas.
  • Características del libro

    • Al igual que el newsletter The Pragmatic Engineer, ofrece consejos prácticos sobre gestión de carrera.

    • Proporciona un framework para entender trayectorias profesionales complejas y darse a conocer de forma activa.

Hypermedia Systems (Carson Gross, et al.)

  • Idea clave: Con tecnologías como HTMX, también es posible construir aplicaciones web suficientemente dinámicas mediante server-side rendering, reduciendo la necesidad de clientes JavaScript complejos.

    • Aprovechando las ventajas de los sistemas hipermedia, la idea original de la web, si se cuenta con una buena especificación, muchas funcionalidades pueden implementarse del lado del servidor sin importar la tecnología de backend.
  • Ventajas y límites de HTMX

    • El código escrito con HTMX es simple, por lo que resulta fácil de mantener, y es probable que dure más que los frameworks modernos.

    • HTMX quizá no sea el futuro del desarrollo web, pero estas posturas contrarias ayudan a tomar mejores decisiones como ingeniero.

Team Topologies (Matthew Skelton, Manuel Pais)

  • Idea clave: Los equipos deben organizarse para minimizar las interdependencias que deben coordinar, y la estructura del equipo tiene un impacto directo en la arquitectura del software.

    • Team Topologies se centra en optimizar el flujo reduciendo la coordinación entre equipos.

    • Como la estructura del equipo determina la estructura del software, hay que ser cuidadoso al formar equipos.

Ace the System Design Interview (Alex Xu)

  • Idea clave: En una entrevista de diseño de sistemas, es importante usar “cálculos de servilleta (back-of-the-napkin math)” para estimar escala y requisitos de rendimiento.

    • Si memorizas cifras comunes, como tiempos y tamaños de datos, y las usas para concretar los requisitos del sistema, puedes diseñar con base en fundamentos y no en suposiciones.

    • Por ejemplo, si debes procesar una cantidad de tuits por hora, al conocer los bytes por tuit y la longitud de cada tuit puedes calcular el almacenamiento y el throughput necesarios.

  • Cómo usarlo en entrevistas

    • Si piensas en voz alta junto con el entrevistador y compartes el proceso de cálculo, puedes obtener feedback y lograr un mejor diseño.

    • No se trata solo de enumerar tecnologías recientes, sino de presentar fundamentos sobre por qué se eligió una tecnología específica.

The Good News Factory (Kent Beck)

  • Idea clave: Para que un equipo de software se convierta en una “fábrica de buenas noticias” que entregue continuamente “buenas noticias”, es indispensable construir código limpio y sistemas escalables.

    • Si el equipo no logra mostrar resultados positivos de manera constante, desde afuera puede construirse una narrativa negativa.
  • Características del libro

    • Es un libro breve y conciso, con formato de informe, que transmite eficazmente su mensaje central.

Thinking in Systems (Donella Meadows)

  • Idea clave: Mediante el concepto de “stocks and flows”, ofrece un framework útil para comprender las características dinámicas de los sistemas y analizar sistemas complejos.

    • Así como es importante entender la diferencia entre el PIB (flujo) y la capitalización de mercado (stock), también lo es distinguir entre el estado actual de un sistema y su tasa de cambio.
  • Valor del libro

    • Aunque es abstracto, ofrece perspectivas de alto nivel para el pensamiento estratégico y sistémico.

Grokking Concurrency (Karol Bobrov)

  • Idea clave: Es importante “dimensionar adecuadamente (right-sizing)” el modelo de concurrencia; hacerlo demasiado granular o demasiado amplio tiene desventajas.

    • Presenta cómo entender las unidades de trabajo que pueden paralelizarse o dividirse en tareas concurrentes, y cómo tunear el sistema.

Rework (Jason Fried, David Heinemeier Hansson)

  • Idea clave: Se puede aprovechar como ventaja el hecho de ser pequeño y poco conocido para iterar, reinventarse y construir el éxito.

    • Las desventajas previas a volverse famoso pueden convertirse en oportunidades de innovación, y hay que aprovecharlas para no perder los beneficios del éxito.
  • Características e influencia del libro

    • Es un libro lógico y bien escrito que inspira a quienes quieren hacer bootstrapping o construir algo que no encaja con las ideas dominantes de éxito.
  • A través de los casos de éxito de Basecamp y 37signals, demuestra que su filosofía sigue siendo válida con el paso del tiempo.

In the Plex (Steven Levy)

  • Ideas clave

    • La capacidad de los ingenieros de Google para reinventar de forma original conceptos complejos como la teoría de subastas es el resultado de contratar a personas inteligentes y confiar en ellas.

    • El éxito de una startup no está garantizado, por lo que hay que esforzarse constantemente y contribuir al futuro de la empresa.

  • Conexión con el autor

    • Steven Levy es un gran escritor, y también vale la pena recomendar su otro libro, 'Crypto'.

    • Fue muy interesante vivir la experiencia de entrevistarme en una empresa cuyo CEO actual es una de las personas que aparecen en el libro.

Thinking Like a Large Language Model (Mukund Sundararajan)

  • Idea clave: Aunque los recuerdos concretos de este libro son difusos, me ayudó a entender la forma de pensar de los LLM.

The DevOps Handbook

  • Ideas clave

    • Ofrece guías para implementaciones prácticas de DevOps, como pipelines de CI/CD, rollback automático y mejor observabilidad, lo que mejoró notablemente las capacidades de ingeniería de software del equipo.

    • Presenta la técnica de "tráfico sombra", que consiste en enviar parte del tráfico real a una nueva API y observar los resultados al desplegar funcionalidades nuevas, como una "nueva función de búsqueda".

    • Enfatiza la importancia de separar despliegue y lanzamiento, y permite usar feature flags para manejar rápidamente posibles regresiones durante una migración.

  • Autores y valor del libro

    • Participan autores destacados como Gene Kim, Jess Humble, Patrick Dubois, Nicole Forsgren y John Willis, e incluye contenido complementario a 'Unicorn Project' y 'The Phoenix Project'.

Just for Fun: How Linus Torvalds Started an Accidental Revolution

  • Idea clave: Linus Torvalds creó Linux al enfocarse en lo que le resultaba divertido, y eso terminó cambiando el mundo.

    • Concentrarse en lo que uno disfruta es la motivación que lleva a trabajar con mayor intensidad, y puede derivar en un gran éxito inesperado.
  • Innovación en el software de código abierto

    • Linus Torvalds abrió camino con una forma no convencional de generar ingresos con software de código abierto y mantener sus principios, lo que tuvo un gran impacto en la operación de servidores y en la forma de hacer commits de código.

Made to Stick

  • Idea clave: Las ideas memorables siguen ciertos patrones, y aun sin ser un genio creativo, es posible usar esos patrones para comunicar ideas de manera efectiva.

    • El mensaje de "enfócate en lo que te divierte y confía en que trabajarás más duro en lo que más disfrutas" influyó mucho en decisiones personales de carrera.

Staff Engineer (Will Larson)

  • Idea clave: En el nivel de Staff Engineer hay que enfocarse en trabajo de alta prioridad y alto impacto, una métrica importante que aplica a lo largo de toda la carrera.

    • No hay un camino fijo para convertirse en Staff Engineer; personas con trayectorias diversas resuelven problemas complejos.

Finite and Infinite Games (James P. Carse)

  • Idea clave: En los "juegos finitos" ganar o perder está claramente definido, mientras que en los "juegos infinitos" el objetivo es disfrutar el juego en sí; en la vida es importante perseguir juegos infinitos.

    • Cuando Linus Torvalds creó Linux, no perseguía el juego finito de crear el sistema operativo más popular, sino el juego infinito de crear el mejor sistema operativo y construir una comunidad.

Radical Candor (Kim Scott)

  • Idea clave: El feedback directo y honesto puede ser precisamente una forma de cuidar a la otra persona, y hay que evitar la "empatía ruinosa (ruinous empathy)".

    • Dar feedback directo nace de una preocupación genuina por el bienestar de la otra persona, y no es lo mismo que ser grosero.

    • Al dar feedback, es importante considerar las emociones de la otra persona, pero transmitir el punto central con claridad.

Mastering OpenTelemetry and Observability (Steve Flanders)

  • Idea clave: Hay que evitar el vendor lock-in y usar OpenTelemetry, pero el libro me hizo reconsiderar que en la era de la IA la importancia del vendor lock-in podría cambiar.

    • La comodidad de herramientas como DataDog puede hacer atractivo el vendor lock-in, pero hay que considerar riesgos como cambios de precios o fusiones y adquisiciones.

Beyond Vibe Coding (Addy Osmani) & Advanced React (Nadia Makarevich)

  • Ideas clave

    • 'Beyond Vibe Coding' presenta el concepto de "IA aumentada (augmented AI)", en el que ingenieros productivos colaboran con agentes de código para escribir software.

    • 'Advanced React' es útil como material de referencia.

The Tao of Programming (Jeffrey James)

  • Idea clave: Construir un sistema operativo solo exige precisión técnica, pero modelar el mundo real, como en un sistema de nómina, es más difícil porque involucra problemas complejos como los stakeholders.

    • Esto puede no ser intuitivo para los programadores y sugiere que modelar el mundo real en software tiene una complejidad inherente.
  • Relación con el ensayo "Worse Is Better"

    • 'The Tao of Programming' y "Worse Is Better" son textos de un tipo similar: breves, pero capaces de provocar reflexiones profundas.

Mastering the Behavioral Interview (Austin McDonald)

  • Idea clave: Permite aprender a contar la propia experiencia en entrevistas técnicas estilo Silicon Valley, encajándola en arquetipos como el de "hacker solitario".

    • La habilidad de comunicar historias de manera efectiva en una entrevista es muy importante, y este libro explica concretamente cómo hacerlo.

Designing Data-Intensive Applications (Martin Kleppmann)

  • Idea clave: Trata en profundidad conceptos básicos de sistemas distribuidos, como confiabilidad, latencia frente a throughput y resiliencia frente a recuperación rápida.

    • También aborda temas como privacidad de datos y explotación de la atención, y probablemente lleve a una mayor reflexión al construir sistemas de alta demanda.

Reflections on Trusting Trust (Ken Thompson) & Coding Machines (Lawrence Kesteloot)

  • Idea clave: En una era en la que la IA genera código, invita a pensar profundamente sobre la confianza en el código generado y sobre posibles intenciones maliciosas, como la esteganografía.

Frictionless (Nicole Forsgren, Abby Noda)

  • Idea clave: Este libro está dirigido principalmente a líderes de grandes empresas y se enfoca en implementar iniciativas de experiencia del desarrollador (DevEx), por lo que no tuvo un gran impacto en mi etapa profesional actual.

    • Contiene muy buen material sobre DevEx, pero puede ser más importante para empresas en etapas posteriores a la Serie C.

Project Hail Mary (Andy Weir)

  • Idea clave: El futuro no es algo que debamos temer, sino un problema que debemos resolver, y el libro muestra una visión optimista sobre el papel de la humanidad y la tecnología.

    • Transmite un mensaje esperanzador: incluso en situaciones difíciles, con enfoque e innovación se pueden lograr cosas sorprendentes.

2 comentarios

 
laeyoung 5 분 전
  1. Los enlaces del índice regresan recursivamente a esta misma página.
  2. No sé si resumiste todo a mano o si trasladaras un resumen hecho con IA, pero YouTube tiene una función Ask, así que no creo que haga falta resumir todo el contenido. Más bien, lo que más me dio curiosidad fue por qué compartiste esto, y creo que con un resumen en 3 líneas del contenido sería suficiente.
 
baeba 3 시간 전

La dirección del sitio es la siguiente.
https://bookoverflow.io/