Construisez votre code à partir de zéro, il pompera votre niveau

image


Pour vraiment comprendre la roue, vous devez la réinventer vous-même.

L'autre jour, j'ai interviewé pour le poste de développeur javascript senior. Mon collègue, qui a également participé à l'entretien, a demandé au candidat d'écrire une fonction qui exécutera la requête HTTP et la répétera plusieurs fois en cas d'échec.

Depuis qu'il a écrit cela au tableau, un pseudocode serait suffisant. S'il montrait une bonne compréhension de la question, nous serions satisfaits. Mais, malheureusement, il n'a pas pu trouver une bonne solution.

Pensant qu'il était nerveux, nous avons décidé de rendre la tâche un peu plus facile et lui avons demandé de convertir la fonction basée sur le rappel en fonction basée sur Promise.

Pas de chance.

Je peux dire qu'il a déjà vu un code similaire. Il savait plus ou moins comment cela fonctionnait. Un pseudocode démontrant qu'il comprend ce concept serait suffisant.

Mais le code qu'il a écrit au tableau n'avait aucun sens. Il n'avait qu'une vague compréhension du concept de Promise en JavaScript, et il ne pouvait pas parler clairement de lui.

Cela peut être excusable si vous êtes un développeur novice, mais si vous postulez pour un poste de direction, cela ne suffit pas. Comment va-t-il déboguer la chaîne complexe Promise et expliquer ensuite aux autres ce qu'il a fait?

Logiciel EDISON - développement web
Cet article a été écrit avec le soutien du logiciel EDISON, qui s'occupe de la santé des programmeurs et de leur petit - déjeuner , et développe également des logiciels personnalisés .

Les développeurs tiennent les abstractions pour acquises


En tant que développeurs, nous travaillons avec des abstractions. Nous résumons du code qui, autrement, devrait être dupliqué. Par conséquent, lorsque nous nous concentrons sur des points plus importants, nous acceptons les abstractions avec lesquelles nous travaillons pour acquis, et supposons simplement qu'elles fonctionnent comme elles le devraient.

Habituellement, c'est le cas, mais lorsque les choses se compliquent, vous devez savoir comment ces abstractions fonctionnent.
Le candidat développeur senior tenait l'abstraction de Promise pour acquise. Il aurait probablement su travailler avec lui s'il l'avait rencontré quelque part dans un morceau de code, mais il ne comprenait pas le concept et ne pouvait donc pas le reproduire lors de l'entretien.
Il pouvait juste se souvenir du code. Ce n'est vraiment pas si difficile:

return new Promise((resolve, reject) => { functionWithCallback((err, result) => { return err ? reject(err) : resolve(result); }); }); 

J'ai fait ça. Nous le faisons probablement tous. Vous vous souvenez juste d'un morceau de code pour pouvoir travailler avec. Vous comprenez plus ou moins comment cela fonctionne.

Mais s'il comprenait vraiment le concept, il n'aurait pas besoin de s'en souvenir. Il le saurait simplement et le reproduirait sans aucun problème.

Connaissez votre source


En 2012, avant que les frameworks frontaux ne dominent et que jQuery ne gouverne le monde, j'ai lu Secrets of the JavaScript Ninja par John Rezig, créateur de jQuery.

Ce livre vous apprendra à créer votre propre jQuery à partir de zéro et vous donnera une compréhension unique des processus de réflexion derrière la création de cette bibliothèque. Bien que jQuery soit tombé en arrière-plan ces dernières années, je recommande fortement de lire ce livre.

Ce qui m'a frappé dans le livre, c'est le sentiment constant que je pouvais y penser moi-même. Les étapes décrites dans le livre étaient si logiques et simples que j'avais vraiment l'impression de pouvoir créer jQuery si je me fixais un tel objectif.

En fait, je ne pourrais jamais le faire - je trouverais cela trop compliqué. Je penserais que mes décisions sont trop simples et naïves, et j'abandonnerais. Je prendrais simplement jQuery pour acquis et j'y ferais confiance. Après cela, je ne comprendrais probablement pas comment cela fonctionne. Je voudrais juste l'utiliser comme une boîte noire.

La lecture de ce livre m'a changé. J'ai commencé à comprendre le code source et j'ai constaté que de nombreuses implémentations étaient assez simples, voire évidentes.

Maintenant, trouver ces solutions par vous-même est une tout autre affaire. Mais la lecture du code source et les solutions existantes auto-implémentées sont exactement ce qui vous aide à trouver la vôtre.

L'inspiration que vous recevez et les modèles que vous découvrez vous changeront en tant que développeur. Vous constaterez que cette merveilleuse bibliothèque que vous utilisez et considérez comme magique n'est pas vraiment magique, mais simplement une solution simple et intelligente.

Vous pouvez passer du temps à analyser le code, étape par étape, et cela vous obligera également à suivre les mêmes petites étapes progressives que les auteurs ont prises pour le créer. Cela vous donne une meilleure compréhension du processus de programmation et plus de confiance dans la mise en œuvre de vos propres décisions.

Quand j'ai commencé à utiliser Promise en JavaScript, je pensais que c'était magique. Ensuite, j'ai découvert qu'ils sont basés sur des rappels, et ma vision de la programmation a changé pour toujours.
Ce modèle, qui était censé se débarrasser des rappels, a été implémenté à l'aide de ... rappels?

Ça m'a changé. Cela m'a fait réaliser que ce n'étaient pas des extraits de code incroyablement complexes, donc je pouvais les comprendre. Ce sont des modèles que je pourrais facilement comprendre si j'avais de la curiosité et une envie de m'y plonger.

Voici comment vous apprenez vraiment à programmer. Voici comment vous devenez un meilleur développeur.

Réinventer la roue


Réinventons donc les roues. Écrivez votre propre liaison de données , votre propre promesse ou même votre solution de gestion d'état .

Peu importe que personne ne l'utilise. Vous apprendrez quelque chose de nouveau par vous-même. Et si vous pouvez l'utiliser dans l'un de vos propres projets, ce sera parfait. Vous développerez davantage ce code et en apprendrez encore plus.

Il ne s'agit pas d'utiliser votre solution en production, mais d'apprendre. Écrire votre propre implémentation d'une solution existante est un excellent moyen d'apprendre des meilleurs.


Lisez aussi le blog
Société EDISON:


20 bibliothèques pour
application iOS spectaculaire

Source: https://habr.com/ru/post/fr473288/


All Articles