Profession: Développeur Backend

Il n'y a aucune raison de s'arrêter - 
je marche, je glisse.
Et dans le monde, il n'y a pas de tels pics,
ce qui ne peut pas être pris.
V. Vysotsky


Si cet article n'était pas publié sur Habré, mais dans un magazine éducatif, je commencerais comme ceci: «Souvenez-vous des sites que vous aimez, qui ont une navigation pratique et une belle interface. Mais saviez-vous que ce n'est que la pointe de l'iceberg ... » Mais probablement tout est connu sur Habré, donc pas de paroles. Le backend de tout projet Web est un système complexe qui permet à l'application de travailler rapidement, de rechercher efficacement, de fournir rapidement des informations à l'utilisateur, de stocker des données en toute sécurité et en toute sécurité et, si nécessaire, de travailler avec d'autres systèmes externes. C'est comme une montre suisse: ils l'achètent pour le style et la plaque signalétique, mais les connaisseurs savent que sous le cadran sobre se trouve le monde magique de l'horlogerie. Et les développeurs backend sont des magiciens des mécanismes, des organismes, des intestins, des viscères, ou comme vous l'appelez dans les applications Web. Eh, sans paroles, ce n'était pas possible! 

En bref, nous analysons aujourd'hui une autre profession dans la série "Profession ...". Et si vous allez chez les développeurs backend? 


Le backend est toujours un peu pénible

Qu'est-ce?


Sur le plan académique, un développeur backend est un programmeur qui est responsable de la logique interne et informatique d'un site Web ou d'une application Web, ainsi que d'autres logiciels et systèmes d'information. À proprement parler, le backend n'est pas seulement pour les solutions web, il est disponible pour les applications de bureau et mobiles, comme en fait, le backend est tout ce qui concerne le matériel et les logiciels du service. Mais historiquement, il s'est produit que le backend et le frontend ont commencé à être particulièrement clairement distingués précisément dans le développement web. Et comme c'est également la sphère la plus populaire en ce moment, nous parlerons spécifiquement du Web (pour le bureau, de nombreuses thèses seront également valables, mais nous parlerons des développeurs mobiles dans l'un des problèmes séparément).

Le développeur principal crée des composants et des fonctions accessibles à l'utilisateur de l'application ou du site via l'interface. Autrement dit, les backders sont des programmeurs qui développent tout ce que l'utilisateur ne voit pas et ne touche pas directement. C'est-à-dire qu'un beau formulaire de saisie de données ou un panier d'une boutique en ligne est un frontend, et le stockage de données dans un SGBD, un tas de champs de formulaire d'inscription et un panier, l'intégration avec une passerelle de paiement, des lettres automatiques, le chargement et la mise à jour de contenu sont tous un backend. Par conséquent, si le formulaire d'inscription commençait à donner une erreur de base de données, le défaut est ... le testeur :-) (pourquoi - nous le dirons également dans la prochaine série).

Ce dont le développeur principal est responsable:

  • assurer le bon fonctionnement de toutes les fonctions du site et sa logique de calcul;
  • organisation et travail avec des bases de données via SGBD;
  • développement de la logique de base et des algorithmes de fonctionnement des applications;
  • API
  • intégration nécessaire avec les services externes;
  • tester et déboguer des applications et des composants individuels.

En général, le cerveau et le sang du site sont sur la conscience du développeur backend. Il suffit de ne pas penser que c'est le dieu et le roi de tout développement, et le reste des participants au processus se figent en prévision de ses actions - ce n'est pas entièrement vrai (enfin, presque).


Les développeurs frontaux peignent la lampe en jaune et frottent le backend pour que la lampe fonctionne, mais uniquement pendant la journée.


Les développeurs de backend sont étonnés de voir où tout le monde a eu des problèmes avec ces ampoules, rappelle qu'il a oublié de mettre de la lumière dans la base de données, de se calmer et de blâmer le frontal.

Où est-il nécessaire?


