Ces dernières années, la création d'applications et de sites web optimisés est devenue plus coûteuse et, parallèlement, la demande de développeurs de qualité a également augmenté.
D'autre part, les développeurs enrichissent leur ensemble de compétences avec plus d'une compétence de programmation afin d'être plus compétitifs sur le marché, en particulier les développeurs fullstack, qui sont toujours très demandés.
La question demeure : Où trouver d'excellents développeurs fullstack et comment les embaucher efficacement ? Tout d'abord, vous commencez par une annonce gagnante Fullstack Developer job ad ad avant toute autre chose.
Commençons.
Qu'est-ce que le développement fullstack ?
Le développement complet englobe le développement d'applications frontales (côté client) et dorsales (côté serveur). Les développeurs Fullstack travaillent à la conception d'applications web complètes, de sites web et d'autres logiciels à partir de zéro. Ils déboguent, planifient, codent et gèrent le processus de développement. D'une certaine manière, ils jouent le rôle d'un chef d'équipe qui supervise tous les aspects et toutes les étapes du développement.
De nombreuses technologies, langages de programmation et cadres sont liés au développement web complet et sont divisés en frontend et backend.
Décomposons cela.
Technologies frontales
Le frontend fait référence à la partie de l'application qui est entièrement visible par l'utilisateur. L'utilisateur manipule les éléments du frontend, et cette interaction se traduit par une UX (expérience utilisateur) médiocre, bonne ou excellente - en fonction de sa qualité, de sa rapidité et de son efficacité. Mais un bon développeur fullstack couvrira et optimisera ces trois aspects.
Voici quelques-unes des langues utilisées pour créer l'application frontale :
- HTML signifie HyperText Markup Language (langage de balisage hypertexte) et CSS signifie Cascading Style Sheets (feuilles de style en cascade). Ils forment une combinaison parfaite pour la création de sites web et d'une expérience utilisateur transparente sur de nombreuses plateformes, appareils et navigateurs. HTML indique au navigateur ce qu'il doit afficher, et CSS lui indique comment le faire.
JavaScript : JavaScript est un langage de script populaire permettant de créer, de placer et de contrôler plusieurs éléments interactifs sur un site web. Le paradigme central JavaScript combine ses nombreux cadres et bibliothèques (Node.js, Vue.js, Next.js) pour créer des applications, des sites web et d'autres types de logiciels à la pointe de la technologie, selon les besoins. Ce langage est largement applicable et constitue une partie essentielle du processus de développement d'applications, tant au niveau de la partie frontale que de la partie dorsale.
TypeScript : Si vous supprimez les types, TypeScript devient rapidement JavaScript. Ces deux langages partagent la même architecture car TypeScript est construit au-dessus de JavaScript, et si un développeur maîtrise l'un, il sera compétent dans l'autre.
Cadres frontaux
Les langages frontaux s'appuient sur la puissance des frameworks et des bibliothèques pour améliorer les fonctionnalités des applications et rendre les développeurs plus productifs à long terme. Certains des cadres les plus remarquables pour le développement frontal sont :
-
Angular : Globalement, Angular est devenu davantage une plateforme pour construire des applications robustes, dynamiques et performantes à grande échelle, améliorer la communication côté client et s'assurer que les mises à jour s'effectuent régulièrement.
-
React.js : En tant que framework JavaScript, React.js est utilisé pour construire des interfaces utilisateur intuitives et est l'un des frameworks frontaux les plus populaires. Il s'agit d'un logiciel libre qui est surtout connu pour gérer la couche de visualisation de l'application sans en compromettre la qualité, la vitesse et l'efficacité.
-
jQuery : L'une des principales fonctions de jQuery est de simplifier l'échange de données entre les documents HTML, c'est-à-dire les interactions entre le DOM (Document Object Model) et JavaScript. Cela permet d'améliorer les animations du DOM et de prendre en charge le développement JavaScript inter-navigateurs.
-
Vue.js : Vue.js représente un cadre JavaScript construit au-dessus de JavaScript, CSS et HTML. Les développeurs utilisent ce cadre pour créer des interfaces utilisateur simples ou complexes.
Technologies dorsales
Le backend ou côté serveur d'une application ou d'un site web gère de nombreux éléments, tels que l'intégration correcte de l'API, la gestion de la base de données et la gestion des requêtes, entre autres. Certains des principaux langages de programmation, cadres et bibliothèques utilisés pour le développement de backend sont :
-
PHP: Considéré comme l'un des langages de script côté serveur les plus populaires, PHP est largement utilisé pour le développement de sites web. Les développeurs aiment l'utiliser pour créer du contenu dynamique et lire, écrire et supprimer facilement des fichiers sur le serveur, crypter des données, gérer les autorisations des utilisateurs, etc.
-
C++ : C++ est un langage de programmation flexible, orienté objet, qui optimise les performances des sites web tout en laissant intacte l'interface utilisateur.
-
Python : Langage de programmation populaire, Python est largement utilisé pour sa simplicité, sa syntaxe facile à apprendre et son intégration transparente à de multiples systèmes, navigateurs et appareils.
-
Java: Un développeur fullstack expérimenté possède idéalement une excellente connaissance de Java et de l'écriture de code Java avec ce langage orienté objet et évolutif.
-
Node.js : Il existe plusieurs définitions de ce qu'est Node.js, allant d'un cadre à un environnement d'exécution, mais tout se résume à une extension JavaScript pour la création, le test et l'exécution de services backend.
Cadres backend
Les frameworks backend sont une partie cruciale du développement fullstack, et certains des plus populaires sont :
-
Django : Django est un framework Python open-source pour la conception et le développement de sites web. Il est rapide et utilise le modèle architectural MTV (modèle-template-view).
-
Laravel : Il s'agit d'une API dorsale fiable pour Next.js, les applications mobiles et autres applications frontales. Et, Laravel est un framework PHP qui utilise le modèle architectural MVC.
-
RoR : L'abréviation signifie Ruby on Rails, et il s'agit d'un cadre robuste basé sur le langage Ruby. Il s'appuie sur JSON et XML pour le transfert de données et sur HTML, CSS et JavaScript pour stabiliser l'UI (interface utilisateur).
-
Spring : Spring](https://proxify.io/hire-spring-developers), l'un des cadres de base de Java, se distingue par une syntaxe simple et une logique opérationnelle puissante pour les opérations les plus complexes. Il aide les développeurs à créer des applications fiables et rapides grâce aux POJO (objets Java).
-
Express.js : Express.js représente un cadre de développement web Node.js pour les applications mobiles et web. Il rend les pages dynamiquement, définit les tables de routage et effectue diverses actions HTTP.
Quand avez-vous besoin d'un développeur Fullstack ?
Les développeurs fullstack sont très demandés car ils portent plusieurs chapeaux en couvrant à la fois les aspects frontaux et dorsaux du développement. Ainsi, ils apportent d'excellentes compétences en matière de résolution de problèmes à leur travail.
Mais vous avez besoin d'un développeur Fullstack si vous voulez un produit créé efficacement, avec un minimum d'agitation, mais qui est hautement fonctionnel - et les développeurs le font en grande partie par eux-mêmes sans soutien externe significatif.
Un développeur Fullstack connaît l'ensemble du processus de développement, du point de départ au point d'arrivée, ou de l'idée initiale au prototype fonctionnel. Vous avez besoin d'un expert technique comme celui-ci parce qu'une personne polyvalente est un excellent investissement pour toute entreprise. Embaucher un développeur fullstack au lieu de plusieurs experts techniques maîtrisant des technologies beaucoup moins importantes vous fera gagner du temps et de l'argent à long terme.
De plus, lorsque vous engagez un développeur fullstack de qualité, il supervisera l'ensemble du flux de travail de l'engagement de manière indépendante et réduira la probabilité d'une mauvaise communication dans les étapes strictes et cruciales du cycle de développement de l'application.
Récapitulons:
- Ils sont des experts techniques polyvalents, compétents dans les domaines du frontend et du backend.
- Ils fournissent un code fiable et robuste
- Ils ont plusieurs années d'expérience dans une variété de domaines et de niches.
- Ils peuvent facilement "changer de rôle" à la volée (senior, débogueur, chef de projet, etc.).
- Ils sont des experts techniques rentables.
- Ils ont une bonne connaissance du passé, du présent et de l'avenir potentiel tendances en matière de développement.
Où trouver des développeurs fullstack ?
Vous pouvez trouver des développeurs fullstack à différents endroits, notamment sur les plateformes de freelancing, les médias sociaux, les référentiels de code, les recommandations de bouche-à-oreille et les sites web de programmation. Cependant, avec ces options, vous devez effectuer toutes les recherches vous-même ou avec votre équipe de recruteurs internes.
Supposons plutôt que vous souhaitiez gagner du temps et éviter le risque de prolonger et de faire traîner l'embauche. Dans ce cas, vous pouvez toujours opter pour des services qui vous mettent en relation avec des développeurs prêts à travailler en quelques jours, comme Proxify, où nous nous portons garants des antécédents des développeurs et de leurs connaissances techniques, afin que vous n'ayez pas à tout faire vous-même.
Interviewer des développeurs Fullstack
Voici une liste de contrôle des compétences techniques qu'un développeur Fullstack doit connaître, ainsi que des questions d'entretien et des réponses que vous pouvez utiliser pour l'évaluation.
Connaissance générale de la pile complète
Un développeur complet expérimenté connaît les tenants et les aboutissants des structures de données, des algorithmes, de la théorie des langages de programmation et des sujets liés aux réseaux tels que les modèles de protocole OSI/RM et TCP/IP.
En outre, ils sauront travailler avec au moins trois langages de programmation différents et pourront présenter des exemples concrets de missions réalisées dans le passé.
Enfin, ils doivent tester et déboguer efficacement.
Compétences techniques
En bref, ils devront combiner certaines (ou la majorité) des compétences suivantes :
- HTML, CSS
- JavaScript, TypeScript
- React.js, Angular, Vue.js, Next.js, jQuery
- Node.js, Express.js
- Java, Spring
- Python, Django, Flask
- C++, C#
- PHP, Laravel
- Perl
- Ruby, Ruby on Rails
Mais ils doivent avant tout faire preuve d'une connaissance exceptionnelle en :
- Comment fonctionnent HTML et CSS, séparément et ensemble
- Code HTML à un niveau superficiel
- La plupart des frameworks JavaScript par cœur
- Java et la plupart de ses frameworks (Spring, Spring Boot)
- Connaître parfaitement les frameworks de Python (Django, Flask)
C++
- Bases de données (telles que MongoDB, PostgreSQL, MySQL)
- Systèmes de contrôle de version (tels que Git et GitHub)
- Plateformes d'hébergement en nuage (telles que Heroku, AWS, Google Cloud, et Microsoft Azure).
Questions d'entretien et réponses pour l'évaluation des développeurs fullstack
Nous pouvons diviser les questions en générales et spécifiques.
Questions générales
1. Quels sont les langages de programmation avec lesquels vous avez le plus d'expérience ?
Exemple de réponse: J'ai le plus d'expérience dans la création d'applications en Python, Django et Vue.js, mais j'ai également une expérience significative en JavaScript, SQL et Rust. Néanmoins, j'apprécie l'indépendance vis-à-vis du système d'exploitation qui accompagne cette pile globale, car je peux toujours être sûr que mes applications seront compatibles avec les systèmes d'exploitation les plus populaires aujourd'hui.
2. Quel est votre langage de programmation préféré ou le plus fréquemment utilisé ?
Remarque : ici, l'examinateur doit garder l'esprit ouvert quant aux réponses du candidat. Le développeur peut suggérer un langage de programmation différent de celui que l'interviewer avait en tête.
Exemple de réponse : Depuis que j'ai commencé, j'aime travailler avec Python. Il possède une syntaxe très intuitive et une courbe d'apprentissage douce (simple à apprendre, difficile à maîtriser), et il offre une variété de bibliothèques et de cadres si vous souhaitez étendre les possibilités de ce que vous pouvez faire sans compromettre la qualité de l'application finale.
Il est difficile de choisir un seul langage de programmation pour le développement complet, c'est pourquoi j'ajouterais également Node.js et C#. Node.js est idéal pour l'évolutivité, l'amélioration des performances et la rentabilité. En même temps, C# accélère le processus de développement, travaille sur l'évolutivité et est simple à maintenir. Pour un développeur fullstack, tous ces avantages se combinent pour rendre notre travail plus accessible et plus efficace pour un résultat superbe.
3. Quelles sont les technologies qui vous permettraient de créer une application à partir de zéro ?
Exemple de réponse: En ce qui concerne le développement côté client, je préfère les bases, c'est-à-dire HTML, CSS, JavaScript, et peut-être TypeScript. Pour résoudre les questions relatives aux bases de données, MySQL devrait faire l'affaire. Pour les détails, je préfère utiliser Python avec Django ou la pile LAMP pour les projets plus complexes. Je m'appuie également sur Git et Github pour faciliter la synchronisation avec d'autres développeurs fullstack.
4. Quelles sont les tendances récentes en matière de développement fullstack qui vous ont surpris ?
Exemple de réponse: Je suis fasciné par l'essor (et la chute potentielle) des NFT (tokens non fongibles). Dans le passé, la programmation et l'art étaient généralement considérés comme deux disciplines distinctes. De nos jours, il semble que les frontières deviennent de plus en plus floues. Par exemple, pour créer une collection NFT, vous devez être un bon programmeur avec une touche artistique unique. Le monde des NFT (et des crypto-monnaies en général) pourrait soit décoller, soit s'effondrer de manière spectaculaire sans avertissement, ce à quoi je pense de temps en temps.
Par ailleurs, il existe également des mentions dignes d'intérêt telles que l'IA qui introduit de nombreux nouveaux outils qui aideront (presque) tout le monde à faire son travail de manière beaucoup plus efficace qu'auparavant.
5. Y a-t-il eu des cas où vos collègues ont commis une erreur de codage ? Qu'avez-vous fait ?
*Remarque : l'enquêteur doit être prêt à entendre la réponse possible du développeur, car il s'agit d'une question d'opinion personnelle.
Exemple de réponse : Oui. Un jour, je travaillais sur un engagement JavaScript avec un collègue, et le code ne se compilait pas correctement. J'ai vérifié manuellement et j'ai constaté qu'ils avaient utilisé des parenthèses alors qu'ils auraient dû utiliser des crochets, mais j'ai décidé d'aider à corriger l'erreur.
6. Comment créez-vous des applications web adaptées au référencement ?
Exemple de réponse: J'utilise un excellent langage de base (Python) associé à un type de framework actuel (Django) pour gagner en efficacité et en rapidité. La création d'applications web signifie que vous n'avez pas le luxe de "thésauriser" des ressources inutilisées qui prennent de l'espace inutilement, ce qui ralentit l'ensemble du flux de travail. Le référencement est une question de temps de chargement rapide (les utilisateurs quittent généralement le site s'il ne se charge pas en deux ou trois secondes), c'est pourquoi j'essaie d'utiliser une approche légère et de résoudre les problèmes de référencement avant que l'engagement ne commence.
7. Comment déboguer des programmes difficiles ?
Exemple de réponse : Une méthode que j'utilise régulièrement (et qui, à mon avis, est plus efficace que ce que les développeurs lui accordent généralement) est la méthode dite du "commentaire". Lorsque je soupçonne qu'un morceau de code erroné interfère avec le reste du flux de travail, je commente ce code spécifique et recompile l'engagement. Si le problème persiste, je passe à des débogueurs basés sur un navigateur pour les projets web (Firefox et Chrome) ou à des débogueurs basés sur le bureau pour les projets Windows (Visual Studio Debugger).
8. Quel est un défi courant dans le développement fullstack et quelle est la meilleure approche pour le résoudre ?
Exemple de réponse : Une réponse évidente est de parvenir à un équilibre entre le frontend et le backend et de bien les gérer. Cela peut être difficile à réaliser car différents développeurs travaillent sur d'autres éléments du même engagement, la synchronisation entre les membres de l'équipe est donc la raison de cette situation.
9. Quelle est la meilleure façon d'optimiser les requêtes SQL ?
Exemple de réponse: Pour optimiser ces requêtes, nous devons reconnaître les meilleures techniques pour améliorer les performances de la requête SQL. Voici quelques-unes des meilleures techniques :
- Requête SELECT au lieu de SELECT*
- Indexation
- Alias de tableau
- Peu de JOINs utilisés
- Sous-requêtes
- Jokers
- Optimisation de la conception des bases de données
10. Pouvez-vous définir le Callback Hell ?
Exemple de réponse : Le Callback Hell représente un anti-modèle que l'on peut voir dans le code de programmation asynchrone (en fait, lorsque plusieurs fonctions s'exécutent simultanément). L'enfer du callback est également connu sous le nom de pyramide du malheur, et ces noms font référence à de nombreuses fonctions ou instructions "if" imbriquées les unes dans les autres. Cette situation se produit lorsque plusieurs fonctions asynchrones existent simultanément et dépendent les unes des autres.
Cela peut créer un désordre car de nombreuses fonctions de rappel sont imbriquées les unes dans les autres. Ainsi, lorsque nous utilisons des fonctions de rappel, il reste un code qu'il est presque impossible de maintenir ou de lire et qui ressemble également à une pyramide. Le flux de l'application ne peut pas non plus être facilement identifié, et tout cela constitue un obstacle au débogage - d'où les phrases infernales de cet anti-modèle.
Questions spécifiques
1. Connaissez-vous les modèles de conception ? Comment les avez-vous utilisés dans vos engagements ?
Exemple de réponse : D'une manière générale, les modèles de conception sont des approches permettant de résoudre un problème spécifique dans le domaine de l'ingénierie logicielle. J'ai utilisé des modèles de conception créative et structurelle dans mes missions précédentes avec beaucoup de succès. J'ai utilisé les modèles de conception Singleton, Flyweight et Bridge.
2. Quelle est la différence entre une interface et une classe abstraite ?
Exemple de réponse : Les classes d'interface ne permettent que d'énoncer la fonctionnalité de la classe, mais pas de l'implémenter. Les classes abstraites permettent d'implémenter rapidement des fonctionnalités à l'aide de sous-classes.
3. Comment définiriez-vous une API RESTful ?
Exemple de réponse : L'API RESTful est un type d'interface que deux ordinateurs (généralement un client et un serveur) utilisent pour communiquer sur le web. L'API RESTful récupère un enregistrement par une requête GET, en crée un par une requête POST et en supprime un par une requête DELETE.
4. Quelle est la solution que vous proposez pour empêcher un robot de gratter une API publiquement connue ?
Exemple de réponse : Il y a plusieurs façons de procéder. Par exemple, vous pouvez demander un nom d'utilisateur et un mot de passe aux utilisateurs (pour créer un compte) afin d'accéder au contenu du site. Vous pouvez également limiter le nombre de fois qu'un même utilisateur peut effectuer des requêtes à l'aide d'une adresse IP identique.
5. Quelle est la différence entre la normalisation et la réinitialisation des feuilles de style CSS ?
Exemple de réponse : La normalisation ne supprimera qu'un nombre limité de styles que les navigateurs transmettent aux éléments d'une page. Avec la réinitialisation, tous les styles par défaut sont supprimés.
6. Quelle est la différence entre le déploiement bleu-vert et le déploiement par roulement ?
Exemple de réponse : Une stratégie de déploiement en continu ne comporte pas plusieurs environnements de mise à disposition. Il ne déploie des mises à jour qu'en fonction des besoins. Le déploiement bleu-vert utilise deux stratégies de déploiement : le bleu et le vert. Dans la phase bleue de la stratégie de déploiement du BG, l'engagement est soumis à l'assurance qualité et aux tests nécessaires. La phase verte gère le trafic jusqu'à ce que tout soit terminé dans la phase bleue.
7. Combien de types de modèles de conception existe-t-il ?
Exemple de réponse : Il y en a trois : structurel, comportemental et créatif. Les modèles structurels augmentent la fonctionnalité des classes dans le code sans apporter de changements significatifs à la composition. Les classes comportementales dépendent de l'inter-communicabilité entre les classes. Les motifs de création sont destinés à l'instanciation de classes. Ils sont ensuite divisés en schémas objet-créationnel et classe-créationnel.
8. Quelles sont les différences entre REST et GraphQL ?
Exemple de réponse : GraphQL est une technologie côté serveur qui exécute des requêtes pour obtenir des données. REST est un style architectural qui limite la façon dont les applications web sont créées. Par ailleurs, GraphQL utilise des schémas, tandis que REST s'appuie sur une série de points d'accès pour son exécution.
9. Comment réduire le temps de chargement d'une application web ?
Exemple de réponse : De plusieurs manières. Tout d'abord, vous pouvez compresser les images et déplacer les références de la feuille de style au début de la page HTML. Ensuite, vous pouvez déplacer les références du script à la fin de la page HTML. Enfin, vous pouvez séparer les codes JavaScript et CSS et les placer en dehors du document HTML principal.
10. Pourquoi effacer les flottants en CSS et comment le faire ?
Exemple de réponse : Nous pouvons facilement positionner les éléments (surtout les images) de manière à ce que le contenu s'écoule joliment autour d'eux grâce aux flottants. Mais lorsque nous faisons cela, il peut en résulter des éléments ultérieurs autour des éléments flottants, de sorte que la mise en page est mal rompue. Pour éviter cela, nous supprimons les flottants, ce qui nous permet de mieux contrôler la mise en page. Ce sont, à mon avis, les deux méthodes de compensation des flottants les plus courantes et les plus populaires :
- Clearfix est l'élément le plus courant, nous devons donc appliquer la technique "clearfix" par le biais d'un pseudo-élément. Nous devons d'abord créer un élément invisible qui s'efface et flotte rapidement. A partir de là, il faut s'attendre à plus de balises dans le HTML :
group::after {
contenu :"" ;
display:table ;
clear:both ;
}
11. Comment supprimer le plus efficacement possible les doublons dans les tableaux ES6 ?
Exemple de réponse : La méthode la plus courante et la meilleure consiste à utiliser un ensemble (set), qui permet de stocker des valeurs uniques. Ainsi, lorsque nous convertissons le tableau en un ensemble, les valeurs en double sont supprimées de cette manière. La dernière étape consiste à effectuer une nouvelle conversion, cette fois en utilisant une variété comme auparavant, avec des valeurs uniques.
12. Pouvez-vous définir et faire la différence entre async/await et Promises en JavaScript ?
Exemple de réponse : Async/await représente un "sucre syntaxique" construit sur les promesses, et il fait ressembler un code asynchrone à un code synchrone grâce à l'utilisation de fonctions asynchrones et du mot-clé "await".
13. Comment expliqueriez-vous le processus de débouclage des fonctions en JavaScript ?
Exemple de réponse : Lorsque nous devons reporter l'exécution d'une fonction, cela s'appelle la débauche. Nous remettons à plus tard afin d'éviter de lancer trop souvent des tâches qui prennent du temps. Une façon de débiter une fonction JavaScript est la suivante :
function debounce(fn, delay) {
let timeoutID ;
return (...args) => {
clearTimeout(timeoutID) ;
timeoutID = setTimeout(() => fn.apply(this, argos), delay) ;
};
}
14. Quelle est l'utilité des objets Event pour des modules tels que http ou fs dans Node.js ?
Exemple de réponse : Les modules Node.js utilisent les objets Event pour émettre des événements qui signalent les changements d'état, les erreurs ou la disponibilité des ressources. La programmation événementielle doit s'appuyer sur l'utilisation d'objets événementiels pour obtenir des applications évolutives et efficaces. C'est notamment le cas lorsque nous travaillons avec des charges de travail liées aux entrées-sorties.
15. Que pourriez-vous dire sur les fuites de mémoire ? Comment les repérer, les résoudre et les prévenir ?
Exemple de réponse : Les fuites de mémoire (RAM) représentent la partie d'une application qui utilise une certaine mémoire mais ne la libère jamais par la suite. Lorsqu'une application utilise beaucoup de mémoire et ne la libère pas, elle épuise la mémoire disponible au bout d'un certain temps. Dans le passé, les fuites de mémoire étaient fréquentes lorsque les développeurs utilisaient C++ et C. Il n'est pas très difficile de détecter ce problème, car le signe le plus évident est le manque de mémoire : le système ralentit et l'application commence à se bloquer. Empêcher cela n'est pas très difficile non plus, il suffit d'avoir un bon ramasse-miettes pour libérer la mémoire.
Le point de vue d'un développeur fullstack
Entre-temps, nous nous sommes renseignés sur le développement fullstack directement à la source, deux développeurs fullstack de Proxify, Martin Lucka, et Dmitriy Zolotukhin. Nous avons posé des questions sur les technologies essentielles, les prérequis indispensables, les développeurs fullstack se concentrent-ils principalement sur le backend ou le frontend, et comment ils devraient généralement aborder l'apprentissage.
Voici ce que Martin avait à dire initialement,
"Un développeur fullstack est un professionnel (semblable à une licorne) qui peut développer une application de zéro jusqu'à l'expérience finale de l'utilisateur. Cela inclut la capacité de construire des produits backend (sans serveur ou avec serveur complet avec bases de données) et frontend (web ou app)".
Il n'hésite pas non plus à parler des technologies incontournables,
"Si vous choisissez une solution sans serveur, il suffit d'utiliser la technologie frontale - JavaScript/TypeScript, CSS, React (n'apprenez pas Angular, Vue.js et d'autres frameworks s'ils ne sont pas nécessaires)", explique-t-il. "Si vous choisissez un serveur complet, la connaissance des langages backend (Node.js + TS/JS, Java, C#, PHP) et des bases de données (SQL) est également importante."
En ce qui concerne l'attention et le temps consacrés au frontend ou au backend, Martin a réitéré son point de vue,
"Habituellement, le fullstack est juste l'ensemble des compétences, mais la plupart des engagements les séparent, et le développeur choisit alors le chemin de carrière qu'il souhaite emprunter. Les petites missions peuvent avoir des solutions sans serveur, où les deux sous-ensembles de connaissances seraient appliqués (dans ce cas, il est bon d'avoir une certaine connaissance du cloud - GCP/Firebase, AWS, Azure, Back4app)."
Et pour les nouveaux arrivants dans le monde du développement fullstack, c'est le conseil qu'il a donné,
"Apprenez React et React Native car je reste persuadé que ce sont les outils les plus puissants du marché. N'apprenez pas à l'ancienne avec des classes ; apprenez à la manière fonctionnelle avec des crochets. Apprenez TypeScript car il constitue une base stable pour tout engagement. Apprenez et pratiquez ; la meilleure façon est de réaliser votre propre projet. Si vous voyez que certains engagements n'utilisent que JavaScript et des classes et non la programmation fonctionnelle et TypeScript, fuyez aussi vite que possible."
Dmitriy, nous fait part de ses réflexions sur la manière d'optimiser son temps et de se concentrer sur le développement,
"En ce qui concerne le développement réel, essayez de créer votre propre application et d'utiliser de nouvelles technologies, de nouveaux cadres et de nouvelles bibliothèques. Lisez sur les nouvelles technologies et essayez-les, ne vous contentez pas d'observer ou de lire. Installez-les et utilisez-les.
Il ajoute qu'il est d'une importance vitale d'avoir une compétence quasi identique en backend et en frontend. Toutefois, en fonction des exigences de l'engagement, les développeurs peuvent porter leur attention là où c'est le plus nécessaire.