150 puntos por GN⁺ 2025-04-10 | 19 comentarios | Compartir por WhatsApp
  • Al conocer a desarrolladores muy distintos, el autor empezó a pensar en las características que comparten los mejores desarrolladores
  • Este texto es un registro de observaciones escrito para inspirar a desarrolladores principiantes o a quienes quieren crecer

Leer primero la documentación de referencia

  • Es importante adquirir el hábito de leer primero la documentación oficial, en vez de ir antes a Stack Overflow o a un LLM
  • La documentación oficial de Apache, Python, TOML y otros proyectos en realidad está bastante bien escrita
  • Desarrollar el hábito de aprender directamente desde la fuente ayuda muchísimo a largo plazo

Entender las herramientas a profundidad

  • Saber “usar” una herramienta y “entenderla” son niveles distintos
  • Quien realmente conoce una herramienta puede explicar cada una de sus configuraciones
  • Para entenderla bien, hay que conocer su:
    • historia (por qué fue creada)
    • presente (quién la mantiene)
    • límites (cuándo no encaja)
    • ecosistema (herramientas alrededor, librerías, etc.)
  • Si Kafka es una de tus tecnologías principales, deberías conocerlo más allá del nivel que se ve en Reddit

Leer con atención los mensajes de error

  • Si observas con calma un mensaje de error, casi siempre contiene pistas
  • Los mejores desarrolladores infieren el problema incluso con poca información
  • El 80% de los problemas puede resolverse solo con leer bien el mensaje de error

Saber dividir los problemas en partes pequeñas

  • A cualquiera se le atora algo; para resolverlo, hay que saber descomponerlo
  • Quienes tienen mucha experiencia o una gran capacidad de resolución lo hacen con facilidad
  • El trabajo central de un desarrollador, al final, consiste en dividir problemas grandes en problemas pequeños
  • Si resuelves paso a paso los problemas simples, también resuelves el problema completo

Trabajar con código sin miedo

  • Los mejores desarrolladores no le tienen miedo a leer código
  • En vez de decir “eso no es mi área”, simplemente lo intentan y aprenden
  • Incluso con código que tocan por primera vez, muchas veces pronto se convierten en expertos dentro del equipo

Ayudar siempre a los demás

  • Un desarrollador que ayuda aun cuando está ocupado es un buen compañero de equipo y un gran profesional
  • La curiosidad y una actitud colaborativa son cualidades indispensables de un buen desarrollador

Escribir

  • Los desarrolladores sobresalientes también se expresan bien y saben plasmar sus ideas por escrito
  • Comparten sus ideas a través de blogs, charlas, actividades de código abierto y más
  • La capacidad de escribir está conectada directamente con la estructura del pensamiento
  • El código de quien escribe bien suele ser estructurado, claro y, a veces, ingenioso

No dejar de aprender

  • Quien sigue aprendiendo sin importar la edad es un desarrollador realmente excepcional
  • No tiene reparos en probar nuevas herramientas o lenguajes
  • No sigue ciegamente la tecnología de moda, sino que sabe analizar por sí mismo sus ventajas y desventajas
  • Incluso a una edad temprana, si uno cae en ideas fijas, deja de crecer

No obsesionarse con el estatus

  • Un buen desarrollador busca aprender de cualquiera, sin importar el cargo
  • Tiene la actitud de que incluso de alguien recién incorporado hay algo que aprender
  • Encuentra inspiración en conversaciones con personas que tienen perspectivas nuevas

Construir una reputación

  • La habilidad importa, pero también importa que esa habilidad sea conocida
  • La reputación es una herramienta para ampliar la influencia
  • Se puede construir reputación de formas como estas:
    • crear o desplegar directamente servicios importantes
    • desarrollar herramientas conocidas
    • contribuir a proyectos famosos de código abierto
    • escribir libros citados con frecuencia
  • La reputación no se construye de la noche a la mañana; requiere esfuerzo constante y tiempo

Tener paciencia

  • Hace falta paciencia tanto con las personas como con las computadoras
  • La gente a tu alrededor no es tonta; simplemente no tiene suficiente información
  • Sin paciencia, la frustración se acumula fácilmente y colaborar se vuelve más difícil
  • Resolver problemas difíciles exige concentración y perseverancia

No culpar a la computadora

  • Los mejores desarrolladores nunca culpan al sistema ni a factores externos
  • Incluso los problemas que parecen aleatorios tienen una razón lógica
  • Lo importante es tener la actitud de investigar hasta el final para encontrar la causa

Saber decir “no lo sé”

  • En entrevistas, alguna vez esperé deliberadamente el momento en que alguien dijera “no lo sé”
  • Lo importante no es la respuesta, sino la actitud
  • Los mejores candidatos admiten que no saben y luego empiezan a razonar
  • Reconocer que no se sabe muestra capacidad de aprendizaje
  • Quien miente o finge saber genera un efecto negativo en el equipo

