Maison  >  Article  >  Comment devenir un excellent ingénieur full-stack en autodidacte ?

Comment devenir un excellent ingénieur full-stack en autodidacte ?

阿神
阿神original
2017-03-10 14:33:427934parcourir

Comment devenir un excellent ingénieur full-stack en autodidacte ?

Pour la plupart des diplômés du secteur informatique et les nouveaux arrivants sur le marché du travail. Les questions enchevêtrées sont de savoir comment choisir une orientation de carrière, comment devenir un excellent ingénieur logiciel et comment améliorer rapidement ses compétences. Aujourd'hui, notre site php chinois est là pour vous parler de comment devenir un excellent ingénieur full stack.

Qu'est-ce qu'un ingénieur full stack

Le terme ingénieur full-stack est apparu pour la première fois dans un article de l'ingénieur Facebook Calos Bueno - Full Stack (nécessité de contourner le pare-feu). Il définit un ingénieur full-stack comme un généraliste technique possédant une compréhension approfondie des implications en matière de performances. Depuis lors, le terme full stack est devenu populaire. J'ai vu des ingénieurs full stack, des concepteurs full stack, des opérations et maintenance full stack, des spécialistes du marketing full stack, etc. Sur les sites de recrutement ciblant les talents Internet comme « Lagou » et « 100Offer », les ingénieurs full-stack sont devenus un poste de recrutement prisé, et leurs niveaux de salaires sont également supérieurs à ceux des postes d'ingénieurs de développement général. Alors, qu'est-ce qu'un ingénieur full stack, et comment devrions-nous définir un ingénieur full stack ?

L'Encyclopédie Baidu définit un ingénieur full-stack comme suit : "Une personne qui maîtrise une variété de compétences et peut utiliser plusieurs compétences pour réaliser des produits de manière indépendante." Je pense que cette définition n'est pas assez complète. Je pense qu'un ingénieur full-stack devrait être à la fois un ingénieur de développement senior, un architecte et un programmeur possédant des compétences en développement agile. La compréhension du développement logiciel par les ingénieurs full-stack a souvent évolué. Ils ont laissé de côté des technologies spécifiques et comprennent que les mises à jour technologiques sont toujours plus rapides que la théorie informatique. Ils se concentrent donc sur le renforcement de leurs compétences de base, en prêtant attention et en étant disposés à mettre en pratique d'autres. technologie. Les ingénieurs full-stack sont souvent des experts dans un domaine, mais ils maîtrisent également et savent utiliser d’autres langages, outils et technologies dans les bonnes situations.

La valeur d'un ingénieur full stack

Au fil du temps, le rôle et la valeur des ingénieurs full-stack se sont confirmés dans de plus en plus de produits ou de projets. Jetons donc un coup d’œil à ce qu’un ingénieur full stack signifie pour un individu ou une entreprise.

● Grande amélioration de la valeur personnelle et de la liberté —— J'ai lu quelques articles présentant les ingénieurs full-stack, dont la plupart soulignent l'importance des ingénieurs full-stack La valeur de l'entreprise et de l'équipe. Ce que je veux dire, c'est qu'aucun bon ingénieur full-stack ne travaille dur pour apprendre diverses technologies en raison des avantages que cela apportera à l'entreprise. Les gens que je connais sont tous des gens qui font preuve d’ingéniosité, recherchent constamment des compétences plus élevées et se consacrent à fabriquer de meilleurs produits. Et lorsque vous deviendrez un véritable ingénieur full-stack, vous ressentirez une augmentation sans précédent de votre valeur personnelle et de votre liberté technique. Imaginez simplement que lorsqu'une bonne idée apparaît, vous pouvez la réaliser seul ou diriger une équipe et l'améliorer continuellement.

