Le gestionnaire d'une société de facturation a deux façons de constituer une équipe. La première consiste à recruter des «seniors» prêts à l'emploi et à créer en permanence de telles conditions de travail afin qu'ils utilisent au maximum leurs compétences et leur expérience, se développent et ne se battent pas en même temps. La seconde est de créer une équipe à partir d'un mélange de débutants, de "midas" et de pros, afin qu'ils communiquent, s'influencent mutuellement, apprennent et grandissent au sein de l'entreprise. Je suis contre un cercle vicieux à la "pas d'expérience - pas de travail - pas d'expérience" et je ne vois aucun problème à embaucher un développeur débutant. Forward Telecom gère depuis longtemps un programme de stages, qui est devenu un tremplin pour de nombreux employés.
Je vais maintenant vous dire comment je vois le chemin de développement du développeur de facturation et dans quel ordre vous devez maîtriser les compétences professionnelles.
1. Apprenez un langage de programmation
Pour commencer - tout. La priorité est Java, Python et JavaScript, mais Ruby, Go, C, C ++ conviennent aux connaissances de base. Comment enseigner? Prenez des cours gratuits et payants, je peux vous conseiller la formation de Golang. Si le niveau d'anglais le permet, regarder des vidéos étrangères est une bonne compétence supplémentaire.

2. Comprendre les concepts du système d'exploitation
Les systèmes d'exploitation sont basés sur sept composants que vous devez connaître et pouvoir expliquer le principe d'action:
- Gestion des processus;
- Streams et code multithread;
- Socket (interface logicielle);
- Planification des E / S;
- Virtualisation
- Stockage
- Systèmes de fichiers.
Je recommande de suivre un cours d'administration Linux de base. Deuxième OS en ligne: Windows et Unix.
3. Habituez-vous au terminal
Par analogie avec la phobie d'une feuille vierge, il existe une phobie d'un écran noir vierge avec un curseur clignotant. Vous devrez le surmonter afin d'apprendre à écrire de bonnes commandes sur la ligne de commande.
Assurez-vous de savoir:
- Coquilles Bash et KornShell;
- Les commandes find, grep, awk, sed, lsof;
- Commandes réseau nslookup et netstat.

4. Réseau et sécurité
La facturation est étroitement liée aux exigences de réseau et de protection des données. Vous ne pouvez pas écrire de services en ligne sans comprendre le fonctionnement du réseau, vous devez donc apprendre les concepts et protocoles de base: DNS, OSI, HTTP, HTTPS, FTP, SSL, TLS. Ensuite, lorsque vous rencontrez une erreur de connexion refusée, vous saurez quoi faire.
5. Serveurs
Après avoir étudié les principes de transmission des informations sur le réseau, vous pouvez commencer les bases du fonctionnement des serveurs. Commencez avec les serveurs Web: IIS, Apache, Nginx, Caddy et Tomcat.
Plus bas dans la liste:
- Serveur proxy inverse;
- Proxy anonyme;
- Mise en cache
- Équilibrage de charge;
- Pare-feu.
6. Explorez l'infrastructure en tant que code
Je pense que cette étape est l'une des plus importantes. Trois grands thèmes devront être triés:
- Conteneurs: Docker et Kubernetes
- Outils de gestion de la configuration: Ansible, Chef, Salt et Puppet
- Réservation: Terraform, nuages.
7. Apprenez CI / CD
Une autre compétence utile pour un développeur de facturation est de pouvoir personnaliser le pipeline pour une intégration et une livraison continues. Dans le domaine des CI / CD, il existe des outils Jenkins, TeamCity, Drone, Circle CI et autres. Spoiler: étudier le Jenkins largement utilisé au début sera suffisant.
8. Contrôle des logiciels et des infrastructures
L'objectif principal est de comprendre les bases de la surveillance des applications. Les outils dans ce domaine sont divisés en trois groupes:
- Surveillance des infrastructures: Nagios, Icinga, Datadog, Zabbix, Monit.
- Surveillance des performances des applications: AppDynanic, New Relic.
- LMS: ELK Stack, Graylog, Splunk, Papertrail.
9. Services cloud
Dans un avenir proche, chaque application ou logiciel aura un équivalent cloud. Tôt ou tard, les développeurs sont confrontés aux nuages, alors lisez les fournisseurs de cloud populaires (AWS, Google Cloud et Azure) et les bases de la technologie.
10. Travailler avec la base de données
Tous les projets en cours utilisent des bases de données et une expérience de travail avec SGBD et SQL facilitera le démarrage des travaux. Apprenez à écrire des requêtes SQL, utilisez Explain et apprenez comment fonctionne l'index. Le moyen le plus simple est de suivre un cours. Vous pouvez également vous exercer sur la documentation Postgres, jouer avec la réplication.
11. Boost Softskills
Un point qui sort soudain de la toile générale, mais non moins important. Pour commencer - soyez patient. Vous vous habituez rapidement à des situations telles que «réparer le fer, typrogrammer», mais vous devez être préparé mentalement au moment du lancement de nouveaux projets. Si dans la programmation, vous êtes de zéro à un an et êtes considéré comme junior, préparez-vous à la critique et apprenez à l'accepter, révision du code en tant que mentor - le processus est souvent douloureux. Mais en même temps, une compétence obligatoire est la capacité à défendre son point de vue et à argumenter de manière constructive, parfois la vérité naît dans un différend. Les développeurs n'arrêtent jamais d'apprendre, il n'y a pratiquement pas de plafond dans la profession, donc l'apprentissage et le DÉSIR d'apprendre de nouvelles choses sont la base de votre développement.

On me demande souvent quand un débutant atteint le niveau intermédiaire, et quand on peut déjà être fièrement qualifié de "senior". Je crois que le moment de la transition d'un niveau à l'autre ne détermine pas le nombre d'années travaillées, bien que les compétences pratiques soient le critère clé. De même, les compétences techniques déterminent souvent le taux de croissance d'un développeur: un débutant formé et travailleur peut écrire du code de haute qualité dans plusieurs langues en quelques mois et être capable de travailler en équipe. Un développeur avec une expérience de 10 ans peut être incapable de résoudre des tâches non standard, de gérer une équipe et d'avoir des compétences unilatérales.
Je vois donc le chemin de développement du développeur de facturation, nous développons donc des spécialistes qualifiés dans notre équipe Forward Telecom. Il semble que je n'ai rien manqué, mais je suis toujours reconnaissant pour les ajouts utiles en substance.