Business

Apprendre sur le tas – Tyler Boright – Medium

Apprendre sur le tas - Tyler Boright - Medium


L’une des choses les plus gratifiantes (et les plus difficiles) que vous puissiez faire en tant que développeur est de mettre en œuvre quelque chose que vous n’avez jamais fait auparavant.

C’est encore plus difficile d’implémenter quelque chose que vous n’avez jamais fait auparavant dans les délais impartis. La nécessité de travailler dans un laps de temps déterminé peut alourdir encore plus le défi déjà difficile de trouver une solution optimale à un nouveau problème.

J'ai récemment eu l'occasion de faire les deux et je voulais partager mes réflexions sur l'expérience.

Définition du problème

La tâche qui m’était confiée consistait à implémenter des résolveurs graphql pour un service backend. Nous sommes en train de créer un service permettant de stocker des données cryptées pour les utilisateurs souhaitant communiquer entre eux. En plus de cela, notre société a également une collection de services que nous voulons unir ensemble sous une API de requête.

La solution proposée pour l'unification consistait à utiliser graphql, une technologie produite par Facebook pour simplifier considérablement ce type d'opérations. Facebook a mis en œuvre une technologie open-source solide que notre société utilisait par le passé. Graphql convenait donc parfaitement à notre écosystème d'outils Facebook.

Pour beaucoup de gens qui ont une expérience pertinente, la tâche de mettre en œuvre un résolveur graphique est assez simple; et il existe une multitude de ressources en ligne qui expliquent comment accomplir cette tâche. Ce n’est pas un problème nouveau. Mais quelques obstacles se sont dressés sur mon chemin qui ont entravé la vitesse à laquelle j'ai pu progresser.

L'art de ne pas savoir

J'ai commencé avec zéro connaissance de graphql. J'avais entendu parler de comment c'était si révolutionnaire, mais je ne me souvenais pas de ce que j'avais vu. Pour ajouter plus de complexité à la tâche, le langage dans lequel le service graphql est écrit est Java. Il est donc nécessaire que la mise en œuvre du service client corresponde. N'ayant pratiquement aucune expérience en Java auparavant, il me fallait beaucoup de connaissances au niveau de la syntaxe et de l'abstraction pour mener à bien cette tâche.

Les concepts traditionnels de la programmation orientée objet, tels que les objets de transfert de données, le polymorphisme et même la gestion des modèles d'objets utilisés pour la conversion entre les données entrant dans le service et celles pouvant être utilisées pour communiquer avec la base de données m'étaient extrêmement inconnus, de sorte qu'il existait de nombreux degrés de complexité. devait tenir compte de mon modèle mental.

J'ai fait de mon mieux pour mener à bien cette tâche et ai posé autant de questions que mon responsable pouvait gérer. Si vous pouvez trouver un moyen, avoir les conseils d'un mentor pour apprendre de nouvelles choses est absolument inestimable. Mieux encore, il ne m’a pas dit exactement quoi faire, il m’a laissé explorer l’espace des problèmes pour déterminer quelles abstractions utiliser et à quel moment et parcourir les idées que j’avais.

Il était toujours à mes côtés pour poser des questions et échanger des idées, ce qui s’est avéré être exactement ce dont j'avais besoin.

Le résultat? Il m'a fallu environ 3 semaines d'équipe (une semaine plus tard que notre estimation initiale) et j'ai appris suffisamment pour partager suffisamment de concepts pour écrire cet article. On m'a donné le temps de parcourir le code du résolveur à quelques reprises et la version du produit destinée à la pré-production fonctionnait comme prévu.

Voici quelques principes que j'ai suivis pour tirer le meilleur parti de l'apprentissage nécessaire pour mener à bien cette tâche.

Avoir un système d'examen en place

Toujours revoir ce que vous apprenez.

Qu'il s'agisse d'un examen à court terme, où vous écrivez tout ce que vous avez appris chaque jour et l'envoyez par e-mail, ou d'un système plus graduel dans lequel vous pouvez examiner tous les deux jours pour convertir les informations en mémoire à long terme, si vous ne le faites pas. ce que vous apprenez sur les technologies que vous utilisez et sur celles-ci, il vous faudra beaucoup plus de temps pour vous familiariser avec leur utilisation. Vous devrez également répéter les erreurs que vous-même et les autres membres de votre équipe faites, perdant ainsi un temps précieux.

Notre mémoire de travail est extrêmement limitée dans le nombre d'éléments différents que nous pouvons manipuler en même temps. [2](seulement environ 4 à 7), plus vous pouvez stocker d'informations dans la mémoire à long terme, plus vous avez de chances de les utiliser pour résoudre les problèmes au bon moment. [1].

Tout au long de ce mois, j’ai rencontré une foule de nouvelles informations, des raccourcis vers les éditeurs de texte aux pièges des schémas ql, en passant par les bibliothèques propres à ma société et leurs problèmes de dépendance, et la seule chose qui m’a sauvé la tâche et m'a permis de continuer à avancer était le temps J'ai pris pour réviser les nouvelles connaissances que j'apprenais chaque jour.

