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 | ||
Pas de commentaires