Ezek a könyvek „alapvetően csalási kódok”, amelyek fejlesztői képességeid és ismereteid szintjének növelésére szolgálnak.
Függetlenül attól, hogy új fejlesztő vagy, vagy meglehetősen tapasztalt programozóként, rájössz, hogy a munkában töltött idő nem a legjobb módja annak, hogy meghatározd programozói készségeidet és tudásodat (Tudom, mondd el ezt a toborzóknak?).
Az, hogy mit csinál szabadidejében, és hogyan választja a tanulást a saját kezébe, az fogja végső soron meghatározni a sikerét ebben az iparágban. Ezért nekünk, mint fejlesztőknek olyan fontos a növekedési gondolkodásmód elfogadása.
Van néhány kiváló módszer a fejlesztőként történő tanulásra és fejlődésre. Néhány ilyen módszer: páros programozás, online tanfolyamok, találkozók, munkatapasztalat, projektek építése és mentor megtalálása.
Az egyik kedvenc tanulási módom az, hogy feltörök egy jól megírt könyvet, és megpróbálok elnyelni valamit azoktól, akik több éves tudással és betekintéssel rendelkeznek egy állandó műtárgyhoz.
Íme a személyes ajánlásaim, amelyeket szerintem minden fejlesztőnek (különösen a junioroknak) el kell olvasnia valamikor. Ezeket a könyveket az iparág szakemberei nagyra értékelik, és nagyban befolyásolhatják munkájának minőségét, valamint fejlődésének és tanulásának sebességét.
Néhányan eltévelyednek a technikai részletek elől, és inkább arra összpontosítanak, hogy gyakorlati szabályokat adjanak arra vonatkozóan, hogy mit jelent jó fejlesztőnek lenni interperszonális és szakmai szinten.
Közzététel: Az alábbi linkek közül néhány társult link. De csak azokat a könyveket adtam hozzá, amelyekről személy szerint úgy gondolom, hogy hasznosak egy junior dev számára.1. Tiszta kód
szerző: Robert C. Martin (Bob bácsi)
Miután legyőzte a fejlesztés alapvető kihívásait, és kényelmesen kitalálta, hogyan kell kódot írni a problémák megoldására, célszerű megnéznie ezt a könyvet. Kiderült, hogy a kód első működtetése valójában a könnyű feladat. Az a nehéz, hogy a kódod jól olvashatóvá válik, hogy mások is megértsék és megváltoztathassák a jövőben.
Emlékszel, mikor kellett utoljára ilyen kódot olvasni?
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 } }
Ki tudja, mit csinál valójában. Az ilyen kód működhet, de abban a pillanatban, amikor meg kell változtatnunk, remélnünk kell, hogy a kód szerzője még mindig a társaságban van, és imádkoznunk kell, hogy valahogy képesek legyenek megfejteni azt, amit évekkel ezelőtt írtak.
Ha nem figyelünk oda oda, hogy olvasható és karbantartható kódot írjunk, akkor olyan kódzsebekkel rendelkezünk, amelyekhez mindenki fél hozzáérni, és ha valaha is elromlik, akkor bajban vagyunk.
Bob bácsi „Tiszta kódja” megtanítja, hogyan kell meghatározni, hogy néz ki a tiszta kód a rossz kódhoz képest, és megtanítja, hogyan kell átalakítani jó kóddá. Egy ilyen feladat a legtöbb számára triviálisnak hangzik, de meglepődne azon, hogy a néhány tiszta szoftvertervezési alapelv szokássá alakítása hogyan segíthet sokkal professzionálisabb és méretezhetőbb kód megírásában.
Szoftveriparosok vagyunk, tudod. A házépítés nem sokban különbözik az elvi alkalmazás építésétől. Figyelnünk kell a részletekre, különben mindez nagyon drágává válhat a jövőben, ha nem sikerül először.
2. A tiszta kódoló
szerző: Robert C. Martin (Bob bácsi)
Ez a könyv nem feltétlenül műszaki könyv, mivel ez egy könyv arra, hogy megtanítsa, hogyan lehet profi ebben az iparágban. Szakemberek azok, akik kihívásokkal, bizonytalansággal és nyomással szembesülve továbbra is mesterségként kezelik a szoftveralkotást, és eltökélten ragaszkodnak szakmai értékeikhez.
A Clean Coder tele van gyakorlati tanácsokkal a becsléssel, az újrateremtéssel, a teszteléssel, a konfliktusok kezelésével, a menetrendekkel, a kiégés elkerülésével és még sok mással kapcsolatban. Megbízható tanács valakitől, aki évtizedekig töltötte ezeket a dolgokat.
Az egyik legjobb dolog, amit megtanít, az, hogy miként kell integritni fejlesztőként, mikor kell „nem” -et mondani és hogyan kell azt mondani.
Könyv a profizmusról.
3. Refaktorálás
írta Martin Fowler
Martin Fowler az egyik kedvenc szerzőm. Az első ok az, hogy vidám. Szoftveres könyvek írása egyértelműen „Fowler”. A másik ok az, hogy hihetetlenül jól tudja megmagyarázni a bonyolult témákat, és ezt nagyon egyszerűen, oly módon, hogy ne fárasszon el olvasóként.
A refactoring olyan könyv, amelyet a Ruby on Rails készítője egyszer azt mondott, hogy „olvassa el, mielőtt újabb kódsort írna”. Fowler végigvezeti Önt egy egyszerű alkalmazás újrafejlesztésén, megismertetve Önt számos technikával, amelyet a tanácsadás évei alatt felhalmozott és katalogizált.
Fowler megmutatja, hogyan lehet átkapcsolni a kódolás és az újrateremtés között, milyen gyakran kell elköteleznie a kódot, és mikor kell a teszteket írni. Nagyon ajánlott. A könyv legújabb verzióját frissítettük, hogy bemutassuk a példákat JavaScript-ben, ami számomra további pluszt jelentett, mivel ez a kedvenc nyelvem.
4. Tervezési minták: Újrafelhasználható objektum-orientált szoftver elemei
Erich Gamma, Richard Helm, Ralph Johnson és John Vlissides
Ez a formatervezési minták alapvető könyve. Melyek a tervezési minták, kérdezed? A tervezési minták jól ismert megoldások a szoftverfejlesztésben gyakran előforduló problémákra. Ha ismeri a mintákat, rájön, hogy jelentősen csökkentheti azt az időt, amelyre szüksége van, hogy megoldást nyújtson ezekre a problémákra.
Ha jól ismeri a tervezési mintákat, akkor hatékonyan kommunikálhatja megoldásait más fejlesztőkkel is.
"Igen, éppen azt a homlokzati felületet használtam, amelyik adatbázis-adaptert a stratégia betölti."- Ááá! Megvagy."
Igen, ez egy régebbi könyv. De még mindig az egyik legjobb referenciaként. Ha szeretnél valami kicsit frissebbet és barátságosabbat ebben a témában, ajánlom Eric Freeman jó „Head First Design Patterns: A Brain-Friendly Guide” című kiadványát is.
5. Tartományvezérelt tervezés: A komplexitás kezelése a szoftver középpontjában
írta Eric Evans
Annak érdekében, hogy a nagy kódbázisok tovább skálázódjanak, logikusan fel kell osztanunk a kódot különböző részekre. Az elképzelés az, hogy felosztja a kódját oly módon, hogy külön csapatok dolgozhassanak a rendszer ezen részein anélkül, hogy bárki mást érintenének.
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.