● Réflexion globale et prospective technique —— Grâce à la connaissance de divers liens de développement et domaines techniques, les ingénieurs full-stack ont ​​souvent une meilleure vision globale et technologique tourné vers l'avenir, capable de choisir la bonne technologie dès le début du projet et de bien contrôler la direction globale d'un projet. Les projets modernes sont souvent très complexes et les ingénieurs full-stack peuvent souvent apporter une assurance technique et qualité, devenant ainsi un élément clé de la réussite d'un projet.

● Réduire les coûts de communication —— J'entends souvent les concepteurs se plaindre que les ingénieurs front-end ne peuvent pas restaurer leurs conceptions à 100 %, et les ingénieurs front-end se plaignent du back-end -end Les données renvoyées par les ingénieurs depuis l'interface ne peuvent pas être utilisées directement, et les ingénieurs back-end se plaignent également du fait que les exigences soulevées par les chefs de produit ne peuvent pas du tout être satisfaites. À mesure que le nombre de membres de l’équipe augmente, les coûts de communication augmenteront inévitablement en raison de leurs différentes compétences. En plus d'être capables de réaliser de manière indépendante le développement front-end et back-end (et même la conception), les ingénieurs full-stack peuvent efficacement éviter les risques techniques et filtrer les demandes déraisonnables s'ils peuvent intervenir dès les premières étapes du projet, réduisant ainsi considérablement réduire la communication en raison de différents problèmes techniques et réduire considérablement les risques du projet.

● Start-ups - Nous sommes arrivés à une époque où tout le monde crée une entreprise et où tout le monde innove. Les start-ups poussent également comme des champignons après la pluie. Les start-ups ont souvent une bonne idée, mais elles se heurtent souvent à l'embarras de « manquer juste un programmeur ». Ce que je veux dire, c'est qu'ils ne manquent pas réellement de programmeurs, mais il leur manque un ingénieur full-stack. Les start-ups disposent souvent de fonds limités, et un excellent ingénieur full-stack peut les aider à lancer leurs produits au moindre coût et dans les plus brefs délais. Il s'agit de l'étape la plus critique pour que les startups survivent, obtiennent plus d'investissements et même deviennent une « licorne ».

Arbre de compétences d'ingénieur full stack

Lorsque vous voyez cela, vous devez vous demander : de quelles compétences avez-vous besoin pour devenir un ingénieur full-stack ? L'image ci-dessous provient de Medium. L'auteur a divisé tous les aspects impliqués dans le développement de logiciels en couches et a utilisé les principales technologies contenues dans chaque couche comme composants pour créer ce diagramme technologique complet.

Comment devenir un excellent ingénieur full-stack en autodidacte ?

D'après l'image ci-dessus, nous pouvons facilement voir à quel point le système technologique actuel est énorme. De nouvelles technologies sont ajoutées à ces couches chaque année et les technologies existantes sont constamment mises à jour. Par conséquent, il est tout simplement impossible de maîtriser toutes les technologies, et devenir un ingénieur full-stack ne nécessite pas de maîtriser réellement toutes les technologies. Vous devez concentrer votre énergie sur les compétences clés en développement et sur certaines compétences supplémentaires qui doivent être maîtrisées.

Compétences clés en développement (hard skills) :

Git/GitHub - Vous devez maîtriser l'utilisation de Git pour gérer et partager votre code. Git est répertorié comme la première compétence clé car il ne s'agit pas seulement d'un outil de gestion de code, mais également d'une méthode de travail recommandée. Il vous permet de développer n'importe où et de gérer efficacement des projets de toute taille. Grâce à Git, vous pouvez également mener une collaboration distribuée avec d'autres membres de l'équipe, améliorant ainsi considérablement l'efficacité du travail. Grâce à GitHub, vous pouvez également vous connecter avec tous les développeurs du monde.