Comme dans le cas du développement frontal, il y a absolument partout un site Web ou une application qui interagit avec l'utilisateur sur le Web. C'est une autre question que tout le monde a besoin de backders de différents niveaux: au bureau d'un réseau social conditionnel ou d'un grand site d'annonces, un développeur backend doit non seulement avoir des compétences de base, mais également travailler avec des charges élevées, une architecture de microservices et une conteneurisation (Docker, Kubernetes), connaître des systèmes de surveillance ( tels que Zabbix, Grafana), ont des compétences Scrum (facultatif pour des entreprises spécifiques). Et pour une petite boutique en ligne, un tas de SGBD PHP-Ajax-certains HTML suffisent, parfois même moins. Il est clair que les salaires et les conditions d'expérience sont également complètement différents. 

Traditionnellement chez Habré Careernous avons trouvé 444 postes vacants du développeur backend, ce qui est presque 2 fois plus que dans le frontend. Sur hh.ru - environ 1800. En général, les fournisseurs frontaux vous attendent sur les postes de travail, où la recherche sur le site prend deux heures :-) Mais sérieusement, la société peut avoir 2-3 développeurs backend par frontend, surtout si nous parlons d'applications avec une logique interne et une logique métier complexes (boutique en ligne, CRM-ERP, portail d'entreprise, etc.).

salaire moyen


Nous examinerons également les salaires chez Haber Career. Prenez les données du deuxième semestre 2019, quelle que soit la propriété d'une pile particulière. 
Niveau spécialiste
salaire moyen
Stagiaire (stagiaire)
35 345 frotter.
Junior
55 241 frotter.
Milieu
105 048 frotter.
Sénior
168 350 rub.
Présentateur (Lead)
185 335 frotter.

Si l'on compare avec les salaires des appels d'offres, la croissance est insignifiante, de quelques centaines de roubles à 6 000 roubles. (Au milieu). Mais ce sont vraiment des valeurs très moyennes, cela dépend beaucoup de la pile de programmation, des compétences supplémentaires, de l'expérience et du langage de développement principal. Soit dit en passant, PHP est en premier lieu pour tous les niveaux du développeur backend, et nous en parlerons plus.

Exigences professionnelles de base


Les exigences pour le back-end sont encore plus sensibles aux caractéristiques de l'entreprise et de ses processus commerciaux que le front-end. Parfois, il peut être très étrange à première vue des choses comme «comprendre les principes du réfrigérateur à poisson en tant qu'entreprise», «connaissance des bases de la vente ou de l'expérience de vente», «excellente connaissance de JavaScript, CSS et HTML». Mais cela semble fou et répugnant seulement avec la première approche. En fait, le développeur backend est vraiment plus immergé dans les processus métier, doit non seulement développer le code en conformité avec eux, mais aussi ajuster certaines choses à des tâches spécifiques, comprendre comment cela fonctionne de l'intérieur. Si vous n'avez jamais vu d'entonnoir de vente et ne comprenez pas de quel type de déchets il s'agit, vous ne pouvez jamais développer sa logique avec des filtres, des tranches et des transitions (même si vous avez d'excellentes spécifications techniques, il est difficile de le comprendre).Eh bien, dans l'exemple avec "une connaissance brillante de JavaScript, CSS et HTML", tout est simple: le gestionnaire ne fait probablement pas vraiment confiance à son autre développeur et est prêt à reconsidérer son approche du développement. Cela se produit souvent dans les petites entreprises. 

Mais il existe également un ensemble d'exigences de base qu'un développeur principal verra dans presque tous les travaux.

  • Connaissance d'au moins un langage de programmation «serveur»: PHP, Go, ASP.NET, C / C ++, Python, Ruby, Java. Dans certains cas, la connaissance de JavaScript pour le backend (Node.js) est suffisante, mais c'est plus un plus qu'un point.
  • Connaissance des API (REST, SOAP - de moins en moins).
  • Comprendre les principes des serveurs Apache, NGINX, IIS et autres.
  • Compétences pour écrire des tests unitaires et couvrir le code avec des tests.
  • Les bases de la sécurité du réseau et la connaissance des outils pour la garantir.
  • Connaissance des frameworks Web populaires qui peuvent résoudre les problèmes de développement d'une application spécifique.
  • Compétences en rédaction de requêtes de base de données et en conception de base de données.
  • Connaître les bases du frontend n'est pas un plus, mais un point obligatoire, sinon il vous sera extrêmement difficile de concevoir et d'écrire une application.

