Catégories
Astuces et Design

Pourquoi le codage collaboratif est le hack de carrière ultime – Smashing Magazine

A propos de l'auteur

Bobby est un développeur de logiciels chez Flourish et un fan de la narration basée sur les données. Il aime les outils sans code qui aident les gens à exploiter le potentiel créatif du Web. …
Plus à propos
Policier

Quelle que soit l'étape à laquelle vous en êtes dans votre carrière, le codage collaboratif est l'une des meilleures utilisations de votre temps. Avec le travail à distance en augmentation, il n'y a jamais eu de meilleur moment pour pratiquer la programmation en binôme et adopter le développement Agile.

Faire ses premiers pas dans la programmation, c'est comme choisir une langue étrangère. Au début, la syntaxe n'a pas de sens, le vocabulaire n'est pas familier, et tout semble et semble inintelligible. Si vous êtes comme moi quand j'ai commencé, la fluidité me semble impossible.

Je promets que non. Quand j'ai commencé à coder, la courbe d'apprentissage m'a frappé – fort. J'ai passé dix mois à m'enseigner les rudiments tout en essayant d'éviter les sentiments de doute que je reconnais maintenant comme le syndrome d'imposteur. Ce n'est que lorsque j'ai commencé à participer à des rencontres conviviales pour les débutants que j'ai réalisé à quel point le codage collaboratif ouvrait des possibilités incroyables. Vous avez juste besoin de la bonne communauté de personnes pour pratiquer.

Pour moi, cette communauté était Founders and Coders, le bootcamp JavaScript gratuit qui m'a aidé à faire passer ma carrière du copywriting au codage. Même maintenant, moins d'un an après avoir terminé le cours, je peux à peine croire que je suis payé pour développer un logiciel.

Le codage collaboratif consiste à s'attaquer aux problèmes et à trouver des solutions ensemble. Il englobe des techniques telles que la programmation en binôme, que plusieurs entreprises technologiques prennent suffisamment au sérieux pour détecter lors de leurs processus d'entrevue. Il cultive également des compétences utiles qui sont difficiles à apprendre si tout ce que vous faites est de coder seul à la maison.

Que vous débutiez dans l'industrie de la technologie ou que vous ayez plusieurs années d'expérience à votre actif, le codage collaboratif ne cesse d'être utile. Dans cet article, nous verrons comment ces compétences à feuilles persistantes vous équipent pour une longue et fructueuse carrière dans le développement de logiciels.

Association parfaite

Ma première expérience de programmation en binôme a été lors d'un Meetup pour débutants appelé Coding For Everyone. Voici comment cela fonctionne: les gens s'associent, souvent avec des gens qu'ils n'ont jamais rencontrés, pour résoudre ensemble des défis JavaScript sur le même ordinateur portable. Une personne assume le rôle de «navigateur» et propose le code qu’elle pense devoir être écrit. L'autre personne, le «conducteur», tape ses suggestions sur l'ordinateur portable et pose des questions chaque fois que quelque chose n'est pas clair. Vous continuez ainsi, en échangeant fréquemment des rôles, jusqu'à la fin de la session de deux heures.

En théorie, c'était simple. En pratique, pas tellement.

J'ai trouvé assez gênant de voir quelqu'un que je ne connaissais pas regarder mon écran pendant que je tapais, et j'étais réticent à céder le contrôle quand il était temps de changer de rôle. J'ai trouvé la navigation encore plus délicate. Lorsqu'une idée ne peut pas passer de votre tête à l'ordinateur sans passer par les mains de votre partenaire, chaque mot que vous prononcez est important. Cela exigeait de notre part un certain niveau de communication auquel nous n'étions tout simplement pas habitués, et j'étais convaincu que nous en apprendrions plus si nous nous séparions pour travailler séparément.

Heureusement, nous y sommes restés; Je suis retourné au rendez-vous la semaine suivante. Depuis, j'ai passé des centaines d'heures à travailler avec des dizaines de développeurs et j'ai appris plus que je ne le pensais au départ.

La programmation en binôme est un moyen incroyablement rapide d'apprendre. La magie de la méthode – une fois que vous surmontez la maladresse initiale – est qu'elle donne des résultats immédiats. Certaines boucles de rétroaction, comme les bulles en bourse, peuvent prendre des heures, des jours, voire des mois pour produire une correction. La programmation par paire prend des minutes, sinon des secondes. Lorsque vous égarez un point-virgule, deux paires d'yeux peuvent repérer l'erreur plus rapidement qu'une seule. Besoin de rechercher dans StackOverflow des indices sur un message d'erreur non autorisé? Vous et votre partenaire pouvez chacun lire différents fils de discussion, ce qui réduit de moitié le temps nécessaire pour trouver une réponse.