J'ai tellement appris que, lorsque nous aurions besoin d'ajouter plus de résolveurs au service Graphql partagé qui les consommait, j'ai été en mesure de terminer la tâche en 2 jours ouvrables au lieu de 15. J'imagine qu'à l'avenir, je pourrai travailler beaucoup plus rapidement car de tout ce que j’ai appris et économiser du temps précieux de développement et de débogage.

Tant que vous continuez à réviser et à développer votre surface de connaissances pour une tâche, vous continuerez à mettre en pratique vos compétences et à améliorer votre capacité à construire, à déboguer et à optimiser des systèmes.

Donnez-vous du temps pour vous reposer

La consolidation des informations nécessite de la persistance, du temps consacré à la tâche et du sommeil. Les moments où vous apprenez le plus au travail sont également ceux où vous devez vous reposer le plus.

J'ai essayé de mon mieux de suivre quelques pratiques centrées sur le repos lors de la mise en œuvre du résolveur graphql. Au cours de la journée, je travaillais pour des tranches de 25 minutes à une demi-heure à la fois, prenant des pauses entre les promenades autour de notre campus. Chaque nuit, je m'assurais que je dormais suffisamment pour faciliter l'apprentissage nécessaire à la réalisation de la tâche.

J'ai découvert beaucoup plus tôt dans ma carrière que j'étais beaucoup plus productif avec 4 heures de travail ciblées (sans compter les pauses) qu'avec 8 heures de distraction, alors je fais de mon mieux pour optimiser ce nombre. Le fait de ne pas assister aux réunions affectant directement notre équipe, de ne pas être toujours disponible sur les systèmes de messagerie et de conserver un environnement relativement exempt de distraction me permet de vraiment perdre du temps à analyser un problème et à formuler les informations que j'apprends chaque jour pour améliorer mon processus de développement.

Les quatre heures de travail ciblé me ​​permettent non seulement d’apprendre davantage et de travailler avec une meilleure qualité, mais je ne tombe pas non plus dans le piège du travail de développement négatif. Lorsque vous effectuez des tâches compliquées qui étendent vos connaissances et occupent une grande quantité de mémoire de travail, vous laisser distraire ou ne pas maintenir une mise au point optimale peut vous amener à faire un travail qui finit par vous handicaper à long terme.

Le travail négatif est extrêmement répandu dans le développement de logiciels. Ajoutez des dépendances incorrectes, oubliez d'épingler des versions ou écrivez des méthodes avec un ou deux chemins de logique mal orientés et le responsable de ce code à l'avenir, que ce soit vous ou un autre développeur, voudra vous tirer une balle dans le visage combien de temps ils doivent prendre pour lire et déboguer ce que vous avez écrit.

Certains ingénieurs travaillent constamment dans un état d'esprit distrait et finissent par produire plus de problèmes qui font perdre du temps que des codes efficaces et fonctionnels. Ces ingénieurs ont un impact net négatif sur leur travail et nuisent à l’équipe au lieu de faire avancer le projet.

Faites plaisir à vos coéquipiers et à vous-même et n’écrivez pas de code tant que vous êtes épuisé mentalement. N'écrivez pas de code lorsque vous êtes distrait, au téléphone ou lorsque 20 personnes vous posent des questions. Cela profitera à l'équipe et aux futurs responsables du projet dans les années à venir de sa durée de vie.

Exercice quotidien

À la fin de chaque journée de travail, je me rendais à la salle de sport ou au terrain de volley-ball et je travaillais au moins 50 minutes.

Cela peut sembler beaucoup, mais la marque des 50 minutes a été l’accumulation de quelques années de pratique. La pratique dont je parle n’est pas liée aux exercices que j’effectue ni au poids que je peux soulever. La pratique que je veux dire est la pratique d'aller au gymnase, d'apporter mes vêtements de gymnastique du lundi au vendredi et d'y aller chaque jour, quel que soit le temps que je passe. Cette pratique est la base de tous les autres résultats ou réalisations du gymnase, et c’est celle qui a été la plus difficile à intégrer dans ma vie.

Je n’ai pas commencé à faire de l’exercice physique 50 minutes par jour et je ne recommande pas aux débutants de faire un exercice régulier en essayant de forcer leur corps à se conformer à cette norme. J'ai commencé par travailler entre 20 et 30 minutes, mesurant mon énergie et mon humeur, avant de décider de continuer à faire de l'exercice.

Ce que j’ai découvert au fil du temps, c’est que plus je le faisais, plus il était facile pour moi de rester. Après quelques mois, si je ne fais pas d'exercice environ 3 ou 4 jours par semaine au minimum, je sens que quelque chose ne va pas. Mon corps est en mauvaise santé et je ne suis pas aussi heureux que lorsque je vais au gymnase.

L’augmentation du débit sanguin et la réduction du stress favorisent la santé à long terme et favorisent une neurogenèse accrue, le processus de croissance de nouvelles cellules cérébrales qui se produit dans le cerveau de chacun, afin de faciliter un meilleur apprentissage. [3].

