Article original : The Most Important Non-Programming Skills for Programmers
Par Ali Spittel
Lorsque je pense aux personnes avec lesquelles je souhaite travailler en tant que programmeuse, je pense bien plus aux compétences non techniques qu'aux compétences techniques qui font de quelqu'un un bon collègue.
En fait, toutes les compétences mentionnées dans cet article contribuent à écrire un bon code qui améliore les projets techniques. La plupart d'entre elles sont également très utiles pour des carrières en dehors de la programmation, mais je vais me concentrer sur leur utilité spécifique pour les programmeurs.
Empathie
Pour créer un excellent produit, vous devez vous mettre à la place de vos utilisateurs. Comment vont-ils utiliser votre produit ? Quelles fonctionnalités leur seront utiles ? Comment votre programme peut-il les aider ou améliorer leur vie ? Et — à l'inverse — comment pourrait-il leur nuire ou avoir un impact négatif sur leur vie ? Quelles sont les implications éthiques de votre application ?
L'empathie est essentielle pour tant d'aspects de vos programmes. S'ils ne sont pas sécurisés, les informations de vos utilisateurs pourraient être utilisées de manière négative par un tiers.
S'ils ne sont pas accessibles, vous limitez le nombre de personnes pouvant utiliser votre projet. S'ils fonctionnent lentement ou nécessitent une énorme quantité de bande passante, les utilisateurs partiront et les personnes dans des zones avec un internet lent ou les utilisateurs mobiles ne pourront pas les utiliser.
Il semble que chaque jour, un article sorte sur un algorithme nocif qu'une entreprise a implémenté, comme l'algorithme de YouTube radicalisant l'alt-right, Amazon créant un algorithme de recrutement sexiste (qu'ils n'ont finalement pas utilisé), ou l'IA mégenrant les femmes noires. Pensez à tout le monde lorsque vous écrivez votre code !
De plus, l'empathie est utile pour être un membre d'équipe et un mentor. Mettez-vous à la place de votre manager ou d'un autre développeur. Pourquoi prennent-ils leurs décisions ? Que pouvez-vous faire pour les aider ? Avoir de l'empathie améliorera définitivement votre capacité à être un coéquipier efficace. Si vous êtes un employeur, vous pouvez garder vos employés plus longtemps, et ils seront plus efficaces si vous faites preuve d'empathie (source).
Ayez de la patience pour les autres programmeurs, surtout ceux qui apprennent de nouvelles choses. Rappelez-vous de quelque chose qui était vraiment difficile pour vous à apprendre et comment vous vous sentiez. Ils ressentent probablement la même chose. Être grossier avec eux, minimiser leurs progrès ou être pédant ne fera que nuire et rendre ce processus plus difficile pour eux.
Vos mots et actions ont de réelles conséquences — vous pouvez les utiliser pour apporter un changement positif ou blesser quelqu'un. Cela ne se limite pas à la communication en personne — la communication en ligne compte aussi. Vous pouvez penser que vous êtes drôle ou que vous vous défoulez, mais vous pouvez en réalité avoir un impact très négatif sur la vie de quelqu'un. C'est à vous de décider comment agir, et comment vous excuser si vous avez blessé quelqu'un pour réparer une partie de ce tort.
Résolution de problèmes
Lorsque j'enseigne la programmation, je vois beaucoup plus de personnes lutter avec la résolution de problèmes qu'avec le code lui-même. La capacité à diviser un problème en plus petits et à résoudre chacun de ces petits problèmes demande beaucoup de pratique. Devenir bon en résolution de problèmes peut vous aider à devenir un bien meilleur programmeur.
De plus, pour la plupart des problèmes, il y aura plus d'une solution. Une grande partie de notre travail en tant que développeurs de logiciels consiste à réfléchir à ces différentes solutions et à choisir la meilleure. Est-ce que l'une est plus rapide à implémenter ? Ou fonctionne-t-elle plus efficacement ? Ou sera-t-elle moins coûteuse ? Toutes ces questions sont importantes, et choisir la bonne solution est une partie difficile mais importante du développement logiciel.
Collaboration
Il est très probable que vous travailliez avec d'autres personnes en tant que programmeur. Vous devrez travailler avec d'autres développeurs, des hommes d'affaires, des managers, des contributeurs open source, des parties prenantes et d'innombrables autres personnes, même si vous êtes freelance ou entrepreneur. Apprendre à bien travailler avec différentes personnes et leurs personnalités est crucial.
Il y a tant de choses qui contribuent à une bonne collaboration. La première est de savoir qu'une seule personne ne peut pas tout faire, ou du moins ne peut pas tout faire bien. Différentes personnes ont différentes compétences, points de vue et expériences de vie qui sont plus puissants en combinaison qu'en isolation. Ne pensez pas que vous devez toujours "porter l'équipe sur votre dos" ou être tout pour tout le monde. Vous pouvez être beaucoup meilleur si vous permettez aux autres de contribuer aussi.
Demandez de l'aide aux autres, et soyez prêt à aider les gens en retour. Vous n'avez pas besoin d'être un expert en tout, et différentes personnes seront expertes en différentes choses. Comptez sur les autres, et si vous êtes bloqué sur quelque chose, assurez-vous de demander de l'aide pour ne pas rester bloqué trop longtemps.
Lorsque quelqu'un vous demande de l'aide, soyez prêt à l'aider. Vous pouvez apprendre beaucoup en expliquant bien les choses, et vous pourrez renforcer vos connaissances sur le sujet. Si vous êtes dans une position de management, assurez-vous de donner aux gens du temps pour le mentorat et une collaboration efficace !
Dans le même ordre d'idées, ne coupez pas la parole aux gens ou ne rejetez pas immédiatement leurs points de vue. Ils seront probablement beaucoup moins enclins à contribuer à l'avenir si leurs opinions ne sont pas valorisées ou prises en compte.
Écoutez activement lorsque les gens partagent leurs idées — au lieu de penser à votre réponse ou à pourquoi votre idée est meilleure pendant qu'ils parlent, essayez de penser à pourquoi leur approche est aussi bonne ou à comment elle pourrait être implémentée.
Ensuite, une fois que vous avez implémenté leurs idées géniales, donnez-leur crédit pour ces idées. Rien ne m'a rendu moins efficace en tant qu'employée que d'être dans une équipe où mes idées étaient rejetées, sous-évaluées et non créditées par d'autres membres de mon équipe.
Communication
Lorsque vous travaillez avec d'autres personnes, qu'il s'agisse de collègues, de clients, des personnes qui utilisent vos projets, de managers ou de personnes que vous managez, une bonne communication est cruciale. Donnez des mises à jour honnêtes sur l'avancement des choses, l'état actuel des projets et vos opinions sur les choses de manière honnête mais gentille. Les gens seront moins réceptifs aux retours si vous êtes grossier ou non constructif. Mais, si vous êtes malhonnête ou édulcorez la vérité, vous ne verrez peut-être pas de changement positif. Il y a définitivement une fine ligne ici.
Un exemple concret de ma vie : J'ai eu quelqu'un qui a lu l'un de mes articles de blog et a écrit une très longue lettre sur la façon dont je semble stupide à cause du ton que j'utilise. J'utilise généralement beaucoup de points d'exclamation et j'essaie de sonner enthousiaste dans mes articles — et c'est très intentionnel pour essayer de rendre les sujets qui peuvent être intimidants ou ennuyeux plus amusants. La personne est devenue assez sexiste dans cet email et a dit des choses assez blessantes. Cela dit, je pourrais probablement réduire les points d'exclamation et toujours enthousiasmer les gens pour la programmation. J'aurais été beaucoup plus réceptive à ce point si la personne avait formulé la critique de manière plus constructive.
Si les choses ne se passent pas bien, assurez-vous de le dire. Soyez honnête sur le besoin de repousser une échéance, ou sur le fait que quelque chose ne se passe pas bien au travail. Vous aurez beaucoup plus de chances de le changer et de rendre l'environnement meilleur pour vous si vous parlez.
Inclusivité
Je travaillais autrefois comme instructrice d'escalade et conseillère dans un camp d'été, et le groupe d'âge avec lequel je travaillais le plus était celui des filles de collège. Elles étaient parmi mes personnes préférées avec lesquelles j'ai jamais travaillé. Mais, cela dit, les collégiens ne sont généralement pas les plus acceptants des différences ou les plus opposés aux cliques.
Nous avions l'habitude de faire un jeu où nous commencions tous dans un grand cercle, puis un conseiller disait aux gens qu'ils étaient "hors du cercle", et ils devaient quitter le jeu en fonction d'une caractéristique dont ils n'étaient pas informés et qu'ils ne pouvaient pas contrôler. Les personnes encore dans le cercle jouaient à un jeu, et les personnes hors du cercle étaient exclues et devaient simplement regarder de loin.
Cette activité était super efficace pour montrer à ces filles ce que c'était que d'être exclu pour des raisons hors de leur contrôle, et j'y pense encore souvent. En tant qu'adultes, nous excluons encore les gens du cercle et les excluons en fonction de certaines caractéristiques hors de leur contrôle. Mais si nous les laissons revenir dans le cercle et leur permettons de contribuer, alors nos produits tirent parti d'expériences plus diverses et sont meilleurs.
Il y a beaucoup de recherches sur le fait que les équipes plus diverses performant mieux. Mais d'un point de vue individuel, pensez à ce que cela fait d'être exclu du cercle et essayez de rendre votre cercle plus grand, pas plus petit.
Il est probable que beaucoup de vos utilisateurs soient des personnes qui ont traditionnellement été exclues du cercle dans la tech. Je peux vous dire par ma propre expérience, que c'est vraiment difficile d'être la seule personne comme vous dans une équipe, en tant que quelqu'un qui a été dans une équipe avec une autre femme pendant ~5% de ma carrière de programmeuse.
Cela est également lié à l'empathie — assurez-vous de créer vos programmes pour une grande variété d'utilisateurs. Pas seulement pour les personnes valides ou celles avec un internet ou des technologies de pointe. Vous pourrez atteindre plus de personnes.
Patience
La première personne avec laquelle vous devez avoir de la patience lorsque vous programmez est vous-même. La programmation est difficile et parfois vous aurez des bugs ou des problèmes difficiles à surmonter. Si c'est toujours facile, alors vous ne vous challengez pas, et vous ne grandissez pas en tant que programmeur.
Ayez la ténacité de continuer à travailler sur un problème et de ne pas abandonner quand cela devient difficile. Mais, aussi, sachez que vous pouvez faire une pause et revenir au problème un peu plus tard. Peut-être que faire une pause vous aidera à résoudre le problème plus efficacement ou à le voir différemment lorsque vous y reviendrez.
De plus, soyez patient avec les autres. Les choses peuvent prendre du temps à apprendre et les gens ne sont pas parfaits. Faire des erreurs et échouer peut être l'une des expériences les plus importantes dans le processus d'apprentissage, alors permettez cela au lieu de créer un environnement où il n'est pas sûr de prendre des risques ou de grandir. Comprenez que différentes choses cliquent plus facilement pour différentes personnes, et sachez que l'apprentissage peut prendre du temps.
Créativité
Ma chose préférée en tant que programmeuse est que je peux utiliser mon énergie créative pour construire des choses dont d'autres peuvent ensuite bénéficier. Vous pouvez penser en dehors de la boîte pour créer des choses vraiment cool.
Avoir des idées créatives est important pour inventer de nouvelles fonctionnalités, interfaces et applications. J'ai eu quelqu'un qui a acheté une licence pour un produit que j'ai construit pour une entreprise en grande partie à cause de l'interface créative, et mon site portfolio a gagné en traction grâce à sa créativité.
En plus de cela, beaucoup de problèmes nécessitent de la créativité pour être résolus. Il y a plus d'une solution à presque tous les problèmes de programmation, et trouver des approches créatives pour les résoudre peut souvent mener à une solution optimisée.
Humilité
Vous pouvez apprendre tellement des autres programmeurs — une personne ne peut pas tout savoir ou même s'en approcher dans le monde du code. Soyez réceptif à la critique constructive au lieu d'être sur la défensive. Vous pouvez améliorer votre code et vous-même grâce aux retours, et rester campé sur vos positions ne mène pas à la croissance. Vous n'avez pas toujours raison, et vous devriez être réceptif aux idées des autres.
Confiance
D'un autre côté, soyez aussi confiant. J'avouerai que c'est probablement le plus difficile pour moi en tant que personne souffrant du syndrome de l'imposteur, et cela a été ma priorité numéro 1 à améliorer dans chaque évaluation de performance que j'ai eue dans ma carrière. Je peux (et je le ferai probablement) écrire un article de blog entier sur ce sujet seul, mais croire en soi et être confiant dans ses capacités est vraiment important.
Tout d'abord, ayez confiance en votre capacité à prendre des projets en main. Ne vous reléguez pas à des projets plus faciles ou ne doutez pas de vous lorsque l'on vous confie quelque chose de difficile. Essayez de résoudre autant que possible, puis demandez de l'aide pour surmonter les parties les plus difficiles.
De plus, ne ressentez pas le besoin de tout rechercher en premier recours. Faites-vous confiance pour essayer quelques choses avant de chercher la réponse sur Google. Ou cherchez une partie du problème au lieu du tout. Si vous faites tout correctement, vous ne faites aucun mal en essayant quelques choses en développement et en voyant si elles fonctionnent. Vous pourriez être surpris par la quantité de choses que vous savez.
Une autre chose que je fais est de garder une trace de mes victoires. J'ai un document sur mon ordinateur avec des choses cool que j'ai faites, et des choses vraiment gentilles que les gens ont dites sur moi. Lorsque j'ai une journée difficile ou que je doute de moi, je reviens à ce document et je me sens généralement plus confiante dans ce que je fais.
Adaptabilité
La programmation est encore un monde nouveau, et il évolue super vite. Être capable de s'adapter lorsque les choses changent est crucial. Lorsqu'un nouveau framework, une nouvelle bibliothèque ou un nouveau langage sort et prend le dessus, il est important de pouvoir l'apprendre (dans la raison, bien sûr). Notre industrie serait radicalement différente si nous écrivions tous encore du code en Fortran. Nous devons être capables d'évoluer et de nous adapter lorsque les choses changent.
De plus, les objectifs et les fonctionnalités des projets changent souvent, surtout avec le travail client. Lorsque cela arrive, nous devons nous adapter et incorporer ces demandes (encore une fois, dans la raison).
Participation communautaire
La communauté est si importante pour la programmation — les conférences, les articles de blog, les réseaux sociaux et les meetups sont importants pour apprendre et grandir. De plus, les logiciels open source et les communautés qui les entourent sont le sang vital de cette industrie. Être capable de créer un réseau et de nouer des liens avec les gens est si important pour l'éducation, le partage de vos expériences et la recherche de nouvelles opportunités.
Même si vous êtes introverti ou n'aimez pas les interactions sociales en personne, il existe une tonne de communautés en ligne géniales dont vous pouvez apprendre beaucoup. Et, même à l'intérieur des entreprises, avoir une équipe avec un lien fort aidera les gens à mieux travailler ensemble.
Conclusion
Ces compétences sont souvent appelées "compétences douces", mais je trouve que c'est réducteur. Ces compétences aident tellement à la fois à écrire du code et à être un bon collègue. Elles sont bien plus importantes que de connaître un langage, une bibliothèque ou un framework spécifique et elles vont loin même en dehors de la tech.
Toutes ces compétences sont vraiment importantes à travailler en tant que programmeurs et en tant que personnes. Cela dit — personne n'est parfait, et tout le monde a de la marge pour grandir. Alors continuez à grandir, et essayez de faire de petits pas pour être meilleur dans ces compétences non techniques et je ferai de même !
Restez en contact
Publié à l'origine sur dev.to.