Cependant, quelle que soit votre compétence technique, si vous ne possédez pas de bonnes compétences relationnelles, vous aurez du mal à travailler.
Vous pouvez considérer les compétences non techniques comme des pneus et les compétences techniques comme des roues. Il est possible de rouler, mais ce sera cahoteux et inconfortable. De plus, vous pouvez sortir de la route à tout moment.
D'un autre côté, si vous êtes un développeur décent dans les aspects techniques du travail, mais que vous avez d'excellentes compétences relationnelles, vous pouvez compenser cela.
Voici une liste des 10 compétences les plus importantes que tout développeur de logiciels doit travailler :
1. La communication
Dans votre travail quotidien, un collègue non technique aura du mal à comprendre votre travail sans votre aide.
De bonnes compétences en communication sont nécessaires pour favoriser le travail d'équipe, car vous devez être en mesure de communiquer avec les membres de votre équipe et les chefs de projet.
Le partage d'idées et le retour d'informations sont des éléments naturels de la coopération, mais pour vous épanouir dans ce domaine, vous devez être capable de communiquer clairement votre point de vue et de respecter vos collègues.
Une communication réussie exige que tout le monde soit sur la même longueur d'onde en termes de délais, d'exigences du projet, de tâches, d'attentes et de bien d'autres choses.
N'oubliez pas non plus que la communication est une voie à double sens.
Vous devez également savoir écouter.
C'est en écoutant vos collègues ou les utilisateurs que vous ferez avancer ou reculer votre projet.
Lorsque vous écoutez, vous avez un avantage sur les personnes qui parlent. Vous découvrirez de nouvelles choses, élargirez vos horizons et apprendrez quelque chose de nouveau.
La communication comprend également une forme écrite, par exemple un message Slack. Une écriture claire et concise est un atout pour la communication.
En bref, n'oubliez pas de :
- exprimer vos idées et vos pensées avec clarté et assurance
- être poli et ne jamais interrompre la personne qui parle
- Écouter avec attention et patience
- Dans la communication écrite, allez droit au but, écrivez des messages courts, utilisez une grammaire et une ponctuation correctes, et présentez votre message correctement
2. Le travail d'équipe
Le développement de logiciels a toujours été un effort de collaboration.
Même si un développeur travaille seul, il doit communiquer avec des ingénieurs qualité, des chefs de projet, des utilisateurs et d'autres personnes.
Travailler en équipe n'implique pas d'être d'accord sur tout.
En fait, les points de vue opposés peuvent être ce qui propulse les entreprises vers le succès. Le concept du travail en équipe consiste à trouver un équilibre et à utiliser ses compétences techniques et humaines pour rendre le projet aussi agréable et fructueux que possible pour chaque membre de l'équipe.
Être un bon coéquipier signifie réviser, affiner et développer ses propres idées en conjonction avec celles de l'équipe. Dans certaines circonstances, cela peut impliquer de recevoir de nombreuses critiques constructives ou d'abandonner son idée.
Si vous êtes fan de football, vous savez que le travail d'équipe implique de faire ce qu'il y a de mieux pour l'équipe, pour marquer des buts et remporter la victoire.
Il n'est jamais bon d'exiger d'avoir toujours raison, d'être toujours l'homme de la situation et de ne pas accepter les critiques de ses coéquipiers.
Prenons l'exemple de ce que Cristiano Ronaldo a fait à Manchester United. Alors que l'équipe jouait clairement mieux sans lui et qu'il n'était plus l'homme de base mais un joueur de rotation, il l'a pris personnellement et a donné une interview dans laquelle il crache sur son club et son entraîneur.
Ne faites pas comme Cristiano Ronaldo.
3. L'esprit d'apprentissage
L'une des meilleures compétences non techniques que l'on puisse avoir en tant que développeur de logiciels est un état d'esprit d'"étudiant pour la vie".
Je me souviens qu'en tant que junior, l'une des choses que je faisais pour améliorer mes connaissances était d'absorber tous les cours de programmation disponibles sur Udemy ou YouTube. J'ai tous les cours de Maximilian Schwarzmuller sur Udemy.
Lorsque j'apprenais, j'augmentais la vitesse des vidéos à 1,5 fois et je cherchais de nouvelles idées de projets. C'était parfois très difficile de suivre des cours au lieu de jouer à des jeux vidéo et de sortir le week-end, mais cela m'a vraiment aidé à grandir.
L'état d'esprit d'apprentissage s'applique également dans l'autre sens, lorsque vous n'êtes plus junior.
Aujourd'hui, je vois souvent des développeurs de logiciels plus expérimentés qui ont peur ou ne veulent tout simplement pas apprendre de nouvelles choses. Ils préfèrent s'en tenir à leurs projets et à leur pile technologique actuels, car ils ne veulent pas commettre d'erreurs et perdre leur confort. Alors que l'environnement des technologies de l'information est en constante évolution, les développeurs doivent rester au fait des nouveautés et des tendances.
L'apprentissage et l'étude continus sont d'excellentes compétences non techniques pour un ingénieur logiciel, qu'il s'agisse d'apprendre une nouvelle langue ou d'expérimenter une nouvelle technologie.
L'auto-apprentissage permet aux développeurs d'élargir leurs horizons en matière de résolution de problèmes et les empêche de se heurter à un mur et de stagner.
4. L'éthique du travail
L'éthique du travail est essentiellement la volonté et la motivation de fournir beaucoup d'efforts et de rechercher les meilleurs résultats dans son travail.
Tout en démontrant votre désir et votre impatience d'apprendre davantage et de contribuer à plus d'endroits, le fait d'être en contact avec d'autres départements au sein de votre organisation et d'autres équipes de projet peut également refléter une forte éthique de travail.
J'ai rencontré un grand nombre de développeurs de logiciels dont l'éthique de travail laissait à désirer.
Ils agissent généralement de la manière suivante :
- J'ai terminé, il ne me reste plus qu'à réparer cette chose (la réparée pendant quelques jours).
- J'avais terminé une tâche, mais j'ai découvert un nouveau bogue.
- Je ne comprends pas bien cette exigence, quelqu'un peut-il m'expliquer cette chose X (attendre toute la journée pour poser la question lors de la prochaine réunion).
- J'avais d'autres choses à faire, des réunions et des tâches administratives.
- Cette tâche est vraiment difficile, j'ai mal à la tête et je ne sais pas comment je vais la terminer (travailler sur une tâche simple basée sur un modèle en perdant le plus de temps possible pour éviter de choisir la tâche suivante).
En fait, leur travail est généralement retardé au maximum et ils ont toujours des excuses.
Ce trait de caractère est très difficile à corriger et l'ensemble de l'équipe peut souffrir si une personne a une mauvaise éthique de travail.
5. Organisation et gestion du temps
La capacité à organiser sa journée et à gérer correctement son temps est une compétence essentielle pour un développeur de logiciels.
Il est essentiel de savoir gérer son temps lorsque l'on a beaucoup à faire :
- Combien de temps passez-vous en réunion ?
- Combien de temps passez-vous à coder ?
- Combien de temps passez-vous à aider les autres ?
- Combien de temps passez-vous à vous occuper des services publics, des courriels, des messages, de la collaboration, etc.
Vous pouvez vous concentrer sur ce qui est le plus important et réaliser des activités plus rapidement lorsque vous avez de bonnes compétences en matière de gestion du temps.
Personnellement, j'aime toujours me préparer la veille. J'établis un plan :
- Dès le matin, je passe rapidement en revue les messages et les courriels, et je réponds à ceux qui sont très importants.
- Comme je suis plus productif pendant les heures calmes de la matinée, je me concentre sur la réalisation d'une tâche de la plus haute importance, essentiellement du café et du codage, sans interruption.
- Le temps de prendre un petit-déjeuner, une petite pause
- Réunions, collaboration et coordination avec l'équipe
- Travail sur des tâches, aide aux collègues
- L'heure du déjeuner
- Encore du travail, des réunions,
- Finir et conclure la journée
Bien sûr, tous les jours ne se déroulent pas comme prévu, mais il est important d'avoir une routine et de s'y tenir.
6. Intelligence émotionnelle/empathie
Les développeurs dotés d'une intelligence émotionnelle élevée gardent généralement leur sang-froid sous la pression, tandis que ceux dont l'intelligence émotionnelle est faible communiquent souvent de manière passive ou hostile.
En outre, les personnes dotées d'une intelligence émotionnelle sont plus aptes à faire preuve d'empathie et à écouter les critiques constructives.
Celles qui manquent d'intelligence émotionnelle, en revanche, ont du mal à collaborer, rejettent les opinions des autres et n'assument pas leurs erreurs.
La capacité à comprendre ou à ressentir ce que vit une autre personne à un moment donné est appelée empathie.
Les développeurs doivent être capables de faire preuve d'empathie à l'égard des personnes qui les entourent, en particulier dans un secteur aux enjeux importants comme celui du développement de logiciels.
Comprendre le point de vue d'un non-développeur, tel qu'un concepteur, un chef de projet ou un ingénieur en assurance qualité, est une autre application de l'empathie.
La prochaine fois que vous verrez votre collègue en difficulté, demandez-lui s'il va bien et proposez-lui votre aide.
Les gens peuvent traverser une période difficile et parfois ils ne vous le diront pas, leur enfant peut être malade, ils peuvent être surchargés de travail, avoir des problèmes familiaux ou relationnels.
Ces jours-là, essayez de faire preuve d'empathie et de les aider. Ils vous en seront reconnaissants.
7. Conscience de soi
Lorsqu'un ingénieur logiciel a une bonne conscience de soi, il est sûr de ce qu'il sait bien faire et humble lorsqu'il a la chance d'apprendre quelque chose de nouveau.
Parce qu'ils ne se laissent pas freiner par leurs insécurités, les développeurs de logiciels sûrs d'eux ont les meilleures chances de faire évoluer leur carrière.
Ils sont toujours prêts à admettre qu'ils ont besoin de se développer et font ensuite les efforts nécessaires pour acquérir ces talents.
Je connais quelques développeurs qui ont du mal à acquérir cette compétence.
En général, ils ont une faible conscience de soi, associée à une mauvaise éthique de travail et à l'effet Dunning-Kruger, pensant qu'ils sont bien meilleurs que le reste de l'équipe et que l'entreprise les dévalorise.
Ils quittent l'entreprise, mais les mêmes symptômes se répètent.
Il est possible de déceler une faible conscience de soi chez un développeur :
- Il a une haute opinion de lui-même sans véritable raison (par exemple, il pense qu'il mérite un titre d'architecte logiciel après 1 ou 2 ans de travail).
- Il ignore les commentaires de révision de code de ses collègues, approuve et fusionne ses demandes de fusion.
- Lorsque quelqu'un leur suggère une meilleure approche, ils défendent leur opinion à tout prix et ignorent les autres.
- Ils débattent beaucoup avec les autres
8. Accessibilité
Je n'étais pas sûr de savoir comment nommer correctement cette compétence, mais je pense que le mot "accessibilité" convient bien.
Chaque développeur a une personne à qui il peut demander de l'aide ou des conseils lorsqu'il est bloqué.
Pourquoi ?
Parce que cette personne est susceptible de toujours essayer d'aider et de donner de bons conseils, quel que soit son emploi du temps.
Lorsque quelque chose ne va pas, les gens sont moins enclins à vous demander de l'aide s'ils ne se sentent pas à l'aise pour vous aborder et vous poser une question. Cela peut indiquer qu'un problème mineur peut rapidement devenir un problème important.
Les autres sont moins enclins à vous aider en cas de besoin si vous n'êtes pas accessible ou serviable.
Les gens seront plus enclins à travailler avec vous et non contre vous si vous parvenez à établir une bonne relation avec eux.
Mettez des écouteurs lorsque vous êtes occupé et définissez un statut sur Slack pour informer les gens lorsque vous n'avez pas le temps de parler, ou expliquez simplement à la personne que vous avez des choses plus prioritaires à faire, mais que vous reviendrez vers elle une fois que vous aurez terminé vos tâches.
L'accessibilité est une compétence indispensable pour les seniors et les mentors afin que les autres collègues puissent s'adresser à eux et leur demander de l'aide sans hésitation.
9. Persistance/patience
Trouver des erreurs dans le code peut être vraiment frustrant.
Lorsque vos premières pistes tombent à plat, vous pouvez être contraint de parcourir le code ligne par ligne pour trouver le problème, ce qui demande beaucoup de persévérance et de patience.
Les développeurs connaissent ce genre de frustrations tous les jours.
De telles conditions requièrent un niveau de patience que seuls quelques ingénieurs logiciels possèdent.
En général, lorsqu'un développeur est dans un état neutre, il prend les meilleures décisions. En outre, le fait de rester calme face aux déceptions contribue à obtenir le meilleur résultat possible à la fin de la journée.
J'ai travaillé avec de nombreux développeurs dans l'équipe qui ne possédaient pas cette compétence.
Certains juraient, d'autres frappaient les murs avec leurs poings, mais le plus mémorable était un collègue qui avait acheté un punching-ball de bureau
Il le frappait environ 100 fois par jour et c'était vraiment drôle 😀
Au lieu d'acheter un sac de frappe, essayez d'adapter votre esprit pour réagir calmement et garder votre sang-froid dans ces situations.
Personnellement, le stoïcisme m'a beaucoup aidé dans ce genre de situation. J'aime aussi entraîner mon esprit dans des situations quotidiennes et chaque fois que des situations désagréables se présentent, je les vois comme des opportunités :
- lorsque je suis coincé dans les embouteillages
- lorsque mes voisins se disputent et font du bruit
- lorsque je rencontre de mauvais conducteurs,
- quand il y a une énorme file d'attente devant moi et que je suis pressé, etc.
10. La confiance
Si vous êtes trop humble ou si vous souffrez du syndrome de l'imposteur, cela peut nuire à votre carrière de développeur de logiciels.
Il est donc important d'avoir confiance en soi.
D'un autre côté, être trop confiant peut aussi se retourner contre vous. Penser que vous savez tout et que vous êtes le meilleur peut nuire à votre équipe et faire de vous un abruti narcissique aux yeux des autres.
Il faut du temps pour construire une base solide de confiance en soi.
Le nombre d'années d'expérience que vous avez joue souvent un rôle à cet égard. La troisième fois que vous résolvez un problème similaire doit être plus facile et plus naturelle que la première.
Vous devriez vous sentir maître de la situation et fort après l'avoir fait. La confiance se développe lorsqu'elle est alimentée par l'expertise et la maîtrise.
Je constate souvent un manque de confiance chez les développeurs débutants.
Ils ne sont pas sûrs de ce qu'ils doivent faire ensuite. Ils peuvent arriver à un stade où ils sont désemparés et ont besoin d'un environnement stimulant pour développer leur confiance. Quelqu'un qui est prêt à les aider, à les instruire et à leur expliquer.
Une chose que je n'aime pas, c'est lorsque les développeurs ont peur des tâches, qu'ils cherchent des solutions sur Google et sur Stack Overflow avant même de commencer à travailler sur la tâche, et qu'ils ont en fait peur de commencer.
Cela montre vraiment un manque de confiance.
Je suis d'accord avec le fait de faire des erreurs, d'apprendre et de renforcer sa confiance petit à petit. Tu es un ingénieur et un spécialiste de la résolution de problèmes, et je veux simplement que tu donnes tout et que tu fasses de ton mieux.
Peu importe le nombre d'erreurs que vous faites, la laideur du code et le temps que vous consacrez à la tâche.
Tous ces aspects sont facilement améliorables, mais vous remarquerez que vous vous améliorez au fil du temps. Votre confiance en vous augmentera au fur et à mesure que vous remporterez des victoires.
Conclusion
Cette liste de compétences semble très longue, mais il existe d'autres compétences non techniques qu'il est bon de posséder.
Vous ne devez plus vous contenter d'être bon dans le domaine technique, mais aussi dans celui des compétences non techniques, n'est-ce pas ?
La bonne chose est que vous possédez déjà la majorité de ces compétences.
Certaines d'entre elles vous sont peut-être inconnues, d'autres non. Cet article devrait vous aider à en découvrir certaines et à en développer d'autres.
Source : "Boost Your Career in Software Development with These 10 Essential Soft Skills" (Mensur Durakovic)
Et vous ?
Quel est votre avis sur le sujet ?
Pensez-vous que les conseils de Mensur Durakovic sont crédibles ou pertinents ?
Quels sont vos conseils pour réussir une carrière dans le développement de logiciels ?
Voir aussi :
10 vérités difficiles à avaler que l'on ne vous dira pas sur le métier d'ingénieur logiciel, par Mensur Durakovic, ingénieur logiciel
Huit conseils pour ceux désireux de faire long feu et donc une longue carrière en tant que développeur. Un condensé de 26 ans d'expérience, par Jayme Edwards
10 choses que les développeurs logiciels devraient apprendre sur l'apprentissage : un article scientifique de Neil C. C. Brown, Felienne F. J. Hermans et Lauren E. Margulieux
Plus de 20 000 offres d'emploi de Développeur ou en Informatique