Knygos, kurias turėtų perskaityti jaunesnieji kūrėjai

Šios knygos „iš esmės yra apgaulės kodai“, skirtos tobulinti savo, kaip kūrėjo, įgūdžius ir žinias.

Nesvarbu, ar esate naujas kūrėjas, ar esate gana patyręs kaip programuotojas, suprasite, kad laikas, kurį dirbote darbe, nėra geriausias būdas nustatyti jūsų, kaip programuotojo, įgūdžius ir žinias (Žinau, pasakyk tai verbuotojams?).

Tai, ką darote laisvalaikiu ir kaip pasirenkate mokymąsi į savo rankas, galiausiai nulems jūsų sėkmę šioje srityje. Štai kodėl mums, kaip kūrėjams, taip svarbu perimti augimo mąstyseną.

Yra keletas puikių būdų mokytis ir tobulėti kaip kūrėjui. Kai kurie iš šių būdų yra porinis programavimas, internetiniai kursai, susitikimai, darbo patirtis, projektų kūrimas ir mentoriaus paieška.

Vienas iš mano mėgstamiausių mokymosi būdų yra atplėšti gerai parašytą knygą ir pabandyti ką nors įsisavinti iš tų, kurie turi distiliuotų metų žinių ir įžvalgų apie nuolatinį dirbinį.

Čia yra mano asmeninės rekomendacijos, kurias, manau, visi kūrėjai (ypač jaunesnieji) tam tikru metu turėtų perskaityti. Šios knygos yra labai vertinamos mūsų pramonės profesionalų ir gali labai paveikti jūsų darbo kokybę, tobulėjimo ir mokymosi greitį.

Kai kurie jų nuklysta nuo techninių detalių ir daugiau dėmesio skiria tam, kad pateiktų jums praktines taisykles, ką reiškia būti geru kūrėju tarpasmeniniame ir profesiniame lygmenyje.

Atskleidimas: Kai kurios iš žemiau pateiktų nuorodų yra filialų nuorodos. Bet aš pridėjau tik tas knygas, kurios, mano manymu, yra naudingos jaunesniajam devui.

1. Švarus kodas

pateikė Robert C. Martin (dėdė Bobas)

Įveikę pagrindinius plėtros iššūkius ir patogiai sugalvoję, kaip rašyti kodą, kad išspręstumėte problemas, būtų gera mintis pažvelgti į šią knygą. Pasirodo, kad tai, kad kodas veiktų pirmą kartą, iš tikrųjų yra lengviausia. Sunkiausia yra priversti jūsų kodą gerai perskaityti, kad kiti galėtų jį suprasti ir pakeisti ateityje.

Pamenate, kada paskutinį kartą teko skaityti tokį kodą?

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

Kas žino, ką tai daro iš tikrųjų. Toks kodas gali veikti, bet tuo metu, kai mums reikia jį pakeisti, turime tikėtis, kad kodo autorius vis dar yra įmonėje, ir melstis, kad jie kažkaip sugebėtų iššifruoti tai, ką parašė prieš daugelį metų.

Kai neatsižvelgiama į tai, kad rašote kodą, kurį būtų galima skaityti ir prižiūrėti, galų gale atsiras tokių kodų kišenių, kurias visi bijo liesti, o jei ji kada nors sugenda, turime bėdų.

Dėdės Bobo „Švarus kodas“ moko, kaip atpažinti švarų kodą, palyginti su blogu kodu, ir išmoko jį paversti geru kodu. Tokia užduotis daugumai skamba nereikšmingai, tačiau nustebsite, kaip tik keletą švarių programinės įrangos projektavimo principų pavertimas įpročiais gali padėti parašyti daug profesionalesnį ir keičiamo dydžio kodą.

Mes žinome, kad esame programinės įrangos meistrai. Namo statyba nedaug skiriasi nuo principo taikymo. Turime atkreipti dėmesį į detales, kitaip visa tai gali būti labai brangu taisyti ateityje, jei tai daroma ne pirmą kartą.

2. „Clean Coder“

pateikė Robert C. Martin (dėdė Bobas)

Ši knyga nebūtinai yra techninė knyga, nes tai knyga, mokanti jus, kaip būti šios pramonės profesionalu. Profesionalai yra tie, kurie, susidūrę su iššūkiais, netikrumu ir spaudimu, ir toliau programinės įrangos kūrimą traktuos kaip amatą ir bus pasiryžę laikytis savo profesinių vertybių.

