Comment être un bon ingénieur logiciel junior

Félicitations! Tu l'as fait! Vous êtes devenu un ingénieur logiciel junior. Il y a à peine un an, j'ai reçu le même honneur lorsque je me suis joint à AdHawk. Dans le but de transmettre des connaissances issues de mes expériences passées, j'ai rassemblé une liste de conseils et d'astuces sur la manière dont vous pouvez vous aussi devenir un excellent ingénieur logiciel junior.

Mon équipe (je suis sur la droite) avec notre chef de produit Joe (Centre) - Siège d'AdHawk 2018

Soyez vocal!

Si et quand vous êtes bloqué pendant le codage, ne vous laissez pas rester trop longtemps. Travaillez absolument pour vous pousser à trouver des solutions, mais si vous restez inactif trop longtemps, contactez un autre développeur. Posez autant de questions que vous le souhaitez lorsque vous vous associez à un collègue. Il n'y a pas de questions stupides et clarifier les choses pour vous profite aux deux parties. Le fait de ne pas se faire entendre peut réduire votre croissance et votre développement.

Chercher un mentor

Trouvez un mentor interne ou externe à votre équipe. Lorsque vous rencontrez ce mentor, indiquez des objectifs SMART (spécifiques, mesurables, réalisables, réalistes et opportuns) à ces enregistrements et en informez votre mentor.

Essayez également d’apporter des échecs à vos check-ins. L'introspection est l'un des outils d'apprentissage les plus puissants. Discutez de vos difficultés et demandez à votre mentor comment vous pourriez vous développer à partir de ces expériences.

S'aventurer dans l'inconnu

Poussez pour accomplir des tâches qui peuvent sembler en dehors de votre champ de connaissances. S'engager dans des défis augmentera votre volume d'expériences et approfondira votre connaissance des problèmes nouveaux et parfois communs à résoudre.

Renseigner ce que vous apprenez

Il existe une multitude de façons différentes de faire demi-tour et d’enseigner ce que vous avez appris. Vous pouvez écrire de la documentation, faire un didacticiel vidéo ou écrire un article de blog. Quel que soit votre choix de support, l'acte de rééduquer complique votre croissance éducative. Le fait de devoir articuler clairement tout ce qui vous oblige à analyser un problème et à combler les lacunes éventuelles de vos connaissances.

Établir un horaire de travail

Nous avons une tonne de pièces en mouvement et de responsabilités que nous avons en tant que développeurs. À tout moment, vous pouvez écrire une nouvelle fonctionnalité, réparer un bogue, réviser le code d’un homologue, apprendre une nouvelle technologie, participer à une réunion ou effectuer de nombreuses autres tâches. Créer une planification qui détermine le temps pour chaque type de tâche au cours d'une semaine de travail spécifique garantira que vous progresserez dans chaque nouveau domaine de responsabilité.

Ma journée typique

  1. Examiner les demandes d'attraction (une demi-heure à une heure)
  2. Travaillez sur une carte de développement (jusqu'à ce que vous soyez debout, environ 2-3 heures)
  3. Standup (demi-heure)
  4. Heure du déjeuner)
  5. Continuer les travaux sur les cartes de développement
  6. Augmenter une demande d'extraction en cours et / ou examiner de nouvelles demandes d'extraction

Les réunions se dérouleront et seront prises en sandwich entre toutes ces tâches.

Forcez-vous à faire des essais

TDD est synonyme de développement piloté par les tests. En bref, TDD signifie que vous allez d’abord rédiger des tests qui valident les fonctionnalités d’une interaction ou d’une fonctionnalité non existante. Cela crée une boucle d’information très importante en retour qui définira clairement l’objectif et la portée de votre tâche. Voici un exemple de test récent que j'ai écrit:

Maintenant, lors de l'exécution de ce code, la première erreur est que le chemin chemin_versement n'existe pas. Maintenant, votre récit de développement est défini. En tant que junior, le développement piloté par les tests me permet de définir une trajectoire vers une fonctionnalité spécifique. Ce chemin me dirige ensuite avec un chemin de messages d'erreur qui m'aident à combler les lacunes de toute solution potentielle.

Poussez pour appairer

Il n’existe pas de moyen plus rapide de grandir en tant que junior que de jumeler plus de développeurs seniors. L’environnement créé par les couples Senior et Junior renforcera les comportements nécessaires à la réussite de toutes les parties concernées. Les aînés devront communiquer leurs idées et leurs décisions de manière plus générale et succincte. Je crois que tous les ingénieurs peuvent plus facilement écrire du code tout en cherchant une solution. Cependant, lorsqu'on leur demande d'expliquer ou de valider leurs décisions, ils commencent vraiment à comprendre l'objectif et le potentiel de refactorisation existe.

