Alors, de quoi avez-vous besoin pour le bonheur de programmation complet d'un ensemble correspondant à la fin de 2020?
▍ Structures de données et algorithmes
De nos jours, il y a beaucoup de programmeurs autodidactes avec de bonnes compétences en codage dans un langage de programmation spécifique. Ce sont des techniciens, recyclés d'autres profils, des «vhozhdens in IT», des amateurs d'auto-formation, etc. ils comprennent vraiment comment écrire du code, ils connaissent bien les fonctions et la syntaxe, ils connaissent quelques astuces et ils sont particulièrement avancés en POO et en patterns. C'est déjà beaucoup pour être compétitif sur le marché du travail.
Mais dès les premiers jours de travail sur un bon projet, les problèmes commencent et il devient évident que les tâches pédagogiques qui ont fait de vous un codeur cool n'ont rien à voir avec le code en production. Pour écrire un bon code professionnel, vous devez comprendre les structures de données et les algorithmes, et être capable de concevoir des logiciels. J'ai vu des programmeurs très intelligents qui n'utilisaient pas de tableaux, d'arbres, de listes chaînées, de tris, etc. Ces gars ont deux traits distinctifs: 1) ils sont têtus et confiants dans leur supériorité; 2) ils passent énormément de temps à écrire ce qui existe déjà en tant que structure - j'ai vu des sortes et des arbres réinventés, c'est effrayant et bizarre. Je suis déjà silencieux sur les ressources.
Par conséquent, un programmeur de tout niveau doit facilement fonctionner avec des structures et des algorithmes existants. À propos, les professionnels des RH et les DSI adorent utiliser ces sujets lors d'entretiens. La question de savoir si cela vaut la peine de transformer une entrevue en examen est un sujet pour un article distinct, mais le fait demeure.
▍Processus commerciaux
Je me souviens encore des bons moments où il était possible de créer le produit de vos rêves, et les spécialistes du produit, les spécialistes du marketing, les vendeurs l'ont transformé en un produit de rêve pour les clients de l'entreprise. Maintenant, bien sûr, c'est différent: les commerciaux se sont détendus, et le client est devenu exigeant, et les concurrents ont appris à faire de belles choses au lieu des vieux arbres sur leurs genoux. Désormais, tout programmeur et tout développeur doit comprendre les processus métier pour lesquels il crée des logiciels, doit avoir une compréhension minimale du domaine d'activité de l'entreprise. Et ici des arguments comme "Un chirurgien n'a pas besoin d'être opéré dix fois" ne seront pas acceptés, car il s'agit d'un faux d'argumentation et de sophisme: le chirurgien, en plus du site de l'incision et d'un organe spécifique, comprend les analyses, la pharmacologie, la réanimation, l'anatomie générale, la physiologie, etc.
Et c'est un gros problème: les développeurs créent un produit simplement selon les spécifications techniques, pas pour la commodité de clients spécifiques. Par conséquent, s'il est important pour vous d'être efficace et de créer un produit de valeur, vendable (au profit de votre salaire), créez-le en tenant compte des besoins du client, sans tenir compte de votre vision des besoins. Demandez à l'utilisateur les exigences, collectez des informations sur la manière dont le produit est utilisé, identifiez les modules et fonctions peu pratiques et pratiques - alors cela s'avérera à la fois meilleur et plus facile.
Soit dit en passant, une petite astuce pour comprendre les processus métier pour lesquels votre application est créée. Rassemblez-vous avec des collègues de la partie «vente», du front office et animez un séminaire mutuel: ils vous parlent des processus et des clients, du profil d'utilisation et des avantages importants, et vous leur dites que le développement n'est pas une vague de bâton et «arrosé d'une calculatrice pour moi le client a beaucoup demandé de calculer les paramètres et le coût du projet de centrale nucléaire en une demi-heure. "
▍Math
Reine des champs. Eh bien, ou les sciences, pas l'essence. Peu importe comment nous évitons les mathématiques dans le monde informatique, leur importance augmente chaque année. Ni l'apprentissage automatique, ni les réseaux de neurones, ni l'intelligence artificielle ne peuvent être développés sans connaissance des mathématiques. Et si vous, un développeur de site Web ou un développeur front-end, venez de grogner et êtes allé lire le paragraphe suivant, arrêtez, cela s'applique à tout le monde. Parce que bientôt les programmes sans au moins quelques rudiments de ML / AI / réseaux de neurones / BigData seront à la traîne. Par conséquent, la solution est simple: avant qu'il ne soit trop tard, étudiez la tranche de mathématiques nécessaire.
J'ai un petit secret sur la façon de commencer: achetez une encyclopédie avancée pour les enfants ou un livre scientifique populaire sur les mathématiques et plongez dans l'atmosphère, rafraîchissez-vous sur les termes de base. Et puis ça ira et même se resserrera.
▍ Connaissances de base dans des domaines connexes
Ce point peut irriter n'importe qui, mais oui - le programmeur et ses collègues seront mieux lotis s'ils en savent tous un peu plus sur le travail d'un voisin dans un espace ouvert, un bureau, une équipe. Si vous êtes un programmeur, vous connaissez mieux certaines bases de l'interface utilisateur / UX, du frontend et du backend, de l'administration système, des tests, etc. Cela permettra de construire un dialogue de travail productif sans accusations et soupçons mutuels. Il n'est pas nécessaire d'approfondir le sujet - un manuel de base, des conférences en ligne et un cours sur Internet suffisent. Si vous êtes vraiment intéressé par la carrière d'un développeur, vous pouvez suivre un programme à plein temps de développement logiciel intégré - tout y sera donné en quantités modérées, cependant, le plus souvent, il est payé.
Ces «soldats universels» aux perspectives de travail larges sont plus susceptibles de tomber dans les rangs des chefs de projet et des chefs d'équipe. Si cela vous intéresse, développez-vous en largeur et un peu en profondeur dans l'étude des disciplines dépendantes.
▍Techno-trio, sans lequel l'avenir ne sera pas permis
Cela peut sembler étrange, mais souvent les programmeurs ne connaissent que l'existence de ces trois technologies et peuvent expliquer ce que c'est en termes généraux. Cependant, bientôt, ces technologies toucheront tout le monde d'une manière ou d'une autre.
- . — , , ( ). . Amazon Web Service (AWS), Google Cloud Platform (GCP) Microsoft Azure .
- . , , . , , . ( ).
- ( Docker Kubernetes) , , . , , , , .
▍ -
J'adore les employés toxiques de l'entreprise. Si un responsable des relations publiques ou un chef de projet corrige nerveusement un carré et dit que «Javist Sergey est toxique» dans l'entreprise, je sais que très probablement Javist Sergey opprime ses collègues avec son volume de connaissances, trouve professionnellement des erreurs et les explique ennuyeusement par les meilleures intentions et à cause de l'irritation d'autres se replient sur eux-mêmes et se comportent grossièrement. Mais c'est un pro - et il y en a beaucoup. Mais, hélas, les gens sont des créatures sociales avec une psyché finement organisée et ne peuvent donc pas supporter les gens sans empathie, vecteur social et, excusez-moi, intelligence émotionnelle. Par conséquent, alors que le javiste Sergey se fige et a des conversations intelligentes avec le ramasseur d'ordures, le pythoniste Savely est déjà un senior, et vise des chefs d'équipe, et a assisté à trois conférences, et il mène l'amitié avec ses supérieurs, et vole avec un client à une exposition à Barcelone (vous avez déjà compris,que les exemples sont inventés et que toutes les coïncidences sont aléatoires, car personne ne vole à Barcelone en 2020).
Le moment est venu pour les communications, qui sont moins fréquentes, plus précieuses, alors notez ce que vous devez pomper:
- aptitudes à la communication, objections, questionnement et discussion;
- la capacité de faire preuve d'empathie et, par empathie, d'extraire les informations nécessaires;
- la capacité d'exprimer des pensées de manière compétente et intelligible;
- compétences de communication informelle sans familiarité et transition personnelle;
- la capacité de défendre votre point de vue.
J'ai une bonne nouvelle pour vous: la plupart des compétences générales sont installées chez une personne par défaut, il vous suffit de retirer ces compétences de vous-même avec compétence. N'allez pas voir les entraîneurs et les entraîneurs, 2-3 livres de base sur la psychologie organisationnelle, la gestion des conflits et la psychologie sociale feront de vous un causeur réfléchi.
En général, notre vie se développe de manière intéressante: je me souviens maintenant de la percée de Google Glass, de la clarté de l'arrivée de Pokemon Go, de la façon dont divers systèmes de gestion de projet ont décollé et se sont immédiatement effondrés. C'étaient des vagues de demande de battage médiatique, de demande de tendances. Par conséquent, les compétences répertoriées d'un programmeur en 2020 semblent être si «belles»: elles sont à long terme, et pas pour quelques saisons. Autrement dit, vous pouvez vivre avec eux jusqu'en 2030 environ sans trop de stress. Et le reste du monde repose sur ces éléphants. Eh bien, les langages de programmation, bien sûr, la tortue sous les éléphants, la base des bases.
Pour quoi sommes-nous? Bonne journée des programmeurs, mes amis! Vous changez votre vie pour le mieux avec du code, vous transformez les exigences en applications fonctionnelles, vous lisez les spécifications techniques entre les lignes et vous savez ce que pense le client ou le chef d'équipe. Aimez votre travail, grandissez dessus et sur vous-même, et ne laissez pas un seul ";" manquer. Tous bonjour mot et moins de bugs.