Un énorme avantage pour le CV et votre travail réel sera un autre ensemble de connaissances.

  • Administration UNIX ou connaissance de Linux (vous pouvez utiliser n'importe quel kit de distribution).
  • Connaissance des principes de travail HTTP (mise en cache, autorisation, structure des messages, en-têtes, codes de réponse, etc.)
  • Modèle OSI. 
  • Les compétences dans la préparation et l'évaluation des termes de référence (TdR) sont une compétence très importante qui est nécessaire pour collecter les informations les plus précises sur les exigences logicielles. 

"Oui, deviens fou!" - vous direz et vous aurez raison. Cependant, j'ai de bonnes nouvelles: les outils de développement backend changent beaucoup plus lentement que le front-end, ainsi que les exigences deviennent obsolètes depuis longtemps. Je l'ai donc maîtrisé une fois et j'ai lu les résumés afin de me tenir au courant des choses, mais surtout de ne pas bouillir car le design plat est devenu à la mode, et la fiche produit sur votre site est hors tendance depuis deux jours :)

Soit dit en passant, il existe de nombreux bons et solides mathématiciens parmi les backenders, car le développement du backend est une science exacte, et la qualité du résultat dépend fortement de la façon dont vos algorithmes, modèles, cycles, fonctions, etc. choisis et appliqués sont vérifiés et appliqués.
Stagiaire (stagiaire)
Junior
Milieu
Sénior
Présentateur (Lead)
  1. C ++
  2. C #
  3. Golang
  4. SQL
  5. .NET

  1. Php
  2. Python
  3. Java
  4. Framework Java Spring
  5. PostgreSQL

  1. Php
  2. Python
  3. Java
  4. PostgreSQL
  5. Framework Java Spring

  1. Php
  2. Java
  3. Python
  4. PostgreSQL
  5. Framework Java Spring

  1. Php
  2. Java
  3. MySQL
  4. PostgreSQL
  5. Systèmes très chargés


+ POO, cadres

+ POO, frameworks, Docker
+ systèmes très chargés, POO, frameworks, Docker
+ Linux, OOP, frameworks, Docker
Top 5 des technologies les plus demandées par les spécialistes selon «Habr Career», deuxième semestre 2019, l'essentiel est les compétences «supplémentaires».

Le principe de constitution de la liste: les utilisateurs, saisissant des données sur les salaires, indiquent les compétences qu'ils ont prioritaires (ce qu'ils peuvent faire!). Autrement dit, ce ne sont pas les exigences de l'employeur, mais les compétences des spécialistes de chaque catégorie.

Comme vous pouvez le voir, les entreprises sont prêtes à accueillir des stagiaires avec les bases universitaires C, C ++ et C #, mais à l'avenir elles préfèrent les spécialistes avec un «ensemble de travail» d'un back-end. Faites attention à l'intérêt pour la conteneurisation et les systèmes fortement chargés. 

Au fait, voici une autre feuille de route pour vous, mais déjà pour le backend du développeur(Les autres sont également sur le site - à mon avis, c'est l'un des meilleurs et des plus systématiques que j'ai vu sur ce sujet). Regardez, imprimez et envoyez vers le haut du backend. 


Qualités personnelles importantes


Le back-up est bon, il peut être introverti :) Son domaine de travail avec les utilisateurs est minimisé, en gros, tous les contacts de travail avec les managers ou les collègues. Ces gars travaillent souvent sur les savoirs traditionnels et font tout ce qui est décrit dans le document ou de manière à obtenir une condition aussi proche que possible de la cible (les savoirs traditionnels, vous savez, sont également imparfaits, voire pas du tout ...).

Cependant, il existe un ensemble de qualités, sans lesquelles vous ne devriez pas penser à la direction du backend. Ils peuvent vous sembler quelque chose comme les qualités d'un employé dont une «jeune équipe en développement dynamique» a besoin, mais non, il s'agit d'impératifs internes qui aideront non seulement à bien faire le travail, mais aussi à le faire avec un confort intérieur (et non à «sortir» ").

  • . , : , , , .. , — (, - - - CRM-).
  • . , , .
  • . — , , , « » , , - ( ).
  • . .
  • , . — .
  • . , . , . — . 
  • . — . , , . — ( ).
  • . , , , , , , , . , , — «» , « ».


