Un camino para convertirte en mejor desarrollador: algunos skills que podrías aprender

Carlos Draper Giggs
Dunkelheit & Draper
5 min readOct 22, 2020

Cuando comienzas como desarrollador, puedes encontrarte en una posición en la que los seniors o mediors te guían por el camino del aprendizaje y mejora de tus habilidades. En ocasiones es un camino amplio con muchas tecnologías, paradigmas y proyectos, pero en ocasiones puedes acabar utilizando las mismas arquitecturas, tecnologías y solucionas una y otra y otra vez.
Para evitar perder el foco de lo que aprendiste en la universidad, o simplemente aprendiéndolo por primera vez, aquí está nuestro camino recomendado para intentar aprender algunas habilidades que te harán mejor profesional y avanzar en tu carrera. No es un “Todo lo que deberías saber para ser un buen programador” sino, más bien, “Cosas que puedes encontrar interesantes” porque se perfectamente lo difícil que es estar un día buscando ese bug y luego ponerte a leer 100 páginas de pura teoría en lugar de ponerte Netflix o Ghost of Tsushima.

Es probable que ya tengas muchos de las habilidades que te ponemos en este artículo, pero en caso de que no sea así, te ponemos una lista de recomendados por si quieres comenzar a aprender.

Estructuras de datos y algoritmos

Un desarrollador debería conocer, que no controlar, una buena cantidad de estructuras de datos para usar en el mundo real. Un buen desarrollador sabe cuando usar un diccionario en lugar de un array y qué estrategia utilizar para mejorar el software que estás construyendo. Tener fors anidados dentro de fors anidados despertará tu sentido de buen desarrollador.

  1. Introduction to Algorithms by Thomas H. Corman: probablemente uno de los mejores libros para estudiantes de grado o desarrolladores sobre algoritmos y estructuras de datos, con análisis accesibles y explicaciones comprensibles.
  2. Algorithms by Robert Sedgewick & Kevin Wayne: algunas personas lo llaman “El mejor libro sobre algoritmos” y no es fardando, precisamente, el libro es utilizado ampliamente en universidades en todo el mundo para enseñar ordenamiento, búsqueda ogrados, por ejemplo.

Mejores prácticas y clean code

No es casualidad que haya una sección entera dedicada a las mejores prácticas y el clean code. Es imperativo saber cuando lo que estás escribiendo es algo comprensible y escalable y cuando es código que tendrás que reescribir en dos semanas. Clean Code es esencial para mejorar como desarrollador.

  1. Clean Code & Clean Coder by Uncle Bob: Considerado la biblia por mucha gente. Simplemente diremos que es una gran referencia con buenos ejemplos, guías y mejores prácticas para mejorar tu código desde la primera página. Si solo te puedes permitir uno, que sea este.
  2. Refactoring by Martin Fowler: En ocasiones te enfrentarás a código mal diseñado, programado o arquitecturado y sentirás la imperiosa necesidad de mejorarlo y arreglarlo. Este libro de explica como y porqué hacerlo.

OOP

La programación orientada a objetos puede parecer anticuada, pero es uno de los paradigmas más usados hoy en día. Los principios de la herencia, la agregación, la encapsulación o la instanciación son muy comunes y necesarios en un amplio número de lenguajes como Java, TypeScript o C# y puede ser una buena opción para casi cualquier solución que te encuentres construyendo.

  1. Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D by Brett McLaughlin: El libro que te enseñará como trabajar y analizar problemas con OOP bien y centrado en la enseñanza. Puede parecer complicado, pero este libro lo hace accesible.
  2. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (Pearson Professional Education) by Craig Larman: Considerado el mejor libro para empezar a pensar en clases y objetos. Aprenderás OOP con casos de estudio que te harán dominar UML.

Functional Programming

La programación funcional no es nueva y es uno de los paradigmas más usados actualmente. Usado ampliamente en Python, Javascript o Haskell, la FP te ayudará a pensar de otra manera cómo programas cada día y es muy importante pensar de una manera diferente como abordar problemas diarios. Si esto no es suficiente, ahí va otra razón: la FP es increíblemente bonita y concisa.

  1. Haskell programming from first principles by Christopher Allen and Julie Moronuki: aprendí Haskell en la universidad, solo un par de clases y prácticas, pero fue un cambio enorme inmediatamente. Viniendo de C#/Java FP puede ser un reto importante, pero Haskell es perfecto para aprender y mejorar tus habilidades en este paradigma. Piensa diferente y resuelve problemas de otra manera. Este libro te guiará por el camino correcto.

Testing

Muchos programadores pasan toda su carrera sin escribir un test unitario o, lo que es peor, escribiendo test de integración como si fuesen test unitarios. Intenta no ser este programador en la medida de lo posible. Aunque sea duro, testing es esencial.

Todos queremos programar nuevas funcionalidades cada día, pero esa funcionalidad debe tener una buena base para funciona correctamente. Hacer tests nos ayuda a comprender donde puede haber bugs o donde encontrar su solución cuando aparezcan.

  1. The Art of Unit Testing: with examples in C# by Roy Osherov: Quieres un libro que sea ‘De 0 a experto’? este es tu libro. Aprenderás no solo patrones de diseño de tests, pero también organización, mantenimiento o cómo mockear datos además de enseñarte los conceptos base.

Arquitectura

Vale, eres un mid-senior, sabes trabajar en equipo, arreglar bugs, hacer testing, POO, PF, escribir clean code, nuevas funcionalidades… pero, ¿y construir SOLUCIONES DESDE CERO? No es fácil y algunas decisiones pueden tumbar un proyecto entero porque no has pensado con la mente puesta en el futuro o estabas siendo parcial por tu experiencia previa más que por la solución que estás construyendo.

Desde un MVP a una plataforma de machine learning, es bueno centrarnos en la solución y el alcance que tiene, y es importantísimo saber como construir productos escalables y tomar buenas decisiones. Arquitecturar soluciones de software puede parecer fácil cuando tienes toda la libertad del mundo para construir lo que quieras, pero puede ser muy difícil predecir los retos a los que te enfrentarás. Ocurre cada día en cada compañía.

Intenta aprender de antemano cuanto puedas, resuelve problemas en la misma arquitectura es posible. Algunas decisiones como migrar un string a una tabla nueva pueden marcar una gran diferencia en el futuro.

  1. Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans: No solo te ayudará a cómo analizar problemas cotidianos pero te dará herramientas para mejorar el software antes incluso de empezar el proyecto, y cuando lo hayas lanzado refactorizándolo y llevándolo al siguiente nivel. Es viejo (más de 15 años) pero es un must en tu biblioteca.
  2. Clean Architecture by Uncle Bob: Después de Clean Code, este es otro libro importante. No solo aprender a escribir clean, sino también llevar la “filosofía clean” al modo en que piensas, planificas y despliegas soluciones de software. No serás un arquitecto cuando acabes de leerlo (nunca se aprende a ser arquitecto, para ser honestos) pero tendrás un montón de consejos y lecciones de cómo debe ser un arquitecto de software para que se le llamen “arquitecto”.

--

--