Les juniors, quant à eux, pourront prendre des décisions de niveau supérieur et des interactions communes seront rapidement canalisées dans leur expérience. Cela leur permet d’éviter certaines étapes importantes, telles que la démonstration complète de la construction d’un test ou la résolution plus appropriée des erreurs. Ceci établit des habitudes appropriées et améliore la santé de l'application à long terme.

Plus important encore, l'expérience du développeur pour tous les participants s'améliore considérablement. Un vieil adage vient à l’esprit: «Seul on peut aller vite mais ensemble on peut aller loin». Le concept de fatigue mentale ou cognitive liée au «blocage» ne se présente pas aussi souvent.

Avoir une paire pour échanger des idées sur ou éventuellement changer de rôle de "conducteur" à "navigateur" (qui tape par rapport à qui parle sans dactylographie) ou vice versa peut faire sauter des blocs cognitifs et augmenter réellement la vitesse de développement. Bien que le couplage ait un coût inhérent (heures payées), la croissance et la valeur de l’expérience acquise par le développeur dépassent largement l’investissement initial.

Affûtez vos outils

Bien avant de savoir que l’ingénierie se profilait à l’horizon, j’ai suivi une série de cours de graphisme au lycée. Le premier test que nous avons fait pour ce cours concernait les raccourcis clavier. Pourquoi n’apprendrions-nous pas la théorie des couleurs ou comment utiliser correctement l’outil masque? Eh bien, c’est parce que mon instructeur savait qu’on ne pouvait pas être un artiste sans avoir d’abord appris à gérer ses outils. Cette leçon est restée avec moi pour le reste de ma vie. C'était un message simple mais très puissant.

En tant qu’ingénieur, votre esprit est l’un des outils les plus puissants et continuera de le devenir tous les jours. Toutefois, si votre environnement de développement n’est pas configuré de manière efficace, vous pouvez trébucher dans les structures de dossiers, utiliser votre curseur au lieu de raccourcis courants et une vitesse de frappe lente peuvent considérablement entraver la capacité de traduire vos solutions en code.

Une poignée d'outils à votre disposition:

  • Apprenez les raccourcis de votre IDE (raccourcis de base de VSCode)
  • Zsh - un shell unix qui peut être utilisé pour optimiser vos interactions avec le shell (commandes à complétion automatique, aliasing de commande, etc.)
  • Installer un gestionnaire de fenêtres (Spectacle est mon application de choix)

Pouvoir accéder efficacement à mes ressources m'a permis de gagner un nombre incalculable de minutes (qui s’accumulent avec le temps). Cela m'a permis de passer le plus clair de mon temps à chercher des solutions au lieu de me battre avec mon environnement.

Médias Médias Médias

Parmi les personnalités les plus prospères de l'histoire, beaucoup recommandent de prévoir du temps pour apprendre tout au long de votre semaine de travail. Elon Musk, Bill Gates et Oprah ne sont que quelques-uns des partisans de cette philosophie, la règle des 5 heures. La règle stipule qu'une personne qui veut augmenter son succès global devrait passer au moins 5 heures par semaine à apprendre quelque chose de nouveau.

Je ferais confiance à leur jugement! Ce n’est un secret pour personne qu’il existe une quantité presque infinie de blogs, de podcasts, d’articles, de conférences, de tutoriels et bien plus encore qui peuvent être utilisés pour renforcer leurs connaissances en tant qu’ingénieur logiciel. Au cours de votre voyage en tant que junior, vous serez plongés dans une mer de termes et de concepts inconnus. Ne craignez pas cette expérience. En fait, je suggérerais d'aller de l'avant.

Quelques ressources que j’ai appréciées cette année:

  • The Bike Shed Podcast - Podcast pour le développement logiciel des gens de Thoughtbot (contenu de haut niveau qui peut paraître insensé mais qu'il sera utile d'entendre à long terme)
  • Egghead.io - Excellente plate-forme avec des tutoriels vidéo très succincts et bien formatés
  • Exercism.io - Plateforme TDD pour enseigner de nombreux langages et frameworks populaires

Consacrer quelques heures à l’apprentissage avec ces outils, voire d’autres, optimisera votre croissance et vous incitera à devenir le meilleur développeur possible.

Aller en avant et prospérer

Félicitations encore pour le voyage que vous allez entreprendre. C’est un projet qui n’est pas sans danger. Tout comme les logiciels, les habitudes et le succès ne se construisent pas du jour au lendemain. Grâce à ces conseils et à un travail acharné, je suis convaincu que vous deviendrez le meilleur ingénieur logiciel junior que vous puissiez être.