Βιβλία που πρέπει να διαβάσουν οι Junior Developers

Αυτά τα βιβλία είναι «βασικά κωδικοί εξαπάτησης» για να βελτιώσετε τις δεξιότητες και τις γνώσεις σας ως προγραμματιστής.

Είτε είστε νέος προγραμματιστής είτε είστε αρκετά έμπειροι ως προγραμματιστές, θα συνειδητοποιήσετε ότι ο χρόνος που έχετε εργαστεί σε μια δουλειά δεν είναι ο καλύτερος τρόπος για να προσδιορίσετε τις δεξιότητες και τις γνώσεις σας ως προγραμματιστής (Το ξέρω, πείτε το στους στρατολόγους;).

Αυτό που κάνετε στον ελεύθερο χρόνο σας και πώς επιλέγετε να κάνετε τη μάθηση στα χέρια σας είναι αυτό που τελικά θα καθορίσει την επιτυχία σας σε αυτόν τον κλάδο. Γι 'αυτό είναι τόσο σημαντικό για εμάς ως προγραμματιστές να υιοθετήσουμε μια νοοτροπία ανάπτυξης.

Υπάρχουν μερικοί εξαιρετικοί τρόποι μάθησης και βελτίωσης ως προγραμματιστής. Μερικοί από αυτούς τους τρόπους είναι ο προγραμματισμός ζευγών, τα διαδικτυακά μαθήματα, οι συναντήσεις, η εργασιακή εμπειρία, η κατασκευή έργων και η εύρεση ενός μέντορα.

Ένας από τους προσωπικούς μου αγαπημένους τρόπους να μάθω είναι να ανοίξω ένα καλογραμμένο βιβλίο και να προσπαθήσω να απορροφήσω κάτι από αυτούς που έχουν αποστάξει χρόνια γνώσης και κατανόησης ενός μόνιμου τεχνουργήματος.

Ακολουθούν οι προσωπικές μου προτάσεις που πιστεύω ότι πρέπει να διαβάσουν όλοι οι προγραμματιστές (ειδικά οι νεότεροι). Όλα αυτά τα βιβλία θεωρούνται ιδιαίτερα από επαγγελματίες του κλάδου μας και έχουν τη δυνατότητα να αφήσουν βαθύ αντίκτυπο στην ποιότητα της εργασίας σας και στην ταχύτητα ανάπτυξης και μάθησης.

Μερικά από αυτά απομακρύνονται από τις τεχνικές λεπτομέρειες και επικεντρώνονται περισσότερο στην παροχή πρακτικών κανόνων σχετικά με το τι σημαίνει να είσαι καλός προγραμματιστής σε διαπροσωπικό και επαγγελματικό επίπεδο.

Αποκάλυψη: Μερικοί από τους παρακάτω συνδέσμους είναι συνδεδεμένοι σύνδεσμοι. Όμως, έχω προσθέσει μόνο εκείνα τα βιβλία που προσωπικά πιστεύω ότι είναι χρήσιμα για έναν junior dev.

1. Καθαρισμός κώδικα

από τον Robert C. Martin (θείος Μπομπ)

Αφού ξεπεράσετε τις βασικές προκλήσεις της ανάπτυξης και αισθανθείτε άνετα να καταλάβετε πώς να γράψετε κώδικα για την επίλυση προβλημάτων, θα ήταν καλή ιδέα να ρίξετε μια ματιά σε αυτό το βιβλίο. Αποδεικνύεται ότι η δημιουργία του κώδικα για πρώτη φορά είναι στην πραγματικότητα το εύκολο μέρος. Το δύσκολο είναι να κάνει τον κώδικά σας να διαβάσει καλά, ώστε άλλοι να μπορούν να τον καταλάβουν και να τον αλλάξουν στο μέλλον.

Θυμάσαι την τελευταία φορά που έπρεπε να διαβάσεις κώδικα όπως αυτό;

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

Ποιος ξέρει τι πραγματικά κάνει. Κώδικας όπως αυτό μπορεί να λειτουργήσει, αλλά τη στιγμή που πρέπει να τον αλλάξουμε, πρέπει να ελπίζουμε ότι ο συντάκτης του κώδικα εξακολουθεί να βρίσκεται στην εταιρεία και να προσευχηθούμε ότι κατά κάποιον τρόπο είναι σε θέση να αποκρυπτογραφήσουν αυτό που έγραψαν δυνητικά πριν από χρόνια.

Όταν δεν δίνεται προσεκτική προσοχή στη σύνταξη κώδικα που είναι αναγνώσιμος και διατηρήσιμος, καταλήγουμε με τσέπες κώδικα όπως αυτό που όλοι φοβούνται να αγγίξουν και αν σπάσει ποτέ, είμαστε σε μπελάδες.

Ο "Clean Code" του θείου Bob σας διδάσκει πώς να προσδιορίζετε πώς φαίνεται ο καθαρός κώδικας σε σύγκριση με τον κακό κώδικα και σας διδάσκει πώς να τον μετατρέψετε σε καλό κώδικα. Μια εργασία όπως αυτή ακούγεται ασήμαντη για τους περισσότερους, αλλά θα εκπλαγείτε από το πώς η μετατροπή λίγων αρχών καθαρού σχεδιασμού λογισμικού σε συνήθειες μπορεί να σας βοηθήσει να γράψετε πολύ πιο επαγγελματικό και επεκτάσιμο κώδικα.

Είμαστε τεχνίτες λογισμικού, ξέρετε. Η οικοδόμηση ενός σπιτιού δεν διαφέρει πολύ από την οικοδόμηση μιας εφαρμογής κατ 'αρχήν. Πρέπει να δώσουμε προσοχή στις λεπτομέρειες, αλλιώς μπορεί να γίνει πολύ ακριβό να διορθωθούν στο μέλλον εάν δεν γίνει σωστά την πρώτη φορά.

2. Ο καθαριστής κωδικοποίησης

από τον Robert C. Martin (θείος Μπομπ)

Αυτό το βιβλίο δεν είναι απαραίτητα ένα τεχνικό βιβλίο, καθώς είναι ένα βιβλίο για να σας διδάξει πώς να είστε επαγγελματίας σε αυτόν τον κλάδο. Οι επαγγελματίες είναι εκείνοι που, όταν αντιμετωπίζουν προκλήσεις, αβεβαιότητα και πίεση, θα συνεχίσουν να αντιμετωπίζουν τη δημιουργία λογισμικού ως ένα σκάφος και θα είναι αποφασισμένοι να τηρήσουν τις επαγγελματικές τους αξίες.

Το Clean Coder είναι γεμάτο πρακτικές συμβουλές σχετικά με την εκτίμηση, την αναδιαμόρφωση, τον έλεγχο, την αντιμετώπιση συγκρούσεων, τα προγράμματα, την αποφυγή εξάντλησης και πολλά άλλα. Αξιόπιστες συμβουλές από κάποιον που έχει περάσει δεκαετίες να κάνει αυτά τα πράγματα.

Ένα από τα καλύτερα πράγματα που διδάσκει, είναι πώς να έχετε ακεραιότητα ως προγραμματιστής, πότε να πείτε "Όχι" και πώς να το πείτε.

Ένα βιβλίο για τον επαγγελματισμό.

3. Ανακατασκευή

από τον Martin Fowler

Ο Martin Fowler είναι ένας από τους αγαπημένους μου συγγραφείς. Ο πρώτος λόγος είναι ότι είναι ξεκαρδιστικός. Η προσέγγισή του στη συγγραφή βιβλίων λογισμικού είναι αναμφισβήτητα "Fowler" Ο άλλος λόγος είναι ότι είναι απίστευτα καλός στο να εξηγεί περίπλοκα θέματα και να το κάνει πολύ απλά, με τρόπο που να μην σας κουράζει ως αναγνώστης.

Το Refactoring είναι ένα βιβλίο που ο δημιουργός του Ruby on Rails είπε κάποτε ότι πρέπει να «διαβάσετε πριν γράψετε μια άλλη γραμμή κώδικα». Ο Fowler σας καθοδηγεί στο να αναδιαμορφώσετε μια απλή εφαρμογή, σας παρουσιάζοντας μια σειρά από τεχνικές που έχει συσσωρεύσει και καταγράψει κατά τη διάρκεια των ετών της διαβούλευσης.

Το Fowler σάς δείχνει πώς μπορείτε να κάνετε εναλλαγή μεταξύ κωδικοποίησης και αναδιαμόρφωσης, πόσο συχνά πρέπει να κάνετε τον κωδικό σας και πότε πρέπει να γράφετε τις δοκιμές σας. Συνιστάται. Η τελευταία έκδοση αυτού του βιβλίου ενημερώθηκε για να παρουσιάσει τα παραδείγματα σε JavaScript, το οποίο ήταν ένα πρόσθετο πλεονέκτημα για μένα, καθώς είναι η αγαπημένη μου γλώσσα.

4. Μοτίβα σχεδίασης: Στοιχεία επαναχρησιμοποιήσιμου αντικειμενοστραφούς λογισμικού

των Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides

Αυτό είναι το βασικό βιβλίο για τα σχέδια μοτίβων. Ποια είναι τα σχέδια σχεδίασης, ρωτάτε; Τα πρότυπα σχεδίασης είναι γνωστές λύσεις σε κοινά προβλήματα στην ανάπτυξη λογισμικού. Εάν είστε εξοικειωμένοι με τα μοτίβα, θα διαπιστώσετε ότι θα είστε σε θέση να μειώσετε σημαντικά το χρόνο που χρειάζεται για να δώσετε τις λύσεις σε αυτά τα προβλήματα.

Η καλή γνώση των προτύπων σχεδιασμού σάς επιτρέπει επίσης να επικοινωνείτε αποτελεσματικά με τις λύσεις σας με άλλους προγραμματιστές.

"Ναι, μόλις χρησιμοποίησα μια πρόσοψη από όποιο από τα οποία ο προσαρμογέας βάσης δεδομένων φορτώνεται από τη στρατηγική."

«Αχ! Γκότκα. "

Ναι, είναι ένα παλιότερο βιβλίο. Αλλά εξακολουθεί να είναι ένα από τα καλύτερα για αναφορά. Εάν θέλετε κάτι σχετικά με αυτό το θέμα που είναι λίγο πιο πρόσφατο και φιλικό, θα συνιστούσα επίσης τα καλά "Head First Design Patterns: A Brain-Friendly Guide" του Eric Freeman.

5. Σχεδιασμός βάσει τομέα: Αντιμετώπιση της πολυπλοκότητας στην καρδιά του λογισμικού

από τον Eric Evans

Προκειμένου οι μεγάλες βάσεις κώδικα να συνεχίσουν να κλιμακώνονται, πρέπει λογικά να χωρίσουμε τον κώδικα σε διαφορετικά μέρη. Η ιδέα είναι να χωρίσετε τον κώδικά σας με τέτοιο τρόπο ώστε να είναι δυνατό για ξεχωριστές ομάδες να εργάζονται σε αυτά τα μέρη του συστήματός σας χωρίς να επηρεάζουν κανέναν άλλο.

Η βασική ιδέα που επιτρέπει τη μετακίνηση της βάσης κώδικα σε αυτήν την κατεύθυνση είναι το Domain-Driven Design (DDD). Πρόκειται για μια προσέγγιση ανάπτυξης λογισμικού όπου μοντελοποιούμε τα προβλήματα που υπάρχουν στον «προβληματικό τομέα» (τον πραγματικό κόσμο) σε έναν αριθμό τομέων λύσεων.

Το DDD είναι απίστευτα σημαντικό όταν μια βάση κώδικα γίνεται αρκετά μεγάλη. Οι μεγάλες επιχειρήσεις χρησιμοποιούν DDD προκειμένου να αναθέσουν ομάδες σε τμήματα της βάσης κώδικα της εταιρείας.

Ο Eric Evan επινόησε τον όρο "Ubiquitous Language", που είναι ο όρος για την οικοδόμηση μιας κοινής, συνολικής γλώσσας μεταξύ των προγραμματιστών, των εμπειρογνωμόνων του τομέα και οποιωνδήποτε άλλων χρηστών ή φορέων στον τομέα. Χρησιμοποιώντας αυτήν την πανταχού παρούσα γλώσσα, διασφαλίζει ότι οι πιο σημαντικές έννοιες τομέα είναι καλά κατανοητές και μοντελοποιούνται στο λογισμικό.

Το βιβλίο είναι λίγο πιο τεχνικό και προκλητικό από τα άλλα, αλλά αν εξοικειωθείτε με αυτές τις έννοιες, θα είστε πολύ καλά να καταλάβετε πώς οι σημερινές μεγαλύτερες εταιρείες διατηρούν τις βάσεις κώδικα τους διαχειρίσιμες και επεκτάσιμες.

** Ενημέρωση: 17 Απριλίου 2019 **

Έχω σκεφτεί αυτή τη σύσταση λίγο. Η εισαγωγή στον κόσμο της DDD είναι, κατά τη γνώμη μου, εξαιρετικά ευεργετική για τους Junior Developers. Πιστεύω ότι αυτό είναι αλήθεια, γιατί DDD δίνει σημασία στην εξοικείωση με την αρχιτεκτονική λογισμικού , το σχεδιασμό αρχές και τα πρότυπα σχεδιασμού . Είναι ένας πολύ καλός τρόπος για να εισαγάγετε τον εαυτό σας σε υψηλότερο επίπεδο προγραμματισμού.

Ωστόσο, το DDD είναι ένα μεγάλο και προκλητικό θέμα. Για μερικούς αναγνώστες, αυτό το βιβλίο (το σπερματικό «μπλε βιβλίο» )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

Καλύτερη σχεδίαση λογισμικού με καθαρή αρχιτεκτονική

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

Η καθαρή αρχιτεκτονική

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

Ο επερχόμενος δωρεάν πόρος μου, μια εισαγωγή στην αρχιτεκτονική του λογισμικού και στις αρχές σχεδίασης με το Node.js και το TypeScript

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

Συνεχίστε να μεγαλώνετε και διασκεδάστε όσο βρίσκεστε σε αυτό!

Εάν είστε Καναδός φοιτητής ή πρόσφατος πτυχιούχος που αναζητά ευκαιρίες προγραμματιστών ή συνεργατών / πρακτικών, πρέπει να δείτε την πλατφόρμα μας, Univjobs. Δημοσιεύουμε θέσεις εργασίας μόνο για μαθητές και πρόσφατα αποφοίτους.