Un organigramme qui montre la boucle de rétroaction de programmation de la paire en trois étapes: écrire, exécuter et refactoriser.
La boucle de rétroaction de programmation de paire (Grand aperçu)

Pour des problèmes encore plus délicats, la programmation mob peut être une étape supplémentaire. Cette méthode nécessite qu'une section interfonctionnelle d'une équipe se rassemble autour du même écran d'ordinateur et remue-méninges en temps réel pendant qu'une personne tape.

"Tous les esprits brillants travaillant sur la même chose, en même temps, dans le même espace, sur le même ordinateur."

– Woody Zuill, coach agile et formateur en programmation Mob

Bien que cela puisse sembler une façon inefficace de travailler, les défenseurs de la programmation mob comme Woody Zuill disent que cela peut réellement gagner du temps en éliminant le besoin de révisions individuelles du code parce que tout le monde examine le code en temps réel au moment de son écriture. Mis à part la productivité, je pense que le mobbing est un moyen fantastique d'apprendre non seulement sur le code, mais sur la façon dont les autres abordent les problèmes. Si la programmation en binôme double le nombre de perspectives auxquelles vous êtes exposé, la programmation en masse génère encore plus d'informations.

Dix développeurs se sont blottis autour d'un ordinateur portable en utilisant la programmation mob pour résoudre ensemble un problème.
Parfois, dix têtes valent mieux que deux. (Grand aperçu)

Cela ne veut pas dire que l'appariement – ou en fait le mobbing – est un jeu d'enfant. Quelque chose avec laquelle je me débattais au départ était de mettre mon ego de côté pour poser des questions que je pensais peut-être stupides. Dans ces situations, il est bon de se rappeler que votre partenaire pourrait avoir les mêmes pensées, surtout si vous débutez tous les deux.

Si vous vous retrouvez en couple avec une personne plus âgée, peut-être au travail, n’ayez pas peur de choisir son cerveau et de l’impressionner par votre curiosité. Même quelqu'un qui est un peu plus en avance que vous ne le pensez peut-être à des choses qui n’arriveraient pas à une personne plus âgée. Certains de mes programmeurs de paires préférés n’ont que quelques mois d’expérience en plus que moi, mais ils semblent toujours savoir exactement quelles erreurs je vais commettre et comment me diriger dans la bonne direction. Quand ces développeurs disent qu'il n'y a pas de question idiote, ils le pensent vraiment. Les meilleurs programmeurs de paires parlent librement, sans avoir besoin de paraître fantastiques ni de craindre de paraître stupides.

La programmation en binôme demande de la pratique, mais cela vaut la peine d'être perfectionné. Des études montrent que les programmeurs qui s'associent pour résoudre des problèmes ont tendance à être plus confiants, productifs et engagés dans leur travail. Que vous recherchiez votre prochain emploi ou que vous envisagiez de nouvelles embauches, le jumelage est bienveillant.

Ressources et lectures complémentaires

Empathie de l'ingénieur

Quand j'ai commencé à m'enseigner moi-même JavaScript, mon code ressemblait beaucoup au sol de ma chambre: je le laissais devenir de plus en plus malpropre jusqu'à ce que je n'aie pas d'autre choix que de le ranger. Tant que mon navigateur Web pouvait le comprendre, je me moquais de son apparence.

Ce n'est que lorsque j'ai commencé à examiner le code des autres personnes que j'ai réalisé que je devais montrer beaucoup plus d'empathie pour les personnes qui examinaient le mien.

L'empathie est peut-être l'outil le plus sous-estimé dans l'arsenal d'un développeur. C'est la raison pour laquelle IDEO place la recherche sur les utilisateurs au centre de leur processus de conception, et pourquoi Etsy demande à leurs concepteurs et chefs de produit de faire une rotation d'ingénierie. L'empathie émerge lorsque nous avons l'occasion de voir comment notre travail affecte les autres. Pas étonnant que le codage collaboratif soit un excellent moyen de le construire.

L'examen du code par les pairs – l'acte consistant à vérifier les erreurs des uns et des autres – nous invite à faire preuve d'empathie. En tant que réviseur, il est important de reconnaître que quelqu'un a déployé des efforts considérables pour écrire le code que vous êtes sur le point de critiquer. À ce titre, essayez d'éviter d'utiliser des phrases qui pourraient impliquer un jugement ou banaliser leur travail. Lorsque vous vous référez à leur code, vous voulez leur montrer les fonctions et les lignes spécifiques sur lesquelles vous avez des questions et suggérer comment ils pourraient le refactoriser. Le partage des ressources d'apprentissage peut également être plus utile que l'alimentation à la cuillère d'une solution. Certains des commentaires les plus utiles que j'ai reçus des revues de code ont pris la forme d'articles éducatifs, de vidéos et même de recommandations de podcasts.

Écrire une bonne documentation pour votre code va également très loin. Un acte aussi simple que de créer un fichier Lisez-moi avec des instructions d'installation claires montre de l'empathie pour quiconque a besoin de travailler avec votre code. Le fondateur de GitHub, Tom Preston-Werner, préconise une approche en termes de readme-first pour le développement.

«Une mise en œuvre parfaite d'une mauvaise spécification ne vaut rien. Selon le même principe, une bibliothèque magnifiquement conçue sans documentation est également sacrément inutile. Si votre logiciel résout le mauvais problème ou que personne ne sait comment l’utiliser, il se passe quelque chose de très grave. »

– Tom Preston-Werner, fondateur de GitHub

J'ai également parlé avec des fondateurs de technologies qui traitent la documentation comme un élément essentiel de l'intégration réussie. Un directeur technique a déclaré que si un développeur junior avait du mal à atteindre un niveau de productivité dans les six mois après avoir rejoint son équipe, cela indiquait que la base de code n'était pas suffisamment documentée. Il ne faut que quelques secondes pour ajouter un commentaire explicatif à une fonction complexe que vous avez écrite, mais cela pourrait économiser des heures d'effort à la personne suivante qui se joindra à votre équipe.

Ressources et lectures complémentaires

Réalisation agile

Des millions d'heures de travail consacrées à la réalisation de films CGI aux crises de développement intenses menant à des sorties de jeux vidéo à gros budget, les réalisations techniques imposantes nécessitent des efforts époustouflants. La première fois que j'ai vu la base de code de mon employeur actuel, j'ai été stupéfait par l'énormité de tout cela. Comment diable est-ce que quelqu'un construire cette?

La réponse est que Tout le monde peut construire beaucoup plus que n'importe qui, étant donné le bon cadre de collaboration. Dans les entreprises qui encouragent le codage collaboratif, le logiciel ne sort pas des efforts d'un génie isolé. Au lieu de cela, il existe des façons de travailler ensemble qui aident les grandes équipes à faire un travail incroyable. Les développeurs de Founders and Coders pratiquent une méthodologie de développement logiciel connue sous le nom de «Agile», et d'après mon expérience, elle place le «fonctionnel» dans des équipes de développement interfonctionnelles.

Des livres entiers ont été écrits sur Agile, mais voici un résumé des concepts de base:

  • Une équipe de développement de produits décompose de gros travaux en petites unités appelées «user stories», les hiérarchise et les livre en cycles de deux semaines appelés «sprints».
  • Tant que le projet se poursuit, les cycles se répètent et les nouvelles exigences en matière de produits sont introduites dans un carnet de tâches pour les futurs sprints.
  • L'équipe tient des réunions de standup quotidiennes pour discuter de leurs progrès et lutter contre les bloqueurs.
  • Le processus est à la fois incrémental et itératif: le logiciel est construit et livré en morceaux et affiné en sprints successifs.
Dix développeurs se sont blottis autour d'un ordinateur portable en utilisant la programmation mob pour résoudre ensemble un problème.
Un workflow Agile typique (Grand aperçu)

En tant que bricoleur chronique dont les projets de loisir solo succombent souvent au «long métrage», je sais combien il est facile de perdre du temps à construire des choses que personne n'utilise jamais. J'adore la façon dont Agile vous oblige à prioriser les user stories afin que toute l'équipe puisse se concentrer sur la fourniture de fonctionnalités qui intéressent réellement vos utilisateurs. C’est motivant de savoir que vous êtes tous unis autour de l’objectif commun de créer un produit ou un service qui continuera de vivre une fois que vous aurez fini de travailler dessus.