Voici ce qui a été écrit pour le développeur frontal.

Pour tout programmeur, un anglais d'au moins intermédiaire supérieur avec un biais en anglais technique est hautement souhaitable. Ainsi, vous pouvez lire dans l'original les nombreuses recommandations de Google et d'autres sociétés pour un développement optimal (beaucoup de documentation utile!), L'auto-apprentissage à l'aide de conférences étrangères, communiquer avec des collègues dans des forums, poser des questions, et également lire des livres sur l'ergonomie et la conception, parmi lesquels il y a très de nombreuses éditions sympas en anglais et pas encore traduites. 

Il en va de même pour le back-end, encore plus. Dans les commentaires de l'article précédent, ils ont remarqué que le niveau d'intermédiaire supérieur est trop élevé pour un informaticien, assez bas. Je juge par moi-même et par le niveau des manuels. Disons simplement que de intermédiaire à intermédiaire supérieur, l'étape ne ressemble pas à un receveur et le niveau de «chat» se prend facilement. Mais de supérieur à avancé - l'abîme et la complexité et le vocabulaire. Cependant, si vous lisez les règles et comprenez que vous lisez à un niveau différent, personne ne vous emmènera pour passer l'examen, utilisez-le. 

Où étudier


En principe, les mêmes universités techniques, cours, auto-éducation et universités d'entreprise. Mais il y a des nuances importantes.

  • - (, , .), . - — , . , , , .. 
  • — - (, PHP Java) - -, , ( ).
  • , / . , .
  • open source , .
  • , , (-), . , , , , . , , - , - , .. ( / ). 



Il est nécessaire de choisir des outils de formation basés sur le langage de programmation sélectionné et la pile actuelle à un moment particulier. Les recommandations générales sont les suivantes.

  • Un livre de base sur votre langage de programmation - j'aime les éditions O'Reilly, beaucoup sont traduites par Peter. 
  • De même, des livres de base sur votre pile. 
  • Livres de cuisine par langue et recommandations d'entreprise, articles de blog, etc.
  • Beck Kent, Extreme Programming. Le développement par le biais de tests est un excellent livre pour tout développeur en principe, mais surtout pour le back-end. Entrer dans la philosophie TDD coûte cher.
  • Joel H. Spolsky - vous pouvez lire son blog, vous pouvez toujours trouver sur le livre électronique Runet "Joel sur la programmation" - une collection d'articles de blog en russe.
  • « », « » — «» , .
  • « » — «» , .
  • , Youtube . , , . , . 
  • webref.ru — , , . 
  • codecademy.com — , , , . 
  • ITc | communauté de programmeurs - une voiture d'informations organisées avec des cours, des conférences et tout le reste. Lisez les commentaires, déterminez facilement le meilleur pour l'apprentissage.
  • Bibliothèque du programmeur - un tas de livres sur tous les sujets informatiques.

Pourquoi je me concentre sur les livres? Premièrement, ils sont professionnels, et deuxièmement, ils peuvent être facilement gardés à portée de main, prendre des notes et coller des autocollants, revenir rapidement aux informations dont vous avez besoin. Il s'agit d'un format pratique et accessible pour la présentation d'informations pour le cerveau. Si vous ne vous êtes pas testé, assurez-vous de l'essayer, amusez-vous!

L'avenir du back-end


L'avenir du back-end est dessiné assez clairement et de manière prometteuse.

  • : junior , middle , senior , , , team lead .. , , , , .
  • : - Java, /++ « », , , , .. , .
  • -: .
  • DevOps, DevSecOps, — - , .
  • , . 
  • — . - ( -).

Je vais vous en dire plus: si en 2020-2022 vous apprenez SQL et n'importe quel langage de programmation "backend", ce sera bon pour vous en 2032. Et le point ici n'est pas dans le support hérité, mais dans le fait qu'il n'y a pas encore d'alternative décente au web, et si cela et il semblera que le back-end a de bien meilleures chances que sa pile se mette en place.

