Bøger, som juniorudviklere skal læse

Disse bøger “er dybest set snydekoder” til at udjævne dine færdigheder og viden som udvikler.

Uanset om du er en ny udvikler eller er ret erfaren som programmør, vil du indse, at den tid, du har arbejdet på et job, ikke er den bedste måde at bestemme din dygtighed og viden som programmør på. (Jeg ved det, fortæl det til rekruttererne?).

Hvad du laver i din fritid, og hvordan du vælger at tage læring i egne hænder, er hvad der i sidste ende vil bestemme din succes i denne branche. Derfor er det så vigtigt for os som udviklere at anvende en vækstindstilling.

Der er nogle gode måder at lære og forbedre som udvikler. Nogle af disse måder er parprogrammering, online kurser, møder, erhvervserfaring, opbygning af projekter og at finde en mentor.

En af mine personlige foretrukne måder at lære er at knække en velskrevet bog op og forsøge at absorbere noget fra dem, der har destilleret mange års viden og indsigt i en permanent artefakt.

Her er mine personlige anbefalinger, som jeg synes, at alle udviklere (især juniorer) skulle læse på et eller andet tidspunkt. Disse bøger er alle højt respekteret af fagfolk i vores branche og har potentialet til at efterlade en dyb indflydelse på kvaliteten af ​​dit arbejde og din hastighed på udvikling og læring.

Nogle af dem afviger fra de tekniske detaljer og fokuserer mere på at give dig praktiske regler om, hvad det betyder at være en god udvikler på det interpersonelle og professionelle niveau.

Offentliggørelse: Nogle af nedenstående links er tilknyttede links. Men jeg har kun tilføjet de bøger, som jeg personligt føler er nyttige for en juniorudvikler.

1. Ren kode

af Robert C. Martin (Onkel Bob)

Når du har overvundet de grundlæggende udfordringer i udviklingen og bliver fortrolig med at finde ud af, hvordan du skriver kode for at løse problemer, ville det være en god ide at kigge på denne bog. Det viser sig, at det er let at få koden til at fungere første gang. Den svære del er at få din kode til at læse godt, så andre er i stand til at forstå den og ændre den i fremtiden.

Kan du huske sidste gang du skulle læse kode som denne?

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

Hvem ved hvad det virkelig gør. Kode som denne fungerer muligvis, men i det øjeblik vi har brug for at ændre den, må vi håbe, at forfatteren af ​​koden stadig er i virksomheden og bede om, at de på en eller anden måde er i stand til at dechiffrere, hvad de skrev potentielt for mange år siden.

Når der ikke tages nøje hensyn til at skrive kode, der er læsbar og vedligeholdelig, ender vi med lommer med kode som denne, som alle er bange for at røre ved, og hvis den nogensinde går i stykker, er vi i problemer.

Onkel Bobs "Clean Code" lærer dig, hvordan du identificerer, hvordan ren kode ser ud i forhold til dårlig kode, og den lærer dig, hvordan du omdanner den til god kode. En opgave som denne lyder for de fleste trivielt, men du vil blive overrasket over, hvordan det at omdanne nogle få rene softwaredesignprincipper til vaner kan hjælpe dig med at skrive meget mere professionel og skalerbar kode.

Vi er softwarehåndværkere, ved du det. At bygge et hus er ikke meget anderledes end at bygge en applikation i princippet. Vi er nødt til at være opmærksomme på detaljerne, ellers kan det hele blive meget dyrt at rette i fremtiden, hvis det ikke gøres rigtigt første gang.

2. Clean Coder

af Robert C. Martin (Onkel Bob)

Denne bog er ikke nødvendigvis en teknisk bog, da den er en bog til at lære dig at være professionel i denne branche. Professionelle er dem, der, når de står over for udfordringer, usikkerhed og pres, vil fortsætte med at behandle oprettelse af software som et håndværk og vil være fast besluttet på at overholde deres faglige værdier.

Clean Coder er fuld af praktiske råd om estimering, refactoring, test, håndtering af konflikter, tidsplaner, undgå udbrændthed og meget mere. Pålidelig rådgivning fra en person, der har brugt årtier på at gøre disse ting.

En af de bedste ting, den lærer, er, hvordan man har integritet som udvikler, hvornår man skal sige "Nej", og hvordan man siger det.

En bog om professionalisme.

3. Refactoring

af Martin Fowler

Martin Fowler er en af ​​mine yndlingsforfattere. Den første grund er, at han er sjov. Hans tilgang til at skrive softwarebøger er umiskendeligt ”Fowler”. Den anden grund er, at han er utrolig god til at forklare komplekse emner og gøre det meget simpelt på en måde, der ikke træder dig som læser.