Le fractionnement des tâches en petites histoires d'utilisateurs s'avère également être un excellent moyen de sessions de programmation de paires de boîtes de temps. Quelle que soit la profondeur de la zone dans laquelle vous vous trouvez, terminer le travail sur une caractéristique clé est toujours un bon rappel pour vous éloigner de vos bureaux et faire une pause. Agile donne une structure au codage collaboratif où il pourrait autrement faire défaut.

Pendant ce temps, les standups quotidiens vous donnent la liberté de parler de tout ce qui vous retient, et les rétrospectives de sprint offrent un espace pour partager les victoires clés et déterminer où l'équipe pourrait s'améliorer. Ces cérémonies favorisent un sentiment de collaboration et de responsabilité, et nous aident à apprendre plus ensemble que nous ne le pourrions nous-mêmes.

La mise en pratique de tous ces principes Agile peut être difficile, surtout lorsque personne dans une équipe n'est habitué à cette façon de travailler. Chez Founders and Coders, il faut un certain temps à la plupart des étudiants pour prendre l'habitude de faire des standups quotidiens. Cependant, après 18 semaines de pratique basée sur des projets, vous constatez que vos processus et vos compétences en communication s'améliorent énormément. Au moment où vous entreprenez votre premier travail client, vous avez formé un modèle mental beaucoup plus clair sur la façon d'aborder la création d'une application Web complète dans une équipe.

La meilleure façon d'apprendre Agile est de construire des projets intéressants avec d'autres personnes. La participation à des hackathons est un excellent moyen de se connecter avec des collaborateurs potentiels. De nombreux projets open-source rendent leurs tableaux de projets kanban publics, vous pouvez donc voir sur quels problèmes GitHub les différents contributeurs travaillent. Plusieurs contributions de bienvenue des débutants, et vous pouvez souvent vous attribuer à des problèmes ouverts et commencer à générer des demandes de tirage.

Étant donné que la plupart des entreprises technologiques souscrivent à une certaine forme d'Agile, il n'est pas rare que les employeurs posent des questions à ce sujet dans les entretiens. Toute expérience que vous avez peut vous différencier des autres candidats qui n'ont peut-être jamais codé en collaboration, sans parler d'Agile.

Ressources et lectures complémentaires

Recommandations de l'outil de codage collaboratif à distance

Au cours des dernières années, les outils de travail à distance ont évolué au point que des sociétés importantes comme Gatsby et Zapier sont désormais «distantes d'abord». Bien qu'il reste à voir si cela deviendra une tendance, il est sûr de dire que les équipes de développement à distance sont là pour rester.

Dans cet esprit, voici quelques outils qui peuvent vous aider, vous et votre équipe, à coder en collaboration à distance:

Rédacteurs Markdown HackMD
La fonctionnalité de tueur est que vous pouvez transformer des documents de démarques en présentations de diaporamas sans effort. Emprunts de la bibliothèque populaire de throw.js.
StackEdit
Un éditeur en ligne collaboratif avec une interface utilisateur propre et de nombreuses options d'exportation de fichiers.
Éditeurs de code CodeSandbox
Un fantastique éditeur de code collaboratif basé sur le cloud que vous exécutez dans votre navigateur, sans aucune installation nécessaire.
Partage en direct
Une extension soignée pour l'éditeur de code Microsoft Visual Studio populaire qui prend en charge l'édition et le débogage en temps réel des fichiers dans le même espace de travail.
Solutions de vidéoconférence Google Hangouts
La superbe intégration de Google Agenda facilite la planification d'appels vidéo.
Équipes Microsoft
Logiciel de visioconférence qui offre une très bonne qualité d'appel (vidéo 1080p) et prend en charge jusqu'à 250 participants simultanés.

Si vous retirez une chose de la lecture de cet article, je veux que les joueurs d'équipe l'emportent sur les contributeurs individuels. Dans un domaine où il semble y avoir un nouveau cadre brûlant à maîtriser toutes les deux semaines, nos compétences techniques vieillissent d'une manière différente de nos compétences générales. Le résultat est que les développeurs qui peuvent bien travailler avec d'autres personnes trouveront toujours que leurs capacités sont en demande. Le codage collaboratif n'est pas seulement un moyen efficace d'apprendre; c'est un ensemble de compétences recherché que tout le monde peut développer avec suffisamment de pratique et de patience.

Smashing Editorial(fb, ra, yk, il)

Laisser un commentaire

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