La principale chose qui ne fonctionne pas pour vous est d'être un mauvais développeur et de compter en même temps sur quelque chose d'intéressant. Le fait est que chaque entreprise attend la responsabilité du back-end (imaginez des erreurs dans le code d'une application bancaire, certains SIG critiques ou un système de surveillance en ligne - vous pouvez immédiatement devenir gris) et une approche saine du travail. Il est peu probable qu'il soit possible de filtrer ou de dire «c'est prévu» - avec toute l'invisibilité externe du backend, l'échec est le plus notable.

Mythes de la profession


▍Le backend est très difficile


Un point discutable. Certains développeurs affirment que c'est plus facile grâce aux outils de développement, d'innombrables bibliothèques et un faible niveau de dynamisme, tandis que d'autres ont peur d'approcher le backend en principe. Cependant, comme toujours, au milieu: la pile de développeurs back-end est plutôt diversifiée et a des composants hétérogènes, mais, premièrement, tout n'est pas nécessaire dans le projet, deuxièmement, cela vaut la peine de comprendre une chose, et maintenant toutes les relations sont évidentes, la connaissance enfilé sur une seule tige. Dans tous les cas, vous devez vous essayer dans le backend - même si vous vous retournez et choisissez un type de développement différent, les connaissances acquises vous aideront dans votre travail.


Developer Le développeur backend obtient des millions


Il s'agit généralement d'un mythe courant sur la programmation. Le plus gros salaire réel du développeur russe, que j'ai dû voir de mes propres yeux, est de 540 mille roubles. par mois (C / C ++, projet étranger, systèmes de vision par ordinateur, doctorat, à distance), le deuxième - 400 mille roubles. (Delphi, udalenka, entreprise étrangère, allemand natif). Le reste est très similaire aux chiffres que j'ai pris des "Habr Careers" pour mes assiettes. Vous ne recevrez des millions que si elle converge: une connaissance brillante de la langue + talent + expérience et compétences uniques dans une sphère étroite + un projet prêt à payer autant. Il n’y en a que quelques-uns, et je ne dirai pas que leur sort est beau: 99% de leur vie est du travail, 1% est un rêve. Par conséquent, il est important de réaliser une autre thèse: les développeurs de backend sont en demande et gagnent beaucoup d'argent, mieux que de nombreux spécialistes. Veux direça vaut le coup d'essayer.

▍PHP - r @ vno, PHP est mort, PHP doit mourir


J'adore cet holivar! Mais en même temps, je sais à quel point les débutants ont peur de lui et essaient de contourner ce langage puissant et à bien des égards pratique et ses cadres. Le fait est qu'au début des années 2000-2010, PHP était un langage de programmation extrêmement populaire pour les pigistes et autres messieurs de la chance informatique. Cela dit une mer de mauvais sites et applications amateurs - mais pas parce que le langage est mauvais, mais parce que ces gars-là n'ont pas pu l'utiliser avec élégance et compétence. À partir de là, ces mythes sur le «mauvais» ont disparu.

Bien sûr, PHP est facile à apprendre, plus vivant que tous les vivants, des centaines de milliers de projets, de projets de conception et d'ingénieurs de projet y sont écrits et pris en charge et il vivra assez longtemps. Selon Stackoverflow PHP, 25,8% des développeurs professionnels choisissent. Oui et le langage Octoverse GitHub est assez stable dans le nombre de projets:


Soit dit en passant, les très bons programmeurs PHP sont très appréciés dans tous les sens du terme.

Conseil principal


Il n'y a pas de meilleur langage pour le backend, d'ailleurs je vais vous dire qu'il n'y a pas de meilleur langage de programmation pour rien. Apprenez la langue dont vous ou votre futur employeur potentiel avez besoin (vous pouvez l'apprendre à l'avance), puis vous pourrez résoudre rapidement et avec élégance les tâches qui vous sont assignées. Vous ne devriez pas apprendre certaines technologies à partir du principe «tout le monde a couru et j'ai couru». Vous pouvez alors devenir un spécialiste vraiment unique, pensant et gagnant. Ce qui dictera bien sûr ses conditions. 

Eh bien, y a-t-il des backends expérimentés parmi les lecteurs? Comment c'est? Pourquoi avez-vous choisi ce côté développement particulier? Ah oui: Profession: développeur front-endProfession: administrateur système







All Articles