„Clean Coder“ yra daug praktiškų patarimų, kaip įvertinti, modifikuoti, išbandyti, spręsti konfliktus, tvarkaraščius, išvengti perdegimo ir daug daugiau. Patikimas patarimas iš žmogaus, kuris dešimtmečius praleido užsiimdamas šia veikla.

Vienas geriausių dalykų, ko jis moko, yra tai, kaip būti sąžiningu kaip kūrėju, kada pasakyti „Ne“ ir kaip tai pasakyti.

Knyga apie profesionalumą.

3. Refaktoravimas

Martin Fowler

Martinas Fowleris yra vienas mėgstamiausių mano autorių. Pirmoji priežastis yra ta, kad jis linksmas. Jo požiūris į programinės įrangos knygų rašymą yra neabejotinai „Fowler“. Kita priežastis yra ta, kad jis nepaprastai moka paaiškinti sudėtingas temas ir tai daro labai paprastai, kad jūsų, kaip skaitytojo, nepavargtų.

„Refactoring“ yra knyga, kurią „Ruby on Rails“ kūrėjas kartą pasakė, kad turėtumėte „perskaityti prieš rašydami dar vieną kodo eilutę“. Fowleris padės atnaujinti paprastą programą ir supažindins su daugeliu metodų, kuriuos jis sukaupė ir katalogavo per daugelį metų trukusių konsultacijų.

Fowleris parodo, kaip pereiti nuo kodavimo ir pertvarkymo, kaip dažnai turėtumėte atlikti kodą ir kada turėtumėte rašyti testus. Labai rekomenduojama. Naujausia šios knygos versija buvo atnaujinta, kad būtų pateikti pavyzdžiai „JavaScript“, kuris man buvo papildomas pliusas, nes tai mano mėgstamiausia kalba.

4. Dizaino modeliai: daugkartinio naudojimo objektų programinės įrangos elementai

pateikė Erichas Gamma, Richardas Helmas, Ralphas Johnsonas ir Johnas Vlissidesas

Tai pagrindinė knyga apie dizaino modelius. Kas yra dizaino modeliai, klausiate jūs? Dizaino modeliai yra gerai žinomi dažniausiai pasitaikančių programinės įrangos kūrimo problemų sprendimai. Jei esate susipažinę su modeliais, pastebėsite, kad galėsite gerokai sutrumpinti laiką, per kurį jums reikia išspręsti šias problemas.

Gerai supratę dizaino modelius, taip pat galite efektyviai pranešti apie savo sprendimus su kitais kūrėjais.

„Taip, aš ką tik naudojau„ Facade “viršutinę dalį, kurios duomenų bazės adapteris bus įkeltas iš strategijos.“

„Ahh! Gotcha “.

Taip, tai senesnė knyga. Bet tai vis tiek yra vienas geriausių nuorodų. Jei norėtumėte, kad ši tema būtų šiek tiek naujesnė ir draugiškesnė, aš taip pat rekomenduočiau gerąjį Erico Freemano „Pirmieji galvos modeliai: galvosūkiams palankus vadovas“.

5. Domenu pagrįstas dizainas: sudėtingumo sprendimas programinės įrangos centre

pateikė Ericas Evansas

Norint, kad didelės kodų bazės ir toliau būtų plečiamos, turime logiškai suskaidyti kodą į skirtingas dalis. Idėja yra suskaidyti kodą taip, kad atskiros komandos galėtų dirbti tose jūsų sistemos dalyse, nepaveikdamos nieko kito.

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

Geresnis programinės įrangos dizainas su švaria architektūra

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

Švari architektūra

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

Mano būsimas nemokamas šaltinis, programinės įrangos architektūros ir projektavimo principų su „Node.js“ ir „TypeScript“ įvadas

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

Augkite ir linksminkitės tuo užsiimdami!

Jei esate Kanados studentas ar neseniai besimokantis studentas ir ieškote pradinio lygio kūrėjų galimybių ar kooperatyvų / stažuočių, turėtumėte apsilankyti mūsų platformoje „Univjobs“. Skelbiame tik specialiai studentams ir neseniai besimokantiems žmonėms skirtas darbo vietas.