Passer au contenu principal

Compétences dev web

Connaissances Web générales
✅ / ❌ Niveau Point technique Explication
 

1

Je sais dessiner le flux d’une requête HTTP  
  1 Je sais expliquer le fonctionnement d’une session  
  2 Je connais les différents types de session  
  2 Je connais les verbes HTTP et leur signification  
  2 Je connais les codes HTTP principaux (tous les 200, 302, 301, 304, 400, 404, 500) et leur signification  
  3 Je connais les concepts de Front, Back, et sait expliquer la différence entre du SSR et du FSR  
  3 Je sais mettre en place différents types d’authentification (JWT, Client, Session) sans librairies  
       

 

 Connaissances Web avancées
✅ / ❌ Niveau Point technique Explication
  2 Je sais expliquer le fonctionnement d’un client, et à quoi ça sert  
  3 Je maitrise plusieurs types d’authentification  
  3 Je connais les différentes manières de gérer des variables d'environnement, et je suis capable d'expliquer les différences. Je sais aussi expliquer pourquoi PHP est un cas particulier  
 

4

Je maitrise plusieurs langages/frameworks serveurs  
  4 Je maitrise plusieurs frameworks client (React, Angular, VueJs)  
  5 Je suis capable de choisir un Language et un framework pertinent sur un besoin particulier (ex: dans quels cas faire du Python, du Php, du Java, du Javascripts)  
       

 

  Gestion et architecture serveur:
✅ / ❌ Niveau Point technique Explication
  1 Je connais les commandes bash basiques : ls, cd, cat, …  
  1 Je connais les options des commandes basiques : (ls -lah, df -h, tail -f)  
  1 Je sais me servir basiquement de VIM ou Nano  
  2 Je sais générer une clé SSH, l’ajouter à mon trousseau, et me connecter à un serveur via cette clé  
  2 Je sais créer des groupes d’utilisateurs et des utilisateurs ainsi que gérer les permissions  
  2 Je connais les commandes bash avancées et sait gérer les processus : netstat, top, htop, tail  
  3 J’ai une utilisation avancée de VIM  
  3 Je ne fais rien en tant que root sur mes serveurs (à part installer des dépendances)  
  4 Je ne lance pas de process à la main, je sais utiliser des process manager (forever, pm2, ...)  
       

 

  Serveur Web
✅ / ❌ Niveau Point technique Explication
  1 Je connais la différence entre PHP et les autres langages serveur  
  2 Je sais monter une instance d’un serveur sur une distribution linux  
  2 Je sais installer un reverse proxy / serveur web / lord balancer sur un serveur Linux  
  2 Je sais servir des fichiers statiques avec un reverse proxy  
  3 Je sais mettre en place plusieurs sites sur le même serveur grâce à un reverse proxy  
  3 Je sais mettre en place le HTTPs sur un site Internet  
  3 Je sais gérer les logs Nginx /Apache, et où les trouver  
  3 Je connais les grandes spécificités de chaque Language web (Python, Java, Javascriipt, PHP)  
       

 

   Git
✅ / ❌ Niveau Point technique Explication
  1 Je connais les commandes Git basiques (pull, push, clone, reset, cherry-pick, merge, checkout, status, branch)  
  2 Je sais configurer Git sur ma machine (alias, défaut branch, gitighore global, git log amélioré)  
  3 Je sais comment fonctionnent les systèmes de merge, rebase, et pull, … (je sais donc expliquer la différence entre git rebase et git pull —rebase)  
  4 Je connais les commandes avancées de Git (reflog, reset, rebase, bisect, clean, …)  
  5 Je considère que je peux sereinement tout faire sur git (réécriture du passé)  
       

 

  PHP