No adivinar

  • Como en la filosofía de PEP 20, cuando algo es ambiguo, nunca hay que adivinar
  • Riesgos de adivinar:
    • si te equivocas, produces un bug
    • aunque aciertes, puedes terminar creyendo una premisa equivocada y causar problemas después
  • Si no estás seguro:
    • pregunta
    • lee la documentación
    • usa herramientas de depuración
    • busca evidencia

Mantenerlo simple

  • La gente inteligente escribe código inteligente; la gente excelente escribe código simple
  • El código simple es mucho más favorable para el mantenimiento
  • La verdadera habilidad está en distinguir cuándo hace falta complejidad y cuándo no

Reflexión final

  • Este texto no es una lista de verificación, y una gran ingeniería no es una competencia
  • Pero no te engañes pensando que puedes saltarte el trabajo difícil
  • No hay atajos para convertirse en un gran desarrollador

19 comentarios

 
dduha 2025-04-24

Muchas gracias por el buen artículo.!!

 
openman 2025-04-17

Me consuela que este texto no sea una lista de verificación y me da ánimo que no haya atajos.

 
geekbini 2025-04-13

Si entiendes los proyectos de la empresa,
da la impresión de que, sin importar en qué área te conviertas en desarrollador senior,
ya sea firmware, apps o web,
puedes llegar al nivel de depurar cómo ocurrió un problema
viendo los logs de depuración de web, apps o firmware.

 
softer 2025-04-11

Recuerdo el comportamiento que supuse durante la entrevista.

 
wogns3623 2025-04-11

Personalmente, también considero importante "pensar siempre en lo que estoy construyendo".

 
wogns3623 2025-04-13

Había un buen término: pensamiento crítico.

 
lighteach 2025-04-10

Realmente me ayudó muchísimo. Gracias por el excelente artículo.

 
kylian 2025-04-10

¡Entonces bastaría con pedirle al LLM que lea la documentación oficial!

 
dudlf016 2025-04-10

RTFM: lean la documentación oficial.

 
kandk 2025-04-10

Dicen que no es una checklist, pero supongo que tendré que tomarla como mi checklist.

 
haejuk99 2025-04-10

Coincido muchísimo en que es indispensable revisar la documentación oficial.

 
aer0700 2025-04-10

Cuando enseño a programar por primera vez, me parece que la aptitud de una persona para ser programadora se revela por primera vez en si puede o no leer con atención los mensajes de error.

 
postinsight 2025-04-19

.... Los que no tienen la comprensión básica de reconocer que los errores y los bugs siempre existen son unos farsantes.

 
roxie 2025-05-05

Las oraciones son demasiado difíciles...

 
postinsight 2025-04-19

En la web.

 
coremaker 2025-04-10

No todos, pero la mayoría son puntos con los que me identifico.

 
GN⁺ 2025-04-10
Opinión de Hacker News
  • No hacer suposiciones es lo más importante en el trabajo

    • Desarrolló habilidades de resolución de problemas en la fabricación de semiconductores, donde el costo de una suposición equivocada es muy alto
    • Siempre hay que identificar la causa raíz al 100%
    • La razón para evitar stacks tecnológicos poco comunes es que dificultan el análisis de causa raíz
    • Resolver el problema con precisión es la forma más rápida de construir reputación
  • Al enfrentarse a algo nuevo, disfruta hacer un poco de conjeturas antes de leer a fondo el material de referencia

    • Al aprender un nuevo lenguaje o API, primero prueba haciendo conjeturas con un tutorial y luego lee la referencia
    • Prefiere lenguajes e IDE que soportan funciones como Intellisense
  • Es mejor consultar directamente el código fuente en lugar de depender de Stack Overflow o de un LLM

    • Al principio es difícil, como un libro de matemáticas, pero con el tiempo se vuelve comprensible
    • docs.rs para crates de Rust, hoogle de Haskell y la referencia de C++ son excelentes materiales de consulta
  • Los mejores desarrolladores aprenden comunicándose con personas de todos los niveles

    • La gente nueva aporta perspectivas frescas, y puede que los obstáculos del pasado ya hayan desaparecido
    • Hay que revisar periódicamente por qué existen las reglas
  • Usar bien Stack Overflow puede ser de gran ayuda

    • Los LLM son útiles para analizar eventos en tiempo real o para automatización, pero no pueden reemplazar a los programadores
    • Después de entender un tema con ayuda de un LLM, conviene consultar la documentación oficial
  • Los mejores programadores pueden lograr resultados sobresalientes incluso sin formación en CS

    • Hay casos de personas sin formación especializada que aprendieron programación y crecieron rápidamente
  • Además de programar, también es importante comunicarse con el dominio de negocio

    • Hay que considerar diversos factores más allá de la programación
  • Leer y entender los mensajes de error ayuda mucho a resolver problemas

    • Al usar asdf para gestionar versiones de Python, Go y NodeJS, fue posible resolver problemas a través de los mensajes de error
 
postinsight 2025-04-19

¿Qué es asdf? Hay que revisar la advertencia.

 
postinsight 2025-04-19

Bueno, me parece mejor la actitud de no querer convertirse jamás en el mejor absoluto. Eso de escribir... eso de ayudar... entre la gente que hace eso...