Refactoring er en bog, som skaberen af ​​Ruby on Rails engang sagde, at du skulle "læse, før du skriver en ny linje kode". Fowler guider dig gennem refactoring af en simpel applikation og introducerer dig til en række teknikker, som han har akkumuleret og katalogiseret gennem sine mange år med rådgivning.

Fowler viser dig, hvordan du skifter mellem kodning og refactoring, hvor ofte du skal begå din kode, og hvornår du skal skrive dine tests. Højt anbefalet. Den seneste version af denne bog blev opdateret for at præsentere eksemplerne i JavaScript, hvilket var et ekstra plus for mig, da det er mit yndlingssprog.

4. Designmønstre: Elementer af genanvendelig objektorienteret software

af Erich Gamma, Richard Helm, Ralph Johnson og John Vlissides

Dette er den skelsættende bog om designmønstre. Hvad er designmønstre, spørger du? Designmønstre er velkendte løsninger på almindeligt forekommende problemer i softwareudvikling. Hvis du er fortrolig med mønstrene, vil du opdage, at du i høj grad kan reducere den tid, det tager dig at fremlægge løsningerne på disse problemer.

At have en god bevidsthed om designmønstre giver dig også mulighed for at kommunikere dine løsninger effektivt med andre udviklere.

"Ja, jeg har lige brugt en facadeoverdækning af den databaseadapter, der bliver indlæst fra strategien."

“Ahh! Gotcha. ”

Ja, det er en ældre bog. Men det er stadig en af ​​de bedste til reference. Hvis du vil have noget om dette emne, der er lidt mere nyligt og venligt, vil jeg også anbefale de gode “Head First Design Patterns: A Brain-Friendly Guide” af Eric Freeman.

5. Domain-Driven Design: Håndtering af kompleksitet i hjertet af softwaren

af Eric Evans

For at store kodebaser fortsætter med at skalere, skal vi logisk opdele kode i forskellige dele. Ideen er at opdele din kode på en sådan måde, at det ville være muligt for separate hold at arbejde på disse dele af dit system uden at påvirke nogen anden.

Det underliggende koncept, der gør det muligt at flytte din kodebase i denne retning, er Domain-Driven Design (DDD). Det er en tilgang til softwareudvikling, hvor vi modellerer de problemer, der findes i "problemdomænet" (den virkelige verden) til en række løsningsdomæner.

DDD er utroligt vigtigt, når en kodebase bliver tilstrækkelig stor. Store virksomheder anvender DDD for at tildele teams til dele af virksomhedens kodebase.

Eric Evans skabte udtrykket ”allestedsnærværende sprog”, som er betegnelsen for at opbygge et fælles, altomfattende sprog mellem udviklerne, domæneeksperterne og andre brugere eller aktører i domænet. Ved at bruge dette allestedsnærværende sprog sikrer det, at de vigtigste domænekoncepter forstås godt og modelleres i softwaren.

Bogen er lidt mere teknisk og udfordrende end de andre, men hvis du bliver fortrolig med disse begreber, har du det meget godt med at forstå, hvordan nutidens største virksomheder holder deres kodebaser håndterbare og skalerbare.

** Opdatering: 17. april 2019 **

Jeg har tænkt lidt over denne anbefaling. Introduktion til DDD-verdenen er efter min mening yderst gavnlig for juniorudviklere. Jeg tror, at dette er sandt, fordi DDD lægger vægt på fortrolighed med softwarearkitektur , design principper og design mønstre . Det er en fantastisk måde at introducere dig selv til et højere niveau af programmering.

Når det er sagt, er DDD et stort og udfordrende emne. For nogle læsere er denne bog (den sædvanlige "blå bog" )af Eric Evansmåske behandles bedre som en reference. Det var Eric Evans, der skrev den første bog om DDD.

Men jeg er for nylig færdig med at læse DDD Distilled af Vaughn Vernon. Det er en virkelig kort og sød introduktion til DDD, skrevet for at imødegå det faktum, at de fleste bøger om DDD er enorme i størrelse.

Prøv bestemt DDD Distilled i stedet. Jeg tror, ​​at denne bog ville være meget bedre for de fleste udviklere for først at blive rampet op om DDD-essentials. For mere praktiske detaljer om, hvordan koncepterne implementeres, henvises tilbage til “den blå bog” og “den røde bog”.

6. Bløde færdigheder: Softwareudviklerens livshåndbog

af 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

Bedre softwaredesign med ren arkitektur

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

Den rene arkitektur

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

Min kommende gratis ressource, en introduktion til softwarearkitektur og designprincipper med Node.js og TypeScript

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

Bliv ved med at vokse, og sjov, mens du er ved det!

Hvis du er en canadisk studerende eller nyuddannet på udkig efter udviklingsmuligheder på avanceret niveau eller co-ops / praktikophold, skal du tjekke vores platform, Univjobs. Vi sender kun job specifikt til studerende og nyuddannede.