¿Qué libros me recomiendan las personas que trabajan como desarrolladores para mejorar mis habilidades?

Ningún libro te dará experiencia.

Me corté los dientes en sistemas distribuidos al crearlos . O tal vez una mejor manera de decirlo es dándoles vida distribuida . Estaba trabajando en lo que ya era un sistema distribuido. Pero reconocí que las personas que escribían el software para el sistema tenían varias necesidades que hasta ahora no se habían cubierto.

  1. Necesidad de almacenar datos de forma permanente y temporal.
  2. Necesita acceder sin problemas a datos locales y datos en otra parte del sistema.
  3. Necesita saber qué otras partes del sistema están disponibles ahora.
  4. Necesita poder mantener una comprensión topológica del sistema en todo momento.

Así que creé un contenedor de tareas simple que ocultaba los detalles de IPC. Creé un sistema de archivos FLASH. Creé un protocolo de red simple que permitió que nuestro sistema cerrado descubriera automáticamente cientos de dispositivos en red. Creé un protocolo genérico de distribución de datos de pares que sincronizaría cualquier aplicación que quisiera sincronizar en un conjunto de pares. Creé una base de datos que usaba todo eso para publicar datos que estaban disponibles para todos los pares interesados.

Se podría decir que podría haber usado X, Y, Z de WonkSoftware para hacer el trabajo. Quizás. Pero estoy bastante seguro de que X, y tal vez Y, fueron sobre-diseñados para lo que necesitábamos. Y de todos modos, no habría tenido las oportunidades de aprendizaje. Investigué TrueFFS [estábamos usando WindRiver en ese momento], y logré convencer a mi jefe de que el precio no valía lo que pude armar durante el fin de semana. La cosa terminó floreciendo en un sistema de archivos que podía hacer todo lo que TrueFFS podía hacer y más.

En el proceso, me quemé [varias veces] y aprendí el análisis de rendimiento para comprender por qué. Por lo general, esto no es más complicado que aprender a usar gprof o los perfiladores de Xcode o el perfilador de WindRiver [¡no puedo recordar su nombre ahora!] Para cuellos de botella de rendimiento localizados. O aprender a usar Wireshark o Etherpeek para capturar y / o manipular el tráfico de red en el caso de problemas de rendimiento distribuido. Ambos conjuntos de herramientas tienen maravillosas capacidades de análisis.

Todo lo anterior se realizó en una pequeña empresa. Yo era el chico diecinueve en la puerta. Valoro esa experiencia como la mejor de mi carrera hasta ahora.

En lugar de buscar un libro polvoriento, busca una oportunidad brillante. No pienses “Puedo leer sobre esto …”, piensa “¡Puedo hacer esto!”

¡No tengas miedo de romper mierda! ¡No tengas miedo de quemarte!