Bien que cette méthode d’amélioration progressive ne soit pas le guide le plus sexy pour s’établir, elle a tendance à être celle qui a le plus grand impact à long terme. N'oubliez pas que ce ne sont pas toujours les idées les plus excitantes qui produisent les meilleurs résultats. C’est plutôt l’application continue de méthodologies «ennuyeuses» de nouvelles façons qui finissent par avoir le plus grand impact sur la santé de votre cerveau et votre vie professionnelle.

Pratiquer la positivité

À plusieurs reprises au cours de cette tâche, je me suis senti hors de mon élément. Il y avait une multitude de faits à apprendre sur une date limite, j'avais peur de ne pas pouvoir la compléter. Lorsque le stress s'accumule sur une personne, même le simple fait de commencer une tâche semble être un défi insurmontable.

Toute combinaison d'une quantité apparemment infinie de variables peut se combiner et nuire à votre confiance en vous pour la résolution d'un problème particulier. Heureusement, les sentiments ne sont pas des faits, et il existe des moyens de continuer à ressentir et à continuer d’avancer pour résoudre un problème particulier.

Lorsque le niveau de stress d'un projet commence à augmenter, les progrès de suivi des progrès sont en ordre. L’un des meilleurs changements de mentalité que vous pouvez utiliser pour vous aider à continuer à progresser est de vous juger sur les progrès que vous faites chaque jour sur la quantité de travail qui reste à faire.

En relisant la phrase précédente, l'idée semble contre-intuitive. Il semble que si nous devons travailler à des objectifs spécifiques à long terme, il semble que notre tendance naturelle soit de considérer les progrès de chaque jour comme une fraction de ce grand objectif. Cependant, le cerveau humain n’a pas tendance à maintenir ses plans à long terme de manière particulièrement satisfaisante, préférant rester présent dans l’ici et maintenant afin de marquer efficacement les ressources et d’éviter les dangers. Si vous y réfléchissez, nous devons équilibrer notre tendance naturelle à l’exploration tout en évitant les situations mettant en péril la vie du monde. Cela tend à optimiser à court terme.

Cependant, si nous ne tenons compte que de la distance qui nous reste pour atteindre notre objectif, nous ne sommes récompensés que lorsque nous y sommes parvenus. Il n'y a pas de récompense sur le long chemin qu'il faut pour y arriver. Et si nous ne nous récompensons pas avec le sentiment de finir ou de nous réjouir un jour donné, nous ne pouvons généralement pas changer de cap et tracer à plus long terme.

Nous avons déjà mentionné que la solution pour bien résoudre les problèmes est de gagner du temps, d’acquérir des informations relatives au problème et de bien dormir. Si vous optimisez ces trois choses chaque jour, vous savez que vous êtes sur la bonne voie.

Au cours de ce problème particulier, j'ai utilisé mon habitude de suivre mon temps de travail pour me regarder littéralement «accumuler les points». Chaque jour, je travaillais 2 à 4 heures sans interruption. À la fin de chaque journée, je regardais en arrière, je constatais les progrès accomplis et je me délectais du fait que j’avais beaucoup appris et que c’était PLUS proche de la solution (même si je ne savais pas exactement combien de temps prendrait).

Les réponses viendront avec le temps. Tant que vous continuez à rechercher la tâche, à demander du contexte et des informations supplémentaires et à écrire / traiter ce que vous avez appris, vous pouvez terminer la tâche à un moment donné. Ce point dans le temps peut être beaucoup plus lent que le leader qui utilise cette technologie spécifique et qui est dans l'entreprise depuis plus de 15 ans, mais cela ne signifie pas que vous ne pourrez pas le terminer et atteindre le niveau de compétence a un moment.

Oui, parfois, vous aurez l’impression que tout le monde en sait beaucoup plus sur un ensemble de problèmes particulier que vous. Oui, vous serez chargé de problèmes qui vous demanderont de passer plus de temps que beaucoup de vos collègues. Mais rassurez-vous, c’est dans ce feu de frustration que vos compétences techniques se sont forgées.

Tant que vous continuez à travailler à la résolution de votre problème, votre succès est éventuel! Continuez à travailler fermement et les réponses viendront.

Aller de l'avant

Plus vous serez capable d'apprendre au travail, plus les gens vous donneront l'occasion de contribuer. La construction cohérente de connaissances système et technologiques vous permettra de résoudre des problèmes plus profonds et plus difficiles qu'on ne le pensait auparavant, et des tâches beaucoup plus vastes vous seront confiées.

Faites cela assez longtemps et vous serez un expert dans votre domaine, appelé à résoudre des problèmes importants et de grande valeur.

Avoir une expérience connexe de changement ou une méthode pour aborder de nouveaux problèmes? Partagez-le dans les commentaires!

Ressources supplémentaires mentionnées ci-dessus:

[1] Penser vite et lentement

[2] Mémoire de travail

[3] Exercice et neurogenèse accrue

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close