Expérience personnelle et conclusions après avoir changé de profession de concepteur à programmeur

De quoi parle cet article


En fait, l'article porte sur la façon dont ma façon de penser aurait dû changer avec le changement de profession, la compréhension du contexte et les moments auxquels il faudrait prêter attention, ainsi que la force avec laquelle le choix de ce que je devrais enseigner affecte les années suivantes de mon développement de carrière personnel.


Je dois dire tout de suite que je ne vais pas et ne considère pas qu'il est utile de commencer, comme dans la plupart des articles, sur le langage de programmation à choisir. Cela n'a aucun sens. Non, vous ne choisissez pas de langage de programmation. En fait, vous choisissez votre avenir, ni plus, ni moins. Votre futur choix sera basé sur votre application et votre plateforme.


Un peu pour moi


Je suis devenu programmeur début 2016 à l'âge de 35 ans, c'est si vous regardez l'historique d'activité dans mon profil GitHub et que vous acceptez le premier job sérieux. Âge assez décent pour un changement de profession. Oui, ce n'est pas un moment sans importance - j'ai quitté le design. Il s'agit en fait d'un changement très radical, et pas seulement parce que pour la première fois vous avez eu affaire à la profession plutôt humanitaire, avec des images, du design, de la composition, voire de l'utilisabilité dans mon cas, et puis soudain vous sautez dans le code, la technologie, la compilation, la base données et ainsi de suite. Il s'agit essentiellement de la pointe de l'iceberg, visible de l'extérieur. Je parlerai des conclusions personnelles plus approfondies un peu plus loin dans le texte.


Comment est-ce arrivé et pourquoi? Il y a deux raisons - je n'ai pas géré la conception cette fois, la dépression est deux. Pour devenir un designer à succès autant que je le souhaiterais, j'avais besoin d'un effet WOW, et pas seulement d'une UX logique, d'une composition concise, de scénarios de fonctionnement pour l'utilisation du produit et de certaines compétences du chef de produit. Nous avions besoin d'images cool et juteuses. Pour eux, je n'avais pas suffisamment la propriété de la composition des couleurs, et soit à cause de la dépression, soit pour une autre raison, je ne pouvais pas la maîtriser. Et puis ... d'abord, en regardant le film Ex Machina, quelque chose m'a retourné et je me suis inscrit à un cours de Machine Learning d'Andrew Ng. J'ai vraiment aimé ça, juste sauvage, malgré les nuits blanches et les yeux rouges le matin.


Ensuite, j'ai pris la décision la plus triviale et la plus simple à mon avis - j'ai fait le choix inévitable pour le volume et la qualité des connaissances de l'industrie informatique moderne et mes capacités que j'avais à l'époque. J'ai décidé de passer progressivement de la programmation frontale à la programmation frontale d'applications basées sur un navigateur en JavaScript. Et à partir d'ici, nous pouvons dire le vrai chemin des essais et des erreurs, en marchant le râteau et une innombrable série de découvertes étonnantes a commencé.


Maintenant, je suis arrivé au point où je peux déjà exprimer de manière ordonnée mes réflexions sur cette transition, quels puits et râteaux devraient être attendus sur le chemin. J'espère que quelqu'un qui fait face au même choix que moi il y a quelques années sera utile. Alors allez-y!


A propos d'un râteau et des erreurs du débutant


Quand j'ai changé de profession, je ne savais pas certaines choses et j'ai fait des erreurs pour lesquelles je devais payer avec des nerfs, des nuits blanches et de l'argent.
Premièrement, comme je pense, il y a une certaine échelle sur laquelle vous pouvez définir un programmeur et probablement aussi une personne. Tout est intéressant pour lui à une extrémité, il veut aider la cause commune, à l'autre extrémité, il se concentrera complètement sur une chose, il creusera une tranchée pendant des années, des décennies, et il est d'accord avec ça (probablement). Là et il y a des avantages, des inconvénients et des pièges que vous devez connaître. J'appartiens moi-même au premier type, le "Tiger fou", donc je peux en parler davantage. Mais ce qui compte, c'est de comprendre le type auquel vous appartenez le plus tôt possible.
Si vous aimez creuser une chose, il est peu probable que vous ayez des difficultés à trouver un emploi sur le marché du travail ouvert - les spécialistes étroits acquièrent une expérience approfondie plus rapide dans leur domaine en même temps, il est plus facile pour l'employeur de vous emmener car il sait même que vous avez mangé un chien sur une chose qui est très importante pour lui - par exemple, l'optimisation de l'animation des boutons dans un navigateur sur un site. Mais pas si simple. Lors de l'embauche, bien sûr, vous serez très heureux, mais des difficultés peuvent survenir pendant le travail, car les collègues s'attendront très probablement à une implication dans le produit dans son ensemble et dans sa pile technologique. Volonté d'aider, y compris d'aller au-delà de la portée de ses fonctions directes - de travailler sans savoirs traditionnels spécifiques, de prendre d'assaut une épicerie, de parler avec un backender dans sa langue, etc. Et ici, ce sera probablement jusqu'à un endroit. Vous ne serez probablement pas élevé, et vous ne le voudrez pas. Si je comprends bien, ceux qui sont à la limite de cette échelle changent d'emploi une fois par an ou deux afin d'indexer les salaires. Parce que c'est fondamentalement la seule façon si vous travaillez au bureau. La deuxième façon est le freelance avec accès à des marchés plus développés, bien qu'au final, si vous avez vraiment besoin de beaucoup d'argent, vous devez encore étendre votre arsenal de compétences.