✅ / ❌ Niveau Point technique Explication
  1 Je connais les concepts simples (récurrences, conditions, variables)  
  2 Je connais les concepts simple de l’orienté Objet (Classes, Interfaces, )  
  2 Je sais écrire un Trait, faire de l’extension de classes  
  2 Je sais configurer Apache et Nginx pour servir des fichiers PHP  
  3 Je connais brièvement l’historique de PHP (par exemple, pourquoi il n’y a pas de version 6)

 
  4 Je sais expliquer le fonctionnement de l’OPcache  
  4 Je sais faire de la gestion de fichier en PHP sans librairie (l'UploadedFile est une classe HttpFoundation, et pas PHP native), c'est à dire créer, renommer, déplacer, streamer, envoyer dans une réponse, envoyer sur un serveur  
  4

Je sais créer un flux requête / réponse en PHP sans framework (en gros, je sais recoder une version simplifiée du Kernel Symfony)

 
  6 J’ai déjà fait une contribution à PHP  
  6 J’ai crée une extension PHP  
       

 

  Symfony
✅ / ❌ Niveau Point technique Explication
  1 Je sais écrire un Contrôleur / Vue / Entité, …  
  1 Je sais expliquer pourquoi Symfony n’est pas un Framework MVC  
  2 Je connais succintement l’historique de Symfony (1-2-3-4-5), les gros changements à chaque version, et la direction prise par Symfony pour le futur  
  2

Je maitrise l'outil de debug toolbar

 
  2 Je sais écrire des extensions TWIG  
  3 Je maitrise l'onglet performance de la toolbar symfony  
  3 Je sais faire une contribution à Symfony  
  3 Je sais utiliser backfire  
  3 Je connais les process de releases de Symfony  
  3 Je sais écrire un Authenticator  
  3 Je comprends la notion d'injection de dépendance et de service container, et je sais à quoi cela correspond en standard PSR  
  4 J’ai déjà fait une contribution à Symfony  
  4 Je suis à l'aise avec le concept d'event listener et suscriber, je sais écrire les miens, et je conais les évènements principaux de Symfony  
  5 J’ai déjà fait une contribution mergée à Symfony  
  6 J'ai obtenu la certifiaction  Symfony  
       

 

Tests
✅ / ❌ Niveau Point technique Explication
  1

Je sais écrire un test unitaire

 
  2 Je sais expliquer les différences entre les tests unitaires / fonctionnels et d’intégration  
  3 Je connais le fonctionnement de développement d’une fonctionnalité en TDD  
  3 Je sais écrire un test fonctionnel  
  3 Je sais mocker une dépendance  
  3 Je sais mettre en place une intégration continue  
  4 Je sais écrire un test d’intégration  
  4 Je sais écrire un test authentifié  
       

 

  Infrastructure / Devops :
✅ / ❌ Niveau Point technique Explication
  1

Je sais mettre en place une infrastructure Docker en local

 
  2 Je sais automatiser le déploiement d’une application su une stack précise  
  2 Je sais utiliser les images Docker préconfigurées (chialab/php par exemple)  
  3 Je sais automatiser mes déploienents Docker en utilisant un Hub (dockerHub / Rancher)  
  4 Je sais automatiser la mise en place d’une infracture sur un serveur (Ansible, Chef, Puppet, Terraform) sur une stack précise  
  4 Je sais automatiser le déploiement d’une application quelque soit la stack  
  4 Je connais les bonnes pratiques Docker  
  4

Je sais déployer automatiquement grace à Docker

 
  5 Je sais écrire des  provisionnings stateless grâce à Docker  
  5 Je sais automatiser la mise en place d’une infracture sur un serveur (Ansible, Chef, Puppet, Terraform) sur toutes les stacks web principales (en gros PHP, Js, Java, Python)  
  5 Je suis capable clusteriser une application déployée sur  Docker  
       
 
  Base de données
✅ / ❌

Niveau

Point technique Explication
  1

Je connais les différents types de bases de données

 
  1 Je sais gérer des dictionnaires dans une table non relationnelles  
  1 Je sais utiliser au moins un ORM  
  1 Je sais expliquer pourquoi on utilise des ORMs  
  2 Je sais expliquer les différences entre PSQL et MySQL  
  2 Je sais dans quel cas utiliser une base relatonnelle et non relationnelle  
  2 Je connais les types de relations entre tables et sait les implémenter sans ORM  
  2 Je connais les commandes SQL de base  
  2 Je connais le concept et sais expliquer à quoi servent les indexes dans une base relationnelle  
  3 Je sais effectuer des commandes SQL dans des transactions  
  4 Je connais le problème du N+1 select, et je sais comment le résoudre  
  4 Je connais la différence entre le lazy loading et le eager loading, et je comprends les avantages et les inconvénients de chaque méthode