La plupart des compétences hors programmation augmentent la valeur pour les développeurs

L'auteur du livre sur la construction d'une carrière, Roman Zhikharev, s'entretient avec le directeur technique de G-Core Labs , Vasily Mikhaleny, sur ce que les entreprises informatiques modernes attendent de leurs employés.

- À votre avis, à quoi ressemble le concept de valeur pour les développeurs?

Pour augmenter votre valeur, vous devez faire trois choses:

  1. Etudier les technologies demandées sur le marché aujourd'hui et demain.
  2. Développer des compétences universelles (soft skills).
  3. Prenez plus de responsabilités.

- Commençons par le plus simple. Quelles technologies maîtriser?

Aujourd'hui, les tendances évoluent à une vitesse incroyable. Par conséquent, je voudrais exprimer certains principes généraux, plutôt que de décrire les tendances ou de faire des prévisions. La configuration idéale d'expérience et de compétences, je considère une personne ayant une expertise en forme de T (personnes en forme de T). L'essence du terme est qu'en tant qu'expert dans un domaine technique spécifique, il devrait avoir une idée de ce qui se passe dans les pays voisins.

Par exemple, un développeur backend, en plus d'une connaissance approfondie des fonctionnalités du langage (par exemple, Python) et des cadres communs, vous devez absolument connaître et, de préférence, être en mesure de construire le processus de test, d'assemblage et de déploiement (pipeline CI / CD, par exemple, à Jenkins). Il doit connaître les caractéristiques de l'environnement dans lequel le code fonctionnera et comment garantir la tolérance aux pannes. Par exemple, pour faire face à AWS / Azure / GCE ou à l'installation sur site de k8, vous pouvez corriger l'erreur dans les outils de déploiement écrits en golang.

Dans certaines régions, la valeur augmente la disponibilité des certificats. Lors de l'embauche, votre portefeuille compte, il est plus facile de démontrer vos compétences et votre code en participant à des projets open-source ou en publiant vos projets pour animaux de compagnie sur github.

- Vous avez mentionné plusieurs solutions technologiques populaires. Il s'avère que nous devons apprendre ce qui est dans la tendance?

Pas forcément. Vous pouvez opter pour le battage médiatique sur le marché, ou vous pouvez aller dans la direction opposée. Si vous êtes intéressé par une technologie rare et que vous ne voulez pas courir après la mode, il y a une chance d'augmenter votre valeur grâce à une connaissance unique.

Les géants de la technologie moderne sont suffisamment flexibles et peuvent se permettre de réussir la mise à niveau de leurs systèmes. Et, pour autant que l'on puisse en juger, Yandex et Google n'ont pas un héritage impressionnant de solutions basées sur des technologies obsolètes.

Mais il existe des secteurs plus conservateurs: les banques internationales , les géants industriels et énergétiques et l'industrie de la défense. Il leur est très difficile de trouver des spécialistes sur leur propre pile et ils sont prêts à payer beaucoup d'argent. Un bon exemple est l'utilisation du Perl "mourant" sur booking.com et mail.ru. Ou COBOL , développé dans les années 60, et encore utilisé dans certaines institutions financières américaines.

- Et qu'entend-on par compétences universelles?

La capacité de communiquer avec d'autres personnes augmente considérablement la valeur du développeur pour l'entreprise. En pratique, cela signifie qu'une personne peut soulever un problème, justifier son opinion, proposer une solution, identifier correctement les parties prenantes, savoir comment interagir efficacement avec différentes personnes (flexibilité), résoudre de manière constructive les conflits, négocier, former, encadrer et coacher. Et même parler ou présenter publiquement.

Cela comprend également la capacité de parler la même langue que le concepteur et une compréhension des motivations de leur chef. Je pense à la connaissance de l'anglais, et donc tout est clair.

- Que signifie prendre plus de responsabilités?

Nous nous efforçons d'embaucher des personnes qui regardent un peu plus loin que leur outil de travail (technologie) et nous concentrons sur les valeurs pour l'utilisateur final. Par exemple, ceux qui offrent des options pour optimiser les processus de développement, recherchent des solutions au problème d'un client et sont prêts à faire des efforts pour discuter et mettre en œuvre les changements.

Malheureusement, vous pouvez souvent voir des développeurs qui créent un culte autour de leurs outils. Mais vous devez comprendre que si le code n'est pas entré en production à temps, sa qualité ou les outils utilisés n'ont pas d'importance. Ce code n'a pas apporté de profit à l'entreprise.

"Cela me rappelle les valeurs Agile." Y a-t-il une connexion?

Oui Il existe un ensemble de pratiques appelées DevOps qui développent des valeurs Agiles. Il aide l'entreprise à se concentrer sur la formalisation des processus pour interagir en interne afin de créer de la valeur. Mais cela est impossible sans assumer la responsabilité du résultat final par tous les membres de l'équipe.

Un bon développeur comprend la culture DevOps et sait l'appliquer dans son équipe et, idéalement, dans l'entreprise. Ou même plante. Par exemple, l'une des pratiques de DevOps est CI / CD (les versions les plus fréquentes). Et si vous voulez vraiment faire des versions fréquentes (au moins une fois par jour), vous ne pourrez pas le faire en l'absence d'automatisation de l'intégration et des tests, d'automatisation et de stabilisation du processus de déploiement, séparation de la version du déploiement (basculement de fonctionnalité), qui fonctionne et il est clair pour la surveillance, les développeurs de préservation rétrocompatibilité, modification du mécanisme de restauration, etc. Il deviendra évident pour vous que la responsabilité d'un bon développeur ne prend pas fin lorsque vous transférez la tâche au département QA.

La valeur des sorties fréquentes semble évidente pour tout le monde.

Anti-DevOps est une division du processus de production en deux ou plusieurs puits fonctionnels: développement, test, exploitation, sécurité. Par conséquent, chaque fonction ne résout que ses propres problèmes.

Le sentiment général est que l'équipe doit assumer la responsabilité de la qualité du produit, de la valeur des fonctionnalités pour le client, du calendrier et, dans une moindre mesure, de la conformité formelle aux exigences de la description de tâche. Le développeur ne doit pas avoir de préjugés sur la limitation de sa responsabilité: «J'ai déjà transféré la tâche vers les tests. Je ne peux rien faire d’autre. "

Plus la responsabilité est grande, plus l'impact sur les résultats de l'entreprise est important. Dans une bonne entreprise, les personnes qui influencent sa croissance gravissent les échelons de carrière.

La responsabilité de l'équipe nécessite une bonne communication. Construire tout ce qui précède sans les compétences de communication constructive et de travail d'équipe est presque impossible.

- Partout donc?

Dans une grande entreprise avec des processus matures déjà définis, l'acceptation de la responsabilité signifie faire quelque chose au-delà du travail sur votre projet: organisation de réunions, discussions techniques, hackathons; participer à une formation de prévente ou de stage.

- Conclusions?

En résumé, nous pouvons dire que la stratégie la plus optimale pour le développement personnel est d' acquérir des compétences en communication pour élargir plus efficacement les limites de la responsabilité de ce qui arrive à votre produit et dans votre équipe ou votre entreprise.

Source: https://habr.com/ru/post/fr442644/


All Articles