Si vous êtes plus susceptible d'aider vos collègues, préparez-vous. Une fois que vous avez assez (pour la première embauche) pour apprendre une chose, alors avec ce que vous décidez d'entrer sur le marché pour la première fois, vous serez enroulé de pile en pile de technologie en technologie. Vous pouvez vous retrouver dans le rôle de devops, chef de projet, concepteur de produit (pas celui qui dessine), architecte et le diable sait qui d'autre. Vous gagnerez une expérience très diversifiée et vous aurez quelque chose à dire. Et si vous entrez dans une bonne équipe polyvalente avec un excellent produit intéressant, alors gardez-moi sept. Le problème, c'est que les projets se terminent, les entreprises font faillite, les patrons se moquent d'eux-mêmes et vous êtes sans travail, vous avez un marché du travail ouvert et vous n'avez pas besoin de lui, il a besoin de spécialistes étroits et fiables. Toutes les portes seront fermées. Eh bien, parce que même si vous passez par tous les entretiens techniques dans une spécialisation, ils vous diront que vous n'avez poli les boutons que six mois au cours des dernières années, et ils ont besoin d'un polisseur de boutons. Et puis, il s'avère que vous devez vous adresser au développeur principal ou supérieur, mais une déception - ils ne le prennent généralement pas dans la rue. La seule façon que je connaisse est de construire une marque personnelle. Peu importe que vous travailliez dans un bureau ou à distance sous contrat - faites quelque chose. Les références ne vous seront pas utiles en passant. Je connais jusqu'à présent deux options - assister à des conférences de l'industrie, présenter le chic en général et écrire un blog personnel. N'importe quoi, du moins n'importe quoi, mais commencer à le faire dès la première année à partir du moment où vous avez été embauché pour la première fois. C'est important.


Ici, oui, il y a une contradiction avec le marché du travail - ils veulent voir une chose à l'embauche, mais ensuite ils veulent travailler en équipe avec une autre.


À propos de la technologie et "quelle langue dois-je choisir?"


Ici, nous avons à nouveau l'échelle de gradation. Pas même une échelle, un espace multidimensionnel. Il y a des technologies à la mode dont on parle souvent lors de conférences, elles écrivent beaucoup dans les blogs et les réseaux sociaux. Il existe des technologies qui n'ont pas de concurrents, comme JavaScript et ses variantes de navigateurs Web. Il y a de vieux dinosaures sur lesquels beaucoup de choses sont écrites et cela doit être soutenu. Et entre ces points, il existe différentes intersections sous la forme de cas spécifiques.


Lorsque vous choisissez, vous devrez décider, et le plus tôt sera le mieux - pour réaliser que la pile que vous avez choisie ne vous limite pas très bien. Décidez ce que vous voulez - fiabilité, argent et une bonne base de connaissances, ou je ne sais même pas autre chose. Si le premier - il me semble préférable de choisir parmi ces dinosaures qui sont encore en vie et se développent bien. Comme je suis moi-même un passionné d'Internet, je peux dire qu'il existe deux technologies fiables. C # et Java. Les développeurs PHP peuvent être scandalisés, mais je suggère de laisser cette question au goût et à la couleur, pour ainsi dire ... La particularité est que les projets peuvent vivre et se développer pendant longtemps sans difficultés supplémentaires uniquement lorsqu'ils sont écrits dans des langages matures avec des outils suffisants pour structurer le code. Cette fois. Le deuxième choix sera un cadre spécifique. .Net ou Spring ou autre chose est possible. Ici, le critère est le suivant - il devrait être souvent trouvé, utilisé dans les grandes entreprises et les projets à long terme, et idéalement, il devrait être pratique de travailler. Par exemple, Spring Boot vous permet désormais de prototyper rapidement des services, ainsi que d'écrire des choses sérieuses avec une architecture très sophistiquée et de nombreuses fonctionnalités nécessaires à l'entreprise, et il les déploie immédiatement.


