- 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
Muchas gracias por el buen artículo.!!
Me consuela que este texto no sea una lista de verificación y me da ánimo que no haya atajos.
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.
Recuerdo el comportamiento que supuse durante la entrevista.
Personalmente, también considero importante "pensar siempre en lo que estoy construyendo".
Había un buen término: pensamiento crítico.
Realmente me ayudó muchísimo. Gracias por el excelente artículo.
¡Entonces bastaría con pedirle al LLM que lea la documentación oficial!
RTFM: lean la documentación oficial.
Dicen que no es una checklist, pero supongo que tendré que tomarla como mi checklist.
Coincido muchísimo en que es indispensable revisar la documentación oficial.
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.
.... Los que no tienen la comprensión básica de reconocer que los errores y los bugs siempre existen son unos farsantes.
Las oraciones son demasiado difíciles...
En la web.
No todos, pero la mayoría son puntos con los que me identifico.
Opinión de Hacker News
No hacer suposiciones es lo más importante en el trabajo
Al enfrentarse a algo nuevo, disfruta hacer un poco de conjeturas antes de leer a fondo el material de referencia
Es mejor consultar directamente el código fuente en lugar de depender de Stack Overflow o de un LLM
Los mejores desarrolladores aprenden comunicándose con personas de todos los niveles
Usar bien Stack Overflow puede ser de gran ayuda
Los mejores programadores pueden lograr resultados sobresalientes incluso sin formación en CS
Además de programar, también es importante comunicarse con el dominio de negocio
Leer y entender los mensajes de error ayuda mucho a resolver problemas
asdfpara gestionar versiones de Python, Go y NodeJS, fue posible resolver problemas a través de los mensajes de error¿Qué es asdf? Hay que revisar la advertencia.
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...