Quantity Au moins un langage de programmation - Vous devez maîtriser au moins un langage de programmation, JAVA, PHP , C#, Python, Ruby, Perl, etc., car la plupart de vos processus métier de base doivent être écrits en cette langue. Vous devez maîtriser la syntaxe de ce langage et vous devez également savoir très bien comment concevoir, concevoir, mettre en œuvre et tester des projets basés sur ce langage. Si vous choisissez JAVA, vous devez alors maîtriser la conception et le développement orientés objet, l'application de modèles de conception, le développement de divers composants basés sur J2EE, etc.

● Utiliser des frameworks de développement et des bibliothèques tierces - Les langages de développement populaires sont généralement accompagnés d'excellents frameworks de développement, tels que Spring, MyBatis et Hibernate de JAVA , Django de Python, thinkphp de PHP, yin, express de nodeJs, etc. Ces frameworks de développement ont tendance à suivre certaines des meilleures pratiques en matière de développement de logiciels et sont créés par de très bons développeurs. Une utilisation compétente de ces frameworks de développement ou de bibliothèques tierces peut éviter de réinventer la roue et rendre votre travail plus efficace avec la moitié de l'effort. Ce qui est plus important, c'est que ces excellents frameworks ou bibliothèques tierces sont généralement maintenus en permanence, ce qui constitue la garantie la plus efficace pour la qualité, la sécurité et la commodité de votre produit ou projet.

● Technologie front-end - La raison pour laquelle la technologie front-end est indépendante en tant que technologie clé est qu'elle devient de plus en plus importante dans le processus de développement des projets d'aujourd'hui et les produits deviennent de plus en plus importants. En plus de remplir les fonctions requises, la facilité d'utilisation d'un produit (expérience utilisateur) devient également un critère important pour juger du succès d'un produit. Et tout dépend de la mise en œuvre de la technologie front-end. Vous devez maîtriser au moins les technologies front-end de base telles que HTML5, CSS3, JavaScript, et apprenez davantage JQuery, LESS, SASS, AngularJS ou REACT et d'autres frameworks frontaux ou bibliothèques tierces.

● Base de données et cache - Tout produit ou projet nécessite une base de données pour stocker les données. En tant qu’ingénieur full-stack, vous devez également maîtriser au moins une ou deux bases de données et savoir interagir avec les bases de données. Les bases de données actuellement populaires incluent principalement MySQL, MongoDB, Redis, Oracle, SQLServer, etc. MongoDB, en tant que base de données documentaire, est de plus en plus utilisée dans les produits Internet. Pour les projets à plus grande échelle, je recommande toujours d'utiliser MySQL ou Oracle commercial comme base de données principale. Les bases de données en mémoire telles que Redis peuvent être utilisées pour la mise en cache afin d'améliorer les performances du système.

Quantity Capacité de conception de base - La plupart des articles ou discussions sur les ingénieurs full-stack ne citent pas la capacité de conception comme une compétence clé pour les ingénieurs full-stack, mais je pense cette compétence est très importante. J'ai été invité à évaluer certains produits développés par des ingénieurs logiciels eux-mêmes. Ces produits ont de bonnes idées et une mise en œuvre fonctionnelle, mais à première vue, ce ne sont pas de bons produits. Les utilisateurs n'ont aucune envie de les utiliser car la conception de ces produits est également mauvaise. , et souvent ces développeurs ignorent complètement l'existence de problèmes, tels que des couleurs incohérentes, une mise en page désordonnée, des icônes inappropriées, etc. Les compétences de base en conception que je recommande ne nécessitent pas que vous soyez capable de dessiner des images étonnantes et de créer de merveilleux effets visuels comme un designer professionnel, mais vous devez maîtriser les principes de conception d'interface utilisateur les plus élémentaires, tels que la correspondance des couleurs, la mise en page de base et avoir une bonne capacité esthétique et quelques compétences de base en conception d'interface utilisateur, afin que les produits que vous fabriquez ne soient pas trop mauvais.