Au contraire, tout ce qui est «à la mode» - en règle générale, est très jeune, a une infrastructure faible ou naïve, mais la communauté de fans aux yeux brûlants est prête à vous vendre quelque chose juste par gentillesse. Le problème avec toutes ces technologies nouvelles ou peu utilisées est qu'elles n'ont pas suffisamment d'outils prêts à l'emploi - vous devrez probablement écrire vous-même une grande partie des fonctionnalités triviales, par exemple, l'autorisation via les réseaux sociaux. C'est en fait monstrueux. Une entreprise veut rarement payer de l'argent pour des vélos. Et puis vous devez toujours maintenir ce code. Des exemples? Pour Python, il n'y a pas un seul framework web à part entière (sauf pour Django, avec quelques réserves) avec lequel vous pouvez vivre et ne pas devenir fou en travaillant sur un projet pendant plus d'un an ou deux. Vos problèmes vont commencer tout de suite, et assez triviaux, comme l'importation cyclique de modules. Je suis désolé d'avoir contourné PHP, ils font beaucoup de choses dessus, mais il y a un point - je n'ai entendu aucune des grandes entreprises l'utiliser, et pas un fork lourdement refait, comme l'a fait Facebook.


Les lignes séparées sont une sorte de monopole. Swift pour l'écosystème Apple, qui crée lui-même ses propres cadres de développement d'applications. Google avec Android (d'ailleurs, également Java / Kotlin). Langage R et environnement de développement pour l'analyse des données. JavaScript comme seul langage de programmation fonctionnant dans les navigateurs.


Avec Swift, tout semble clair. Il y a peu de programmeurs, ils paient bien (selon les rumeurs), le langage se développe rapidement, il est à la mode, mais il diffère du battage médiatique en ce qu'il est rétrocompatible avec le dinosaure ObjC et tout ce qui a été écrit dessus depuis de nombreuses années. Apple est également derrière et développe rapidement des cadres de plate-forme. De plus, il peut être compilé dans d'autres systèmes et semble promettre une compatibilité descendante avec C / C ++. Si cela se produit, je ne sais même pas ... il y aura quelque chose ou très bien, ou autre chose. Parce que tant de choses ont déjà été écrites en C / C ++ que vous pouvez tourner la tête, c'est une énorme ressource.


Javascript La langue comme langue. Beaucoup le considèrent comme une langue inférieure. Il a beaucoup de problèmes, c'est vrai. Ce sont principalement des blessures à la naissance qui sont presque impossibles à surmonter sur le plan technique. Il peut être utilisé pour les applications serveur, mais je ne recommanderais pas de suivre ce chemin. NodeJS est un pur battage médiatique sur lequel son créateur lui-même a directement dit que des erreurs fondamentales ont été commises lors de sa création. En ce qui concerne le développement du navigateur, je recommanderais de prendre ce qui est le plus utilisé actuellement, c'est React en collaboration avec Redux. Juste beaucoup. Il est nécessaire partout. Vous trouverez un travail. Bien que vous ne soyez que dans le navigateur, même si vous êtes plein, un serviteur d'un gril en céramique sera toujours suffisant sur le filet.


En conséquence, vos conclusions personnelles


Si je devais resélectionner, je prendrais un tas de Java / Spring + React. Bien sûr, le printemps n'est plus le printemps maintenant, et il en va de même pour React, mais les critères sont les mêmes.


Ce qui me touche personnellement dans cette pile. Il est relativement facile de «vendre» à un client React, il est bien connu de tous, car il s'agit d'un battage médiatique qui, en même temps, a une infrastructure envahie et est fermement ancré sur le marché, il peut donc être utilisé dans des projets sérieux. Dans le même temps, il n'y a pas de contradictions compliquées concernant le développement et l'avenir de la programmation par navigateur - elle est orientée composants, la communauté est bien consciente de la programmation réactive, qui est maintenant assez pertinente, et l'utilise. Les nouvelles versions de React ne cassent pas l'ancien code sans avertissements; les règles de composition des applications ne changent pas radicalement. On ne peut pas dire d'Angular qui a déjà terni sa réputation à plusieurs reprises (j'espère que maintenant tout va bien et plus de tempêtes). Eh bien, sauf pour Vue, tout le reste vaut mieux ne pas toucher du tout, il me semble.


Java, d'autre part, fournit un vaste champ de solutions prêtes à l'emploi, et presque toute «liste de souhaits» de votre client ou employeur peut être, si ce n'est facile, mais au moins ne pas être mise en œuvre à travers une clôture à béquille. Je crois sincèrement qu'avec .Net et surtout le développement de la plateforme multiplateforme .Net Core, tout est aussi bien, mais personnellement, je n'aime pas vraiment C #, eh bien, il s'est avéré.

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


All Articles