Libros que los desarrolladores junior deberían leer

Estos libros "son básicamente códigos de trampa" para mejorar sus habilidades y conocimientos como desarrollador.

Ya sea que sea un desarrollador nuevo o tenga bastante experiencia como programador, se dará cuenta de que la cantidad de tiempo que ha trabajado en un trabajo no es la mejor manera de determinar su habilidad y conocimiento como programador. (Lo sé, ¿decirle eso a los reclutadores?).

Lo que haga en su tiempo libre y cómo elija tomar el aprendizaje en sus propias manos es lo que finalmente determinará su éxito en esta industria. Por eso es tan importante para nosotros como desarrolladores adoptar una mentalidad de crecimiento.

Hay algunas formas excelentes de aprender y mejorar como desarrollador. Algunas de esas formas son la programación en pareja, los cursos en línea, las reuniones, la experiencia laboral, la creación de proyectos y la búsqueda de un mentor.

Una de mis formas favoritas de aprender es abrir un libro bien escrito y tratar de absorber algo de aquellos que han destilado años de conocimiento y comprensión de un artefacto permanente.

Aquí están mis recomendaciones personales que creo que todos los desarrolladores (especialmente los más jóvenes) deberían leer en algún momento. Todos estos libros son muy apreciados por los profesionales de nuestra industria y tienen el potencial de dejar un impacto profundo en la calidad de su trabajo y su velocidad de desarrollo y aprendizaje.

Algunos de ellos se desvían de los detalles técnicos y se centran más en darte reglas prácticas sobre lo que significa ser un buen desarrollador a nivel interpersonal y profesional.

Divulgación: algunos de los enlaces a continuación son enlaces de afiliados. Pero, solo agregué aquellos libros que personalmente creo que son útiles para un desarrollador junior.

1. Código limpio

por Robert C. Martin (Tío Bob)

Una vez que haya superado los desafíos básicos del desarrollo y se haya sentido cómodo descubriendo cómo escribir código para resolver problemas, sería una buena idea echar un vistazo a este libro. Resulta que hacer que el código funcione a la primera es en realidad la parte fácil. La parte difícil es hacer que su código se lea bien para que otros puedan entenderlo y cambiarlo en el futuro.

¿Recuerdas la última vez que tuviste que leer un código como este?

function calculateIt (a, b) { if (a.delta < b.element.x) { var x = b.element.x; return x - b.delta.x } else { var y = b.next.y; var h = b.element.y * 2; return y - h } }

Quién sabe lo que realmente hace. Un código como este podría funcionar, pero en el momento en que necesitemos cambiarlo, tenemos que esperar que el autor del código todavía esté en la empresa y rezar para que de alguna manera puedan descifrar lo que escribieron hace años.

Cuando no se presta especial atención a escribir código que sea legible y fácil de mantener, terminamos con bolsas de código como este que todos tienen miedo de tocar, y si alguna vez se rompe, estamos en problemas.

El "Código limpio" del tío Bob le enseña cómo identificar el aspecto del código limpio en comparación con el código incorrecto, y le enseña cómo transformarlo en código bueno. Una tarea como esta suena trivial para la mayoría, pero se sorprendería de cómo convertir unos pocos principios de diseño de software limpio en hábitos puede ayudarlo a escribir código mucho más profesional y escalable.

Somos artesanos de software, ¿sabe? Construir una casa no es muy diferente a construir una aplicación en principio. Debemos prestar atención a los detalles o, de lo contrario, todo puede resultar muy costoso de arreglar en el futuro si no se hace bien la primera vez.

2. El codificador limpio

por Robert C. Martin (Tío Bob)

Este libro no es necesariamente un libro técnico, ya que es un libro para enseñarle cómo ser un profesional en esta industria. Los profesionales son aquellos que, ante los desafíos, la incertidumbre y la presión, seguirán tratando la creación de software como un arte y estarán decididos a adherirse a sus valores profesionales.

Clean Coder está lleno de consejos prácticos sobre estimación, refactorización, pruebas, manejo de conflictos, horarios, evitar el agotamiento y mucho más. Consejos de confianza de alguien que ha pasado décadas haciendo estas cosas.

Una de las mejores cosas que enseña es cómo tener integridad como desarrollador, cuándo decir "No" y cómo decirlo.

Un libro sobre profesionalismo.

3. Refactorización

por Martin Fowler

Martin Fowler es uno de mis autores favoritos. La primera razón es que es muy gracioso. Su enfoque para escribir libros de software es inconfundiblemente "Fowler". La otra razón es que es increíblemente bueno para explicar temas complejos y hacerlo de manera muy simple, de una manera que no lo fatiga como lector.

La refactorización es un libro que el creador de Ruby on Rails dijo una vez que debería "leer antes de escribir otra línea de código". Fowler lo guía a través de la refactorización de una aplicación simple, presentándole una serie de técnicas que ha acumulado y catalogado durante sus años de consultoría.

Fowler le muestra cómo alternar entre codificación y refactorización, con qué frecuencia debe confirmar su código y cuándo debe escribir sus pruebas. Muy recomendable. La última versión de este libro se actualizó para presentar los ejemplos en JavaScript, lo que fue una ventaja adicional para mí, ya que es mi idioma favorito.

4. Patrones de diseño: elementos de software orientado a objetos reutilizable

por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides

Este es el libro fundamental sobre patrones de diseño. ¿Qué son los patrones de diseño, preguntas? Los patrones de diseño son soluciones bien conocidas para problemas comunes en el desarrollo de software. Si está familiarizado con los patrones, verá que podrá reducir en gran medida la cantidad de tiempo que le lleva presentar las soluciones a esos problemas.

Tener un buen conocimiento de los patrones de diseño también le permite comunicar sus soluciones de manera efectiva con otros desarrolladores.

"Sí, acabo de utilizar un Facade sobre cualquier Adaptador de base de datos que se cargue desde la Estrategia".

“¡Ahh! Te tengo ".

Sí, es un libro antiguo. Pero sigue siendo uno de los mejores como referencia. Si desea algo sobre este tema que sea un poco más reciente y amigable, también le recomendaría el buen "Head First Design Patterns: A Brain-Friendly Guide" de Eric Freeman.

5. Diseño basado en dominios: abordar la complejidad en el corazón del software

por Eric Evans

Para que las bases de código grandes continúen escalando, necesitamos dividir lógicamente el código en diferentes partes. La idea es dividir su código de tal manera que sea posible que equipos separados trabajen en esas partes de su sistema sin afectar a nadie más.

El concepto subyacente que permite mover su base de código en esta dirección es el diseño controlado por dominio (DDD). Es un enfoque para el desarrollo de software en el que modelamos los problemas que existen en el "dominio del problema" (el mundo real) en varios dominios de solución.

DDD es increíblemente importante cuando una base de código se vuelve lo suficientemente grande. Las grandes empresas emplean DDD para asignar equipos a partes del código base de la empresa.

Eric Evan acuñó el término "Lenguaje ubicuo", que es el término para construir un lenguaje común y global entre los desarrolladores, los expertos en el dominio y cualquier otro usuario o actor en el dominio. Al utilizar este lenguaje ubicuo, se asegura que los conceptos de dominio más importantes se entiendan bien y se modelen en el software.

El libro es un poco más técnico y desafiante que los demás, pero si se familiariza con estos conceptos, podrá comprender cómo las empresas más grandes de la actualidad mantienen sus bases de código manejables y escalables.

** Actualización: 17 de abril de 2019 **

He pensado un poco en esta recomendación. La introducción al mundo DDD es, en mi opinión, extremadamente beneficiosa para los desarrolladores junior. Creo que esto es cierto porque DDD da importancia a la familiaridad con la arquitectura de software , los principios de diseño y los patrones de diseño . Es una excelente manera de presentarse prácticamente a un nivel superior de programación.

Dicho esto, DDD es un tema amplio y desafiante. Para algunos lectores, este libro (el seminal "libro azul" )por Eric Evanspodría tratarse mejor como referencia. Fue Eric Evans quien escribió el primer libro sobre DDD.

Sin embargo, acabo de terminar de leer DDD Distilled de Vaughn Vernon. Es una introducción realmente corta y dulce a DDD, escrita para abordar el hecho de que la mayoría de los libros sobre DDD son enormes.

Definitivamente pruebe DDD Distilled en su lugar. Creo que este libro sería mucho mejor para la mayoría de los desarrolladores con el fin de mejorar primero los aspectos esenciales de DDD. Para obtener más detalles prácticos sobre cómo implementar los conceptos, consulte "el libro azul" y "el libro rojo".

6. Habilidades blandas: el manual de vida del desarrollador de software

por John Sonmez

Debemos esforzarnos por mantenernos bien equilibrados como desarrolladores de software. Desafortunadamente, estar bien equilibrado no es un rasgo que la mayoría de las personas se afilien a desarrolladores de software. La verdad es que es increíblemente importante invertir en su aprendizaje, salud y bienestar general como desarrollador.

Las "habilidades blandas" se refieren a las cosas importantes que importan fuera de la codificación, como la productividad, los objetivos profesionales y las finanzas personales. Sonmez también se dedica a la inversión, cómo se jubiló a los 33, consejos sobre piratería física y mantenimiento de relaciones, cosas que rara vez se abordan en la comunidad de programación.

Está escrito de tal manera que puede saltar al libro en el capítulo que crea que es más relevante para usted hoy.

7. Arquitectura limpia

por Robert C. Martin (Tío Bob)

¿Qué? El tío Bob escribe buenos libros, ¿de acuerdo?

In school, there’s a lot of focus on algorithms and less focus on software design principles. I think it’s kind of unfortunate because in reality, you don’t encounter that many algorithm challenges too often. Instead, it’s more common that you’ll be faced with the challenge of structuring your code in a way that’s modular, flexible, readable and will allow you to add new features quickly when requirements change.

Clean Architecture is about the essential software design principles and patterns that you’ll be able to use in order to face these challenges.

Some of the best takeaways from this book are the cost of dependencies, stable vs. non-stable code and the SOLID principles: a way to write code so that it’s more understandable, flexible and maintainable.

Other aspects of this book that were incredibly useful were concepts of “screaming architecture” and “packaging by component” which are opinions on how to organize your modules so that it practically screams to the reader exactly what the project is all about.

This book goes well hand-in-hand with Domain-Driven Design, which is enabled through the use of a “Layered Architecture” or as Uncle Bob calls it, “The Clean Architecture” (also known as Ports and Adapters). A great book for anyone who wants to up their architecture chops and learn how to effectively design a system at a high level, and do the dance of dependencies at the detail level.

8. The Effective Engineer

by Edmond Lau

Time is our single most valuable asset in life, and we should aim to be more efficient with it. It’s easy to get bogged down and spend a lot of time fixing bugs and wasting effort. Doing repeated work. Bleh. The Effective Engineer is all about getting more done in less time and removing repeated work.

We can mitigate wasted time and effort on repetitive tasks through a framework called “leverage”.

Leverage helps you identify the activities that you can do that produce the most disproportionate results- per unit of time invested. It’s a framework that can apply to anything, whether that be how you learn, how you code, how you debug… anything!

9. The Pragmatic Programmer

by Andrew Hunt & David Thomas

Praised for being easy to follow and understand, The Pragmatic Programmer is a book that should be on the desktop of developers of all levels. Andrew and David are programmers that not only spent many years doing what they do, but paying attention to what they were doing as they were doing it, and then trying to determine if they could do that better.

What came out of their years of introspection was this book, which introduces a number of essential programmer philosophies to follow throughout your career, like “programmers should have a “do it once, or automate” philosophy”.

It includes simple yet detailed advice that you should carry with you in the back of your mind before you write another line of code or start a new project.

Final Words

Books really are some of the best tools to improve your knowledge and skills as a new programmer or Junior Developer. Books tend to have a really high return on investment; did you know you can make a lot of money programming? ?

These are just a few of the best books out there right now in 2019! None of them are really new, but that’s because programming has maintained the same general philosophies and best practices for years. As a professor I once had to say, “you can make a lot of money in this industry, you just have to read the damn manual”.

Have you read any of these books? What did you think? Any books not on this list that you think newer developers would really benefit from reading? Let us know in the comments!

Additional Resources

Here’s a list of some really excellent articles that cover some of the topics from these books. If you don’t quite have the time to invest in fully blown books right now, familiarizing yourself with these concepts might assist you in your journey to become a better developer!

Surviving Your First Junior Developer Job [Guide] ??

//univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/

Refactoring.guru

//refactoring.guru/

SOLID Design Principles

//stackify.com/solid-design-principles/

DRY (Don’t Repeat Yourself)

//en.wikipedia.org/wiki/Don%27t_repeat_yourself

NodeJS and Good Practices

//blog.codeminer42.com/nodejs-and-good-practices-354e7d76362

Implementing the SOLID and the onion architecture in Node.js

//dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad

Better Software Design with Clean Architecture

//fullstackmark.com/post/11/better-software-design-with-clean-architecture

The Clean Architecture

//blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

My upcoming free resource, an introduction to software architecture and design principles with Node.js and TypeScript

//khalilstemmler.com/resources/solid-nodejs-architecture

Keep growing, and have fun while you’re at it!

If you’re a Canadian student or recent-grad looking for entry-level developer opportunities or co-ops/internships, you should check out our platform, Univjobs. We only post jobs specifically for students and recent-grads.