Après avoir maîtrisé ces compétences de base, vous pouvez apprendre d'autres technologies en fonction de vos intérêts et de votre orientation de développement. Par exemple, si vous êtes intéressé par le traitement des données, vous pouvez apprendre la technologie du Big Data. Si vous êtes plus intéressé par l'Internet mobile, vous pouvez apprendre Swift et développer des applications iOS. Les connaissances sont toujours liées, et après avoir acquis de bonnes bases techniques, il sera très facile d'acquérir d'autres connaissances.

Compétences supplémentaires (soft power) :

La communication —— Sauf si vous Lorsque vous travaillez sur des projets personnels ou sur des projets plus vastes, vous devez toujours communiquer avec des collègues, des parties prenantes ou des clients. Une communication réussie est souvent la première étape pour obtenir des besoins concrets et renforcer la confiance de l'équipe. Pendant le projet, vous devez utiliser une communication efficace pour déterminer le plan, éliminer les malentendus et travailler avec les membres du projet pour aller de l'avant. De bonnes compétences en communication vous rendront plus influent au sein de l’équipe et recevront plus de respect et d’attention.

● Capacité à résoudre des problèmes - Un ingénieur full-stack est avant tout un ingénieur Il doit maîtriser les méthodes d'ingénierie pour résoudre les différents problèmes rencontrés. Presque tous les moments forts de ma carrière sont liés à la résolution de problèmes, allant de la fourniture d'une solution architecturale pour l'ensemble du projet à la résolution des problèmes de production le plus rapidement possible. Il existe en fait de nombreuses façons d’améliorer les compétences en résolution de problèmes, mais aucune n’est plus efficace que la pratique. Les excellents ingénieurs que j'ai rencontrés sont souvent capables de fournir la bonne solution dans les plus brefs délais, en se basant sur leur intuition, mais ce que vous ne voyez peut-être pas, c'est que derrière cela se cache l'expérience accumulée grâce à beaucoup de pratique.

● Gestion du temps - En tant qu'ingénieur full-stack, vous pouvez être amené à assumer différents rôles dans différents projets en même temps. Vous devez répartir votre temps de manière raisonnable pour vous assurer que tous les travaux sont livrés à temps. Également pendant votre temps libre, vous devez également consacrer du temps à lire et à apprendre, et vous pouvez également avoir votre propre projet parallèle. Il est donc important d’allouer du temps de manière raisonnable et de planifier certaines tâches clés. Vous ressentirez peut-être une certaine pression, mais cela stimulera votre créativité et permettra à tout de se dérouler sans problème.

Quantity Curiosité - Être curieux de n'importe quel travail et être prêt à continuer à apprendre et à s'améliorer sont les caractéristiques communes des ingénieurs exceptionnels. Le domaine du développement de logiciels rassemble les personnes les plus intelligentes du monde, et divers types de technologies, de produits et de cadres évoluent chaque jour et émergent sans cesse. Les excellents ingénieurs full-stack doivent apprendre en permanence à comprendre ces changements et à suivre l’évolution du domaine informatique. Les gens me demandent souvent si ce sera fatiguant de continuer à apprendre alors qu’il y a toujours de nouvelles choses dans l’industrie informatique. Ce que je veux dire, c'est que pour les personnes qui font de l'apprentissage continu une habitude de vie, apprendre de nouvelles choses ne deviendra pas un fardeau, mais un plaisir.

● Leadership - D'excellents ingénieurs full-stack se voient souvent confier le rôle de leader technique ou même de chef de projet. Être manager ne signifie pas dominer les autres ou laisser les autres faire les choses à votre place. Les managers doivent comprendre les forces et les faiblesses des membres de votre équipe et savoir comment maximiser le rendement de l'équipe avec une attitude de service. J'ai vu de très bons ingénieurs qui étaient rebutés lorsqu'on leur confiait la tâche de gérer une équipe, préférant souvent travailler seuls. Mais je tiens à dire que devenir manager vous rendra plus sage, plus fiable et digne de confiance, et apportera également de grands avantages à votre future carrière. Alors, lorsqu’une opportunité se présente, acceptez-la comme un défi et ne la rejetez pas.

Lors du recrutement, les responsables techniques expérimentés examinent souvent en même temps les capacités techniques des candidats et les compétences supplémentaires mentionnées ci-dessus. Pour le recrutement de programmeurs juniors, ces compétences supplémentaires sont souvent plus valorisées par les excellentes entreprises technologiques. Les compétences de développement sont votre force dure, tandis que les compétences supplémentaires peuvent être considérées comme votre puissance douce. Ce n'est qu'en possédant les deux compétences que vous pourrez devenir un excellent ingénieur full-stack.

Les excellents ingénieurs full-stack doivent sortir

Un excellent ingénieur full-stack ne doit pas se limiter à son propre travail. Il doit sortir et être exposé à différentes technologies, partager son expérience et ses idées et se faire plus d'amis. Voici quelques-unes de mes pratiques.

Quantity Participez à des conférences technologiques - Des sites Web tels que InfoQ, CSDN, GITC, Youzhu et TED organiseront régulièrement diverses conférences technologiques. Lors de ces conférences, vous pourrez non seulement entendre les meilleures pratiques techniques dans leurs domaines respectifs présentées par des experts techniques, mais également rencontrer de nombreux amis de l'industrie. Cela vous sera très utile pour élargir vos idées et élargir votre cercle social technique. Par conséquent, si l’entreprise ne prend pas les dispositions nécessaires pour que vous assistiez à ces conférences technologiques, achetez vos propres billets pour y assister, ce qui constitue un investissement en vous-même.

● Donner des discours publics - Un ingénieur full-stack n'a pas besoin d'être un orateur public, mais en tant que membre essentiel de l'équipe, il doit le faire au sein de l'équipe Donner des conférences sur la technologie, la gestion et d'autres aspects. Si vous êtes un expert technique prêt à partager, vous pouvez également essayer d'enregistrer des cours personnels (vidéo ou audio) et partager vos compétences et connaissances sur des MOOC, NetEase Classroom, Youku ou divers médias comme Litchi, Himalaya, etc. t Vous ne voulez pas l'essayer parce que vous n'êtes pas un expert. Croyez-moi, le contenu que vous créez avec soin sera reconnu par tout le monde et gagnera un grand nombre de fans.

● Blog personnel —— Faites un petit progrès chaque jour, et vous ferez un saut qualitatif en un an. Les excellents ingénieurs full-stack savent comment accumuler des connaissances, et les blogs technologiques sont un bon moyen d'enregistrer leurs pratiques et réflexions habituelles, et d'ajouter des balises pour faciliter les révisions futures. La chose la plus intéressante est que lorsque vous continuez à enregistrer et à mettre à jour votre blog, les programmeurs du monde entier vous connaîtront également à travers votre blog.

● Participer à des activités hors ligne —— Contrairement au passé où les programmeurs restaient toujours à la maison, les jeunes programmeurs d'aujourd'hui sont plus disposés à partager et à communiquer. De nombreux sites Web organiseront également des activités hors ligne sur différents sujets techniques. Dans ces activités, vous pourrez entendre le partage de certains experts techniques, et vous pourrez également rencontrer de nombreuses personnes aussi passionnées par la technologie que vous. De nombreux membres de l'équipe des projets open source sur lesquels je travaille actuellement ont été rencontrés grâce à ces activités hors ligne.

Devenir un ingénieur full-stack ne s’obtient pas du jour au lendemain. Vous devez établir des bases techniques solides, renforcer vos compétences de base et continuer à apprendre. Je crois qu'un jour vous serez comme moi et ressentirez la joie d'utiliser librement la technologie pour développer d'excellents produits.

Articles connexes :

Feuille de route d'auto-apprentissage PHP de l'entrée à l'avancée

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn