Bücher, die Junior-Entwickler lesen sollten

Diese Bücher sind „im Grunde genommen Cheat-Codes“, um Ihre Fähigkeiten und Kenntnisse als Entwickler zu verbessern.

Unabhängig davon, ob Sie ein neuer Entwickler oder ein erfahrener Programmierer sind, werden Sie feststellen, dass die Zeit, die Sie bei einem Job gearbeitet haben, nicht der beste Weg ist, um Ihre Fähigkeiten und Kenntnisse als Programmierer zu bestimmen (Ich weiß, sagen Sie das den Personalvermittlern?).

Was Sie in Ihrer Freizeit tun und wie Sie das Lernen selbst in die Hand nehmen, wird letztendlich Ihren Erfolg in dieser Branche bestimmen. Deshalb ist es für uns als Entwickler so wichtig, eine Wachstumsphilosophie zu entwickeln.

Es gibt einige hervorragende Möglichkeiten, als Entwickler zu lernen und sich zu verbessern. Einige dieser Möglichkeiten sind Paarprogrammierung, Online-Kurse, Meetups, Berufserfahrung, Bauprojekte und die Suche nach einem Mentor.

Eine meiner persönlichen Lieblingsmethoden zum Lernen ist es, ein gut geschriebenes Buch aufzubrechen und zu versuchen, etwas von denen aufzunehmen, die jahrelanges Wissen und Einsicht in ein dauerhaftes Artefakt gewonnen haben.

Hier sind meine persönlichen Empfehlungen, die meiner Meinung nach alle Entwickler (insbesondere Junior-Entwickler) irgendwann lesen sollten. Diese Bücher werden von Fachleuten in unserer Branche hoch geschätzt und können einen tiefgreifenden Einfluss auf die Qualität Ihrer Arbeit und Ihre Entwicklungs- und Lerngeschwindigkeit haben.

Einige von ihnen weichen von den technischen Details ab und konzentrieren sich mehr darauf, Ihnen praktische Regeln zu geben, was es bedeutet, ein guter Entwickler auf zwischenmenschlicher und beruflicher Ebene zu sein.

Offenlegung: Einige der unten aufgeführten Links sind Affiliate-Links. Aber ich habe nur die Bücher hinzugefügt, die ich persönlich für einen Junior-Entwickler nützlich halte.

1. Code reinigen

von Robert C. Martin (Onkel Bob)

Nachdem Sie die grundlegenden Herausforderungen der Entwicklung gemeistert und sich mit dem Schreiben von Code zur Lösung von Problemen vertraut gemacht haben, ist es eine gute Idee, sich dieses Buch anzusehen. Es stellt sich heraus, dass es eigentlich einfach ist, den Code zum ersten Mal zum Laufen zu bringen. Der schwierige Teil besteht darin, Ihren Code gut lesen zu lassen, damit andere ihn verstehen und in Zukunft ändern können.

Erinnerst du dich an das letzte Mal, als du Code wie diesen lesen musstest?

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 } }

Wer weiß, was es wirklich tut. Code wie dieser mag funktionieren, aber in dem Moment, in dem wir ihn ändern müssen, müssen wir hoffen, dass der Autor des Codes noch im Unternehmen ist und beten, dass er irgendwie in der Lage ist, das zu entschlüsseln, was er möglicherweise vor Jahren geschrieben hat.

Wenn nicht sorgfältig darauf geachtet wird, lesbaren und wartbaren Code zu schreiben, haben wir solche Codetaschen, die jeder nicht berühren kann, und wenn sie jemals kaputt gehen, sind wir in Schwierigkeiten.

In Onkel Bobs „Clean Code“ erfahren Sie, wie Sie feststellen können, wie sauberer Code im Vergleich zu schlechtem Code aussieht, und wie Sie ihn in guten Code umwandeln. Eine Aufgabe wie diese klingt für die meisten trivial, aber Sie werden überrascht sein, wie Sie durch das Umsetzen einiger Prinzipien für sauberes Software-Design in Gewohnheiten viel professionelleren und skalierbareren Code schreiben können.

Wir sind Software-Handwerker, wissen Sie. Ein Haus zu bauen ist nicht viel anders als eine Anwendung im Prinzip zu bauen. Wir müssen auf die Details achten, sonst kann die Reparatur in Zukunft sehr teuer werden, wenn sie nicht gleich beim ersten Mal richtig gemacht wird.

2. Der Clean Coder

von Robert C. Martin (Onkel Bob)

Dieses Buch ist nicht unbedingt ein technisches Buch, da es Ihnen beibringt, wie man ein Profi in dieser Branche ist. Profis sind diejenigen, die angesichts von Herausforderungen, Unsicherheiten und Druck die Erstellung von Software weiterhin als Handwerk betrachten und entschlossen sind, an ihren professionellen Werten festzuhalten.

Der Clean Coder bietet zahlreiche praktische Tipps zum Schätzen, Umgestalten, Testen, Umgang mit Konflikten, Zeitplänen, Vermeiden von Burnout und vielem mehr. Vertrauenswürdiger Rat von jemandem, der Jahrzehnte damit verbracht hat, dieses Zeug zu machen.

Eines der besten Dinge, die es lehrt, ist, wie man als Entwickler Integrität hat, wann man „Nein“ sagt und wie man es sagt.

Ein Buch über Professionalität.

3. Refactoring

von Martin Fowler

Martin Fowler ist einer meiner Lieblingsautoren. Der erste Grund ist, dass er komisch ist. Sein Ansatz, Softwarebücher zu schreiben, ist unverkennbar „Fowler“. Der andere Grund ist, dass er unglaublich gut darin ist, komplexe Themen zu erklären und dies ganz einfach auf eine Weise, die Sie als Leser nicht ermüdet.

Refactoring ist ein Buch, das der Schöpfer von Ruby on Rails einmal gesagt hat, dass Sie "lesen sollten, bevor Sie eine weitere Codezeile schreiben". Fowler führt Sie durch die Überarbeitung einer einfachen Anwendung und führt Sie in eine Reihe von Techniken ein, die er im Laufe seiner jahrelangen Beratung gesammelt und katalogisiert hat.

Fowler zeigt Ihnen, wie Sie zwischen Codierung und Refactoring wechseln, wie oft Sie Ihren Code festschreiben sollten und wann Sie Ihre Tests schreiben sollten. Sehr empfehlenswert. Die neueste Version dieses Buches wurde aktualisiert, um die Beispiele in JavaScript zu präsentieren. Dies war ein zusätzliches Plus für mich, da es meine Lieblingssprache ist.

4. Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software

von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides

Dies ist das wegweisende Buch über Designmuster. Was sind Designmuster? Entwurfsmuster sind bekannte Lösungen für häufig auftretende Probleme in der Softwareentwicklung. Wenn Sie mit den Mustern vertraut sind, werden Sie feststellen, dass Sie die Zeit, die Sie für die Lösung dieser Probleme benötigen, erheblich reduzieren können.

Wenn Sie sich mit Entwurfsmustern gut auskennen, können Sie Ihre Lösungen auch effektiv mit anderen Entwicklern kommunizieren.

"Ja, ich habe gerade eine Fassade über dem Datenbankadapter verwendet, der aus der Strategie geladen wird."

„Ahh! Erwischt."

Ja, es ist ein älteres Buch. Aber es ist immer noch eines der besten als Referenz. Wenn Sie etwas zu diesem Thema möchten, das etwas aktueller und freundlicher ist, würde ich auch die guten „Head First Design Patterns: A Brain-Friendly Guide“ von Eric Freeman empfehlen.

5. Domain-Driven Design: Bewältigung der Komplexität im Herzen von Software

von Eric Evans

Damit große Codebasen weiterhin skaliert werden können, müssen wir den Code logisch in verschiedene Teile aufteilen. Die Idee ist, Ihren Code so zu partitionieren, dass separate Teams an diesen Teilen Ihres Systems arbeiten können, ohne andere zu beeinflussen.

The underlying concept that enables moving your code base in this direction is Domain-Driven Design (DDD). It’s an approach to software development where we model the problems that exist in the “problem domain” (the real world) to a number of solution domains.

DDD is incredibly important when a code base gets sufficiently large. Large enterprise companies employ DDD in order to assign teams to parts of the company’s code base.

Eric Evan’s coined the term “Ubiquitous Language”, which is the term for building a common, all-encompassing language between the developers, the domain experts and any other users or actors in the domain. By using this Ubiquitous Language, it ensures that the most important domain concepts are well understood and get modeled in the software.

The book is a little more technical and challenging than the others, but if you get familiar with these concepts, you’ll be very well off in understanding how today’s largest companies keep their code bases manageable and scalable.

**Update: April 17th, 2019**

I’ve thought about this recommendation a little bit. Introduction to the DDD world is, in my opinion, extremely beneficial for Junior Developers. I believe this to be true because DDD places importance on familiarity with software architecture, designprinciples and design patterns. It’s a great way to practically introduce yourself to a higher level of programming.

That said, DDD is a large and challenging topic. For some readers, this book (the seminal “blue book”)by Eric Evansmight be better treated as a reference. It was Eric Evans who wrote the first book on DDD.

However, I just recently finished reading DDD Distilled by Vaughn Vernon. It’s a really short and sweet intro to DDD, written in order to address the fact that most books on DDD are huge in size.

Definitely try DDD Distilled instead. I think this book would be a lot better for most developers in order to get ramped up on the DDD essentials first. For more practical details on how to implement the concepts, refer back to “the blue book” and “the red book”.

6. Soft Skills: The Software Developer’s Life Manual

by John Sonmez

We should strive to stay well-balanced as a software developer. Unfortunately, being well-balanced is not a trait that most people affiliate with software developers. The truth is, it’s incredibly important to invest in your learning, health and overall well-being as a developer.

“Soft skills” is about the important stuff that matters outside of actually coding, like productivity, career goals and personal finance. Sonmez also goes into investing, how he retired at 33, fitness hacking tips and maintaining relationships - things rarely addressed in the programming community.

It’s written in such a way that you can jump into the book at whichever chapter you think is most relevant to you today.

7. Clean Architecture

by Robert C. Martin (Uncle Bob)

What? Uncle Bob writes good books, ok?

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.