Candidature, CV & Carrière

Quels projets montrer pour trouver un job cyber en 2025

Stratégie projets portfolio cyber 2025 : 3-5 projets clés par métier (pentester, DevSecOps, SOC), README performants, ce que regarde un recruteur, anti-patterns.

Naim Aouaichia
19 min de lecture
  • Portfolio cyber
  • Projets GitHub
  • Candidature
  • Entretien technique
  • Carrière
  • Recruteur
  • CV

La stratégie projets portfolio pour décrocher un job cyber en 2025 ne consiste pas à accumuler un maximum de projets mais à sélectionner 3 à 5 projets différenciants par métier ciblé et à les présenter avec rigueur (README performants, commits réguliers, stack alignée). Les recruteurs cyber français 2024-2025 (RH + managers techniques + ESN PASSI comme Orange Cyberdefense, Almond, Synacktiv, Wavestone Cyber, Advens) consacrent 2 à 10 minutes à inspecter un GitHub avant l'entretien — ils ne regardent pas 20 repos. Un portfolio junior reconverti crédible = 3 repos qualité avec README travaillés + HackTheBox profile public + 2-3 articles blog techniques. Un portfolio confirmé 2-5 ans = 5-7 repos incluant au moins 1 contribution open source visible (PR merged sur outil reconnu comme BloodHound, Impacket, nuclei). Un portfolio senior 5+ ans privilégie outils publics maintenus > 100 stars + CVE assignées + conférences (SSTIC, BarbHack, DEF CON, BHEU) > quantité de repos. Les 6 signaux que scrutent réellement les recruteurs en inspection GitHub : README existant et travaillé (absence = rédhibitoire), commit history régulière (vs 1 gros initial commit = import code existant non-compris), structure projet claire (conventions + tests si applicable), dépendances à jour (pas de vulnérabilités évidentes dans requirements.txt/package.json), social proof (stars/forks si > 10), activity récente (repos abandonnés 2 ans démotivent). Les projets par métier ciblé divergent fortement : Pentester (HTB rank public + write-ups retired + règles YARA/Sigma + contributions outils offensifs + CVE/bug bounty), DevSecOps (lab CI/CD sécurisé Semgrep+Trivy+Checkov + règles custom + K8s durci + Terraform Checkov + articles), SOC Analyst (home lab SIEM Splunk/Elastic/Wazuh + règles Sigma + write-ups blue team labs + investigation CyberDefenders), AppSec Engineer (SAST/DAST lab + règles Semgrep métier + threat modeling + revue code public), Cloud Security (Terraform durci + policy OPA + labs AWS/Azure/GCP + CSPM scripts). Le pattern README efficace suit 7 sections : titre + pitch 1 ligne, screenshots/diagramme, contexte + pourquoi, features, quick start, detailed setup, tradeoffs + learnings (section différenciante). Les anti-patterns incluent : 50 forks non-touchés (signal négatif), tutoriels copy-paste sans additions, repos hello-world académiques bruts, commits sans messages, README vides. Cet article détaille la stratégie sélection par métier (3-5 projets clés pour pentester / DevSecOps / SOC / AppSec / Cloud Security / LLM Security), la perspective recruteur (ce qu'il regarde vraiment en 5 min), le README 7 sections pattern avec exemples concrets, les 6 stratégies d'enrichissement sans expérience pro cyber, la transformation de projets scolaires en projets crédibles, et la gestion long terme du portfolio (ajouter/retirer selon carrière). Pour le CV cyber complet, voir Comment faire un CV en cybersécurité. Pour la stratégie LinkedIn, Comment faire un LinkedIn cybersécurité. Pour le catalogue des 12 projets détaillés, Portfolio cybersécurité 12 projets.

1. Qualité vs quantité : la règle d'or 2025

1.1 Le mythe du portfolio exhaustif

Erreur reconverti classique : accumuler 20-50 repos pour "montrer qu'on a travaillé". Résultat observé :

Portfolio exhaustif — pourquoi ça performe mal
───────────────────────────────────────────────
 
Recruteur ouvre GitHub user : voit 50 repos
  ├─ Essaie d'estimer pertinence (30 secondes)
  ├─ Click sur 2-3 au hasard
  ├─ Si pas d'accroche → close
  └─ Décision : "portfolio noise-heavy, profil peu mature"
 
vs Portfolio ciblé 5 repos
  ├─ Peut inspecter chacun (1-2 min)
  ├─ Comprend progression + qualité
  ├─ Storytelling cohérent stack/métier
  └─ Décision : "profil intentionnel, pertinent"

1.2 Le temps d'inspection réel recruteur

Retours terrain recruteurs cyber FR 2024-2025 :

Niveau recruteurTemps inspection GitHub
RH généraliste (pré-screening)1-2 minutes (rapide scan, comptage repos + README visible)
Recruteur spécialisé cyber3-5 minutes
Manager technique (post-RH)5-15 minutes (lecture 2-3 repos)
Entretien technique live10-30 minutes si candidat le présente

Conclusion : optimiser les 5-15 premières minutes. Repos visibles = 3-5 qualité. Le reste peut être dans un repo "archive" pas pinned.

1.3 Le pinning stratégique GitHub

Sur GitHub, pin 3-6 repos affichés en tête de profil. C'est la seule chose que les recruteurs voient en priorité. Stratégie :

  • Pin 1 : projet phare le plus aligné avec le métier ciblé.
  • Pin 2 : contribution open source ou outil réutilisable.
  • Pin 3 : projet storytelling (ex: CI/CD complet, lab AD home-built).
  • Pin 4-6 : write-ups, règles custom, blog source.

2. Stratégie projets par métier ciblé

2.1 Portfolio Pentester / Red Team

Portfolio Pentester 2025 — stack recommandée
─────────────────────────────────────────────
 
1. HackTheBox profile public + retired write-ups
   ├─ Rank minimum "Hacker" (top 30 %)
   ├─ 5-10 write-ups retired boxes Medium+
   ├─ Focus active directory si target DevSecOps/AD pentest
   └─ Site personnel ou GitHub pages pour héberger
 
2. Règles Sigma / YARA / Semgrep custom
   ├─ 10-30 règles qualité organisées par catégorie
   ├─ README : pourquoi + comment utiliser + validation
   ├─ Exemple : règles Kerberoasting Sigma avec 4738 Event ID
   └─ GitHub repo publiquement license MIT/Apache
 
3. Contributions outils offensifs open-source
   ├─ PRs sur BloodHound, Impacket, netexec, nuclei
   ├─ Documentation PRs d'abord (barrier entry basse)
   ├─ Escalader vers code features
   └─ Visible dans GitHub contributions graph
 
4. CVE assignée ou bug bounty report public
   ├─ CVE-YYYY-NNNNN via MITRE / vendor coordination
   ├─ HackerOne / YesWeHack profile public
   ├─ 1 CVE suffit pour démarquer (top 5 % candidats junior)
   └─ Write-up technique associé
 
5. Outil custom (optionnel niveau confirmé)
   ├─ Burp extension pour niche spécifique
   ├─ Script Python pour automation recon
   ├─ Fork enrichi d'un outil existant
   └─ 50+ stars idéal
 
Total temps investi : 400-800 heures sur 6-18 mois

2.2 Portfolio DevSecOps

Portfolio DevSecOps 2025 — stack recommandée
─────────────────────────────────────────────
 
1. Lab CI/CD sécurisé complet
   ├─ GitHub Actions template avec Semgrep + Trivy + Checkov
   ├─ gitleaks + Dependabot + CodeQL
   ├─ Multi-langage (Python + Go + Terraform)
   ├─ Exit codes + reports uploaded
   └─ README 500+ mots expliquant chaque étape
 
2. Règles Semgrep custom métier
   ├─ 15-30 règles .semgrep.yml organisées
   ├─ Catégories : web (XSS/SQLi/SSRF) + cloud (IAM) + crypto
   ├─ Tests unitaires sur exemples vulnerable/safe
   └─ Exportable pip install package
 
3. Cluster Kubernetes durci
   ├─ Lab EKS/GKE/minikube avec hardening complet
   ├─ Network Policies Cilium
   ├─ OPA Gatekeeper / Kyverno policies
   ├─ Pod Security Standards
   └─ Benchmark CIS Kubernetes score > 90 %
 
4. Infrastructure as Code sécurisée Terraform
   ├─ Module AWS / Azure / GCP durci
   ├─ Checkov passing + commentaires justifiant exceptions
   ├─ Secrets via AWS Secrets Manager / Vault
   └─ GitOps ArgoCD / FluxCD pattern
 
5. Articles techniques (optionnel)
   ├─ Medium / Dev.to / self-hosted
   ├─ 3-5 articles profondeur (1500-3000 mots)
   ├─ Sujets : incident post-mortem, outil review, pattern
   └─ Backlinks vers repos GitHub
 
Total : 300-600 heures sur 6-12 mois

2.3 Portfolio SOC Analyst / Blue Team

Portfolio SOC / Blue Team 2025
───────────────────────────────
 
1. Home lab SIEM complet
   ├─ Docker compose : Wazuh / Elastic Security / Splunk free
   ├─ Sysmon v15 avec config Olaf Hartong
   ├─ Log sources : Windows AD + Linux + container + cloud
   ├─ Dashboards custom + alertes tuned
   └─ README + architecture diagramme
 
2. Règles Sigma custom + detection engineering
   ├─ 20-50 règles organisées par MITRE ATT&CK technique
   ├─ Validation via Atomic Red Team tests
   ├─ Convertibles vers Splunk SPL / KQL / EQL
   └─ Détection Kerberoasting, Certipy ESC1-8, Shadow Credentials
 
3. Write-ups blue team labs online
   ├─ BlueTeam Labs Online (BTLO) 10+ investigations
   ├─ CyberDefenders / LetsDefend cases
   ├─ TryHackMe SOC Analyst path completed
   └─ Write-ups publiés avec analyse forensique
 
4. Investigation forensics projects
   ├─ Volatility 3 plugins custom ou analyses approfondies
   ├─ PCAP analysis Wireshark avec findings
   ├─ Memory dumps analysis malware
   └─ Timeline events reconstruction
 
5. CTI / OSINT projects (bonus senior)
   ├─ Threat actor profiling documenté
   ├─ IOCs extraction automation Python
   └─ STIX/TAXII feed custom
 
Total : 300-500 heures sur 6-12 mois

2.4 Portfolio AppSec Engineer

Portfolio AppSec Engineer 2025
───────────────────────────────
 
1. SAST/DAST lab complet
   ├─ CI/CD avec Semgrep + CodeQL + SonarCloud
   ├─ DAST OWASP ZAP / Burp Enterprise
   ├─ Coverage métriques visibles (% vulns detected)
   └─ Benchmarks vs Juice Shop / DVWA / WebGoat
 
2. Règles Semgrep métier custom
   ├─ Règles orientées stack spécifique (Django / Rails / Express)
   ├─ Détection secrets hardcodés custom patterns
   └─ Publish pip package si maturité
 
3. Threat modeling workshops repo
   ├─ STRIDE templates pour N architectures type
   ├─ Case studies documented (e-commerce, SaaS B2B, API public)
   └─ Data flow diagrams Mermaid / draw.io
 
4. Revue code sécurité publique
   ├─ Analyses sécurité repos open-source notables
   ├─ Publications PRs fix vulnérabilités
   └─ Bug bounty reports déclassés
 
5. Contribution OWASP communauté
   ├─ Cheat Sheets amendments
   ├─ WSTG / MASTG contributions
   └─ Chapter Meetup local organizer

2.5 Portfolio Cloud Security Engineer

Portfolio Cloud Security 2025
──────────────────────────────
 
1. Labs AWS/Azure/GCP sécurisés
   ├─ Terraform modules par hyperscaler
   ├─ IAM fin-grained policies
   ├─ Network topology Zero Trust
   └─ Benchmark CIS AWS/Azure/GCP
 
2. CSPM scripts custom
   ├─ Prowler extensions / rules custom
   ├─ Scout Suite checks additionnels
   └─ AWS Security Hub custom integrations
 
3. OPA Gatekeeper / Kyverno policies
   ├─ Policies Kubernetes admission control
   ├─ Conftest rules Terraform
   └─ Templated governance
 
4. Secrets management patterns
   ├─ HashiCorp Vault setup complet
   ├─ AWS Secrets Manager + rotation Lambdas
   └─ External Secrets Operator Kubernetes
 
5. Incident response runbooks cloud
   ├─ Playbooks détection compromission
   ├─ Containment procedures automated
   └─ Post-mortem templates

2.6 Portfolio LLM Security (émergent 2025)

Portfolio LLM Security 2025 — émergent
───────────────────────────────────────
 
1. Red teaming LLM demos
   ├─ Garak + PyRIT scans on open models
   ├─ Custom jailbreak benchmarks
   └─ Write-ups des findings
 
2. Guardrails implementation
   ├─ Lakera / Rebuff / NeMo Guardrails intégration
   ├─ Custom prompt injection classifiers
   └─ OWASP Top 10 LLM mapping complet
 
3. RAG security lab
   ├─ RAG multi-tenant isolation test
   ├─ Cross-tenant leakage red team
   └─ Embedding inversion demos
 
4. Article / talk technique
   ├─ Blog approfondi sur une technique attaque/defense
   ├─ Meetup AI Security local (émergent 2024-2025)
   └─ OWASP LLM Top 10 contribution
 
Niche récente, peu de candidats — portfolio même modeste
démarque fortement. 100-200 heures investies = différenciant.

3. Ce que regarde réellement un recruteur

3.1 Les 6 signaux en 5 minutes

Retours terrain recruteurs cyber FR 2024-2025 :

Signaux recruteur inspection GitHub — priorité décroissante
────────────────────────────────────────────────────────────
 
1. README travaillé (critère rédhibitoire)
   ├─ Présent et lisible
   ├─ Explique quoi/pourquoi/comment
   ├─ Screenshots ou diagramme architecture
   └─ Quick start reproductible
   SIGNAL ABSENCE : profil disqualifié 80 % cas
 
2. Commit history régulière
   ├─ Régularité sur plusieurs semaines/mois
   ├─ Messages descriptifs (pas "update" ou "fix")
   ├─ Taille commits raisonnable (pas 50k lignes d'un coup)
   └─ Pattern montre apprentissage progressif
 
3. Stack technique alignée métier cible
   ├─ Langages + frameworks vs CV
   ├─ Outils métier pertinents (Semgrep, BloodHound, etc.)
   └─ Pas de stack contradictoire au poste ciblé
 
4. Structure projet cohérente
   ├─ Arborescence claire (src/, tests/, docs/)
   ├─ Conventions de nommage consistentes
   ├─ Tests présents (si applicable)
   └─ Configuration externalisée
 
5. Dépendances à jour
   ├─ requirements.txt / package.json / go.mod propres
   ├─ Pas de vulnérabilités évidentes
   └─ .tool-versions ou .nvmrc si applicable
 
6. Activity récente
   ├─ Last commit < 3 mois pour repo principal
   ├─ Graphe contributions actif derniers 12 mois
   └─ Repos abandonnés 2+ ans sans mention = négatif

3.2 Ce qu'ils ne regardent PAS

Mythes à dissiper :

  • Nombre total de repos : 50 forks non-touchés = 0.
  • Nombre de followers : peu pertinent sauf senior niveau influencer.
  • Historique académique détaillé : TP/TD scolaires bruts = signal négatif.
  • Profile README design : lisibilité suffit, pas de GitHub stats graphs complexes.
  • Tutoriels copy-paste : no-go.

3.3 Le test de lecture 30 secondes

Règle empirique : si un recruteur ne peut pas répondre en 30 secondes aux questions suivantes après avoir ouvert le README, le signal est faible :

  • Que fait ce projet ?
  • Pourquoi l'auteur l'a fait ?
  • Quel est le niveau technique démontré ?
  • Est-ce reproductible ?

4. Le README 7 sections pattern

4.1 Structure performante

# Nom du projet — Pitch 1 ligne
 
[![CI](badge)](url) [![License](badge)](url) [![Last commit](badge)](url)
 
**Screenshot principal ou GIF démo** (remplace 1000 mots)
 
## Why this project?
 
2-3 paragraphes expliquant le contexte, le problème résolu,
et pourquoi la solution est intéressante.
 
## Features
 
- Feature 1 avec stack utilisée (Python 3.11, FastAPI 0.115)
- Feature 2 avec détail technique
- Feature 3 avec métrique impact
 
## Architecture
 
Diagramme Mermaid / draw.io / ASCII de l'architecture.
 
## Quick start
 
```bash
git clone https://github.com/user/project.git
cd project
./install.sh

Detailed setup

Configuration avancée, variables d'environnement, intégration CI/CD, customization, etc.

Tradeoffs & learnings

Section différenciante : honnêteté sur les limites de l'approche, les choix architecturaux et pourquoi, les apprentissages acquis, ce qu'on ferait différemment avec plus de temps.

References

  • Lien vers papers, articles, outils connexes
  • Inspirations

### 4.2 Anti-patterns README

```text
Top anti-patterns README cyber 2025
────────────────────────────────────

❌ Vide ou "Coming soon"
❌ Texte auto-généré par templates sans personnalisation
❌ Absence de screenshots / diagramme architecture
❌ Pas d'instructions reproduction
❌ Over-engineered avec 20 badges mais texte vide
❌ Erreurs orthographe / fautes multiples
❌ 100 % marketing ("disruptive", "revolutionary") sans tech
❌ "TODO" partout
❌ Emojis excessifs (> 10 dans le README)
❌ Pas de section "Why" — on ne sait pas à quoi ça sert

4.3 Longueur optimale

Longueur README par type de projet
───────────────────────────────────
 
Petit script / règle Sigma / write-up CTF    100-300 mots
Outil individuel (Python CLI, Burp extension) 300-600 mots
Lab complet (CI/CD, home lab SIEM, K8s)       600-1500 mots
Outil maintenu communauté (> 50 stars)        1500-5000 mots
                                               + docs/ folder
 
Règle : lisible en < 3 min sans défilement excessif

4.4 Exemple de section "Tradeoffs & learnings" différenciante

## Tradeoffs & learnings
 
### Tradeoffs
 
- **Performance vs security** : J'ai choisi de désactiver CORS strict
  sur les endpoints dev pour faciliter le workflow local, mais en
  prod le middleware `strict_cors` est activé et bloque tous les
  origins non-whitelistés. Compromis conscient.
 
- **Complexity vs flexibility** : Le DSL Sigma custom que j'ai
  implémenté supporte 80 % des cas OWASP. Les 20 % restants
  (correlations multi-events) nécessitent un vrai SIEM. Je n'ai
  pas voulu re-implémenter Splunk.
 
### Ce que j'ai appris
 
- **eBPF hooks** sont puissants mais difficiles à débugguer. J'ai
  passé 2 semaines sur un bug lié au filtering de syscalls avant
  de réaliser que le kernel < 5.15 ne supportait pas mon feature.
 
- **Prometheus scraping** à 5s intervals génère 2 GB/jour sur ce
  lab. J'ai dû migrer vers VictoriaMetrics pour rétention long terme.
 
### Ce que je ferais différemment
 
- Commencer par le **monitoring** avant les règles de détection.
  J'ai passé 30 % du temps à écrire des règles avant de réaliser
  que mes logs étaient incomplets.
 
- **Utiliser un projet communautaire** plutôt que réimplémenter :
  j'aurais dû partir de SOC Workshop ou DetectionLab au lieu de
  tout construire from scratch.

Ce type de section démarque immédiatement des tutoriels copy-paste.

5. Transformer projets scolaires en projets crédibles

5.1 Pattern de transformation

Avant transformation — projet scolaire brut
────────────────────────────────────────────
 
github.com/user/projet-crypto-m2-ucp
├── README.md (5 lignes : "TP crypto M2 UCP 2024")
├── main.py (code non-commenté)
└── rapport.pdf (30 pages auto-généré Word)
 
Signal recruteur : 0
 
 
Après transformation
─────────────────────
 
github.com/user/aes-educational-implementation
├── README.md (800 mots avec pourquoi, architecture, benchmarks,
│                comparaison PyCryptodome, pitfalls observés)
├── src/
│   ├── aes_core.py (AES from scratch, commenté, type-hinted)
│   ├── modes.py (ECB, CBC, GCM implementations)
│   └── pitfalls_examples.py (exemples vulnérables documentés)
├── tests/ (pytest, 95 % coverage)
├── benchmarks/ (perf vs PyCryptodome)
├── docs/
│   ├── theory.md (principes mathématiques)
│   └── attacks.md (padding oracle, timing attacks illustrations)
└── blog-post.md (Medium/self-hosted article 2000 mots)
 
Signal recruteur : démontre curiosité, profondeur, communication

5.2 Les 5 étapes de transformation

5 étapes transformation projet scolaire
────────────────────────────────────────
 
1. RETIRER LE CONTEXTE SCOLAIRE
   ├─ Supprimer "TP UCP 2024" du nom
   ├─ Renommer projet (ex: "aes-educational-implementation")
   └─ README ne mentionne pas l'école
 
2. AJOUTER PORTÉE AU-DELÀ DU CADRE IMPOSÉ
   ├─ Features non-demandées par le TP
   ├─ Benchmarks vs implémentations industry
   └─ Documentation séparée théorie + pratique
 
3. TESTS + CI
   ├─ pytest + GitHub Actions
   ├─ Coverage reports
   └─ Linting (black, ruff, mypy)
 
4. BLOG POST ASSOCIÉ
   ├─ 1500-3000 mots article technique
   ├─ Medium / self-hosted / Dev.to
   └─ Backlinks vers repo
 
5. RÉFLEXION DOCUMENTÉE
   ├─ Section "Tradeoffs & learnings" README
   ├─ Pitfalls observés
   └─ Ce qu'on ferait différemment

6. Enrichir sans expérience pro cyber — 6 stratégies

Pour reconvertis ou débutants sans poste cyber actuel :

6.1 Les 6 axes à cumuler

Stratégies portfolio sans expérience pro cyber
───────────────────────────────────────────────
 
1. HOME LAB DOCUMENTÉ (high leverage)
   ├─ AD lab + Splunk/Wazuh + Sysmon
   ├─ Kubernetes + Falco + OPA
   ├─ RAG + guardrails LLM
   ├─ Write-up complet avec diagramme, configs, apprentissages
   └─ Investissement : 80-150 heures
 
2. WRITE-UPS HTB / TRYHACKME
   ├─ Retired machines, pas juste walkthroughs
   ├─ Ajouter : contexte, approches alternatives, mitigation
   │  perspective recruteur
   ├─ 10+ write-ups qualité > 50 write-ups bruts
   └─ Investissement : 5-10h par write-up profond
 
3. RÈGLES CUSTOM
   ├─ Sigma / YARA / Semgrep / Falco / osquery
   ├─ Contextualisées (ex: Kerberoasting cloud-native)
   ├─ Validation contre Atomic Red Team
   └─ Investissement : 20-50 heures pour 20 règles
 
4. CONTRIBUTIONS OPEN SOURCE
   ├─ Start small : doc PRs, typo fixes, translation
   ├─ Outils cibles : BloodHound, Impacket, Semgrep, nuclei
   ├─ Escalader progressivement vers code
   └─ Investissement : variable, 1-5 PRs en 3-6 mois
 
5. BLOG TECHNIQUE
   ├─ 1 article / mois (12 / an)
   ├─ Profondeur 1500-3000 mots, pas tutoriel copy-paste
   ├─ Thèmes : apprentissages deep, reviews outils, analyses
   └─ Investissement : 10-20h par article
 
6. CTFs COMPÉTITIFS
   ├─ CTFtime profile public avec participation régulière
   ├─ Équipes françaises débutants OK :
   │  - Phreaks 2600 (grande équipe)
   │  - Hackademint (étudiants)
   │  - Weekend CTFs
   ├─ Write-ups des challenges résolus
   └─ Investissement : 8-16h par week-end CTF

6.2 Plan 6 mois complet

Plan portfolio 6 mois pour reconverti cyber
────────────────────────────────────────────
 
Mois 1 : FONDATIONS
  ├─ GitHub profile setup, README profile travaillé
  ├─ Linux / networking refreshers
  ├─ HackTheBox 5 machines easy + 3 write-ups
  └─ Blog post #1 : "Mon parcours reconversion cyber"
 
Mois 2-3 : SPÉCIALISATION
  ├─ Focus métier ciblé (pentester / DevSecOps / SOC)
  ├─ 1 projet lab majeur (AD lab, ou CI/CD security, ou SIEM)
  ├─ HackTheBox 10 machines medium + write-ups
  └─ Blog post #2 et #3 : technical deep dives
 
Mois 4 : CONTRIBUTION
  ├─ Première PR sur projet OSS (doc ou typo)
  ├─ 10-20 règles Sigma/YARA/Semgrep custom
  ├─ 1 CTF compétitif avec write-ups
  └─ Blog post #4
 
Mois 5 : VISIBILITÉ
  ├─ LinkedIn posts réguliers (progression)
  ├─ Meetup local OWASP / BarbHack attendance
  ├─ 1 présentation interne ou online
  └─ Blog post #5 et #6
 
Mois 6 : CANDIDATURES
  ├─ CV final prêt (voir Comment faire un CV cybersécurité)
  ├─ LinkedIn optimisé (voir Comment faire un LinkedIn)
  ├─ 3-5 projets pinned sur GitHub
  ├─ 15-30 candidatures ciblées / semaine
  └─ Blog post #7 : "6 mois de reconversion, bilan"
 
Budget temps : 15-20h / semaine = 400-500h total
Résultat : portfolio junior crédible, premier poste 2-4 mois après

7. Gestion long terme du portfolio

7.1 Ajouter, retirer, archiver

Règles pour maintenir un portfolio qui évolue avec la carrière :

Maintenance portfolio long terme
─────────────────────────────────
 
AJOUTER (continuer à produire)
  ├─ 1-2 nouveaux projets / an minimum (niveau confirmé)
  ├─ Contributions OSS réguliers
  ├─ Articles blog trimestriels
  └─ Conférences / talks annuels
 
ARCHIVER (sans supprimer)
  ├─ Projets > 2 ans si obsolètes technologiquement
  ├─ Projets expérimentaux non-aboutis
  ├─ Move hors "pinned" mais garder visible pour completude
  └─ Marquer explicitement "archived" dans GitHub settings
 
RETIRER (privé ou delete)
  ├─ Projets scolaires bruts sans transformation
  ├─ Projets démontrant stack obsolète conflictuelle
  ├─ Expérimentations embarrassantes code-qualité
  └─ Projets personnels non-professionnels (jeux hobby ?)
 
PIN (6 max)
  ├─ Mix : 1 projet phare + 1 contribution OSS + 2 projets
  │        storytelling + 1 article/blog source + 1 CVE/bug bounty
  └─ Review pins tous les 6 mois selon évolution carrière

7.2 Évolution portfolio par niveau carrière

NiveauFocus portfolioSignaux prioritaires
Junior (< 2 ans)Home labs + write-ups + règles customBreadth + foundations
Confirmé (2-5 ans)Outils custom + contributions OSSDepth + initiative
Senior (5-8 ans)Outils maintenus > 50 stars + CVE + talksLeadership technique
Lead/Staff (8+ ans)Frameworks majeurs + speaking international + publicationsInfluence domaine

8. Points clés à retenir

  • Qualité > quantité : 3-5 projets pinned de qualité > 50 repos superficiels. Recruteurs passent 2-15 min sur GitHub.
  • Stratégie par métier : portfolio pentester (HTB + règles + OSS) ≠ DevSecOps (CI/CD + K8s + Terraform) ≠ SOC (SIEM + Sigma + BTLO) ≠ AppSec (SAST/DAST + threat modeling) ≠ Cloud Security (Terraform + CSPM + OPA).
  • 6 signaux recruteur : README travaillé (rédhibitoire si absent), commit history régulière, stack alignée métier, structure cohérente, dépendances à jour, activity récente.
  • README 7 sections : titre + pitch, screenshots, why, features, quick start, detailed setup, tradeoffs & learnings (section différenciante #1).
  • Transformer projets scolaires : retirer contexte école, ajouter portée, tests+CI, blog post associé, réflexion documentée.
  • 6 stratégies enrichir sans expérience pro : home lab documenté, write-ups HTB profonds, règles custom, contributions OSS, blog, CTFs compétitifs.
  • Plan 6 mois reconverti : 400-500 heures total, 1-2 projets majeurs + 10+ write-ups + 6 blog posts = portfolio junior crédible.
  • Gestion long terme : ajouter 1-2 projets / an, archiver obsolètes, retirer projets embarrassants, review pins tous 6 mois.
  • Anti-patterns : 50 forks non-touchés, tutoriels copy-paste, repos hello-world, TP scolaires bruts, README vides, commits génériques.
  • Pin stratégique GitHub : 3-6 repos en tête de profil = seul signal top-of-mind recruteur.

Pour le CV complet, voir Comment faire un CV en cybersécurité. Pour la stratégie LinkedIn, Comment faire un LinkedIn cybersécurité. Pour le catalogue des 12 projets détaillés, Portfolio cybersécurité 12 projets. Pour choisir le métier cible, Quel métier cyber choisir selon profil. Pour les salaires par profil, Salaire junior cybersécurité. Pour les roadmaps techniques : Roadmap pentest, Roadmap DevSecOps.

Questions fréquentes

  • Combien de projets faut-il montrer pour postuler en cybersécurité ?
    3 à 5 projets de qualité valent mieux que 20 superficiels. Pattern observé 2024-2025 : les recruteurs passent 2-10 minutes à inspecter le GitHub/portfolio avant entretien — ils ne regarderont pas 20 repos. 3 projets différenciants avec README travaillés, commits réguliers, stack alignée métier cible, démontrent plus qu'un portfolio verbeux. Exception : profils seniors avec outils OSS maintenus (> 100 stars) ou CVE assignées peuvent avoir 10+ repos visibles car chacun raconte une histoire. Junior reconverti : 3 repos qualité + HackTheBox profile public + 2-3 articles blog techniques = portfolio crédible. Confirmé : 5-7 repos incluant au moins 1 contribution open source visible (PR merged sur outil connu). Senior : outils publics maintenus + CVE + conférences > quantity repos.
  • Faut-il avoir des projets différents selon le métier cyber ciblé ?
    Oui absolument, un portfolio générique performe mal. Pour pentester : HackTheBox rank public + 5-10 write-ups retired boxes + règles YARA/Sigma custom + contributions outils offensifs (BloodHound queries, Burp extensions) + CVE/bug bounty si applicable. Pour DevSecOps : lab CI/CD sécurisé (Semgrep + Trivy + Checkov) + règles Semgrep custom + projet Kubernetes durci + IaC Terraform avec Checkov + 1-2 articles techniques. Pour SOC analyst : home lab SIEM (Splunk/Elastic/Wazuh) + règles Sigma custom + write-ups blue team labs online + investigation CyberDefenders/LetsDefend. Pour AppSec Engineer : SAST/DAST lab + règles Semgrep métier + threat modeling workshops + revue code security publique. Pour Cloud Security : Terraform durci + policy OPA + AWS/Azure/GCP labs + CSPM custom scripts. Un CV targeté avec 3-5 projets alignés métier a un taux conversion 2-3x supérieur à portfolio générique.
  • Que regarde réellement un recruteur dans un repo GitHub ?
    Retours terrain recruteurs cyber FR 2024-2025 : 6 signaux en moins de 5 minutes d'inspection. 1) README — existe-t-il, est-il travaillé, explique clairement quoi/pourquoi/comment ? Absence = signal rédhibitoire. 2) Commit history — régularité et messages (vs 1 gros initial commit = import de code existant non-compris). 3) Structure projet — code organisé, conventions, tests si applicable. 4) Dépendances — à jour, pas de vulnérabilités évidentes dans requirements.txt / package.json. 5) Stars/forks — social proof si > 10 (signal communautaire). 6) Activity récente — repos abandonnés 2 ans = démotivant. Ils NE regardent PAS : 50 forks non-touchés de projets populaires, tutoriels copy-pasted sans additions originales, repos hello-world académiques, commits sans messages. Priorité : qualité repo ~ blog post technique = dépôt GitHub avec README de 200-500 mots présentant problème, solution, apprentissages.
  • Comment structurer un README de projet cyber qui impressionne ?
    Pattern efficace en 7 sections. 1) Titre + badge + pitch 1 ligne (ex: 'CI/CD Security Template — Pipeline GitHub Actions avec Semgrep + Trivy + Checkov enforcement'). 2) Screenshots/GIF en tête (2-3 images), diagramme architecture si applicable. 3) Context & Why (2-3 paragraphes : pourquoi ce projet, quel problème résout-il ?). 4) Features (bullet list de ce que fait concrètement le projet, avec versions stack utilisée). 5) Quick start (instructions 3-5 commandes pour reproduire). 6) Detailed Setup (config, variables, intégration CI). 7) Tradeoffs & Learnings (honnêteté sur limites + apprentissages, ce qui démarque recruteurs). Longueur totale 300-600 mots pour projet moyen, 1000+ pour projet majeur. Emojis sparingly (3-5 max). Badges CI status + license + last commit date. Eviter : README vide, 'Coming soon', texte auto-généré par templates.
  • Puis-je mettre des projets scolaires dans mon portfolio ?
    Oui mais avec transformation. Projet scolaire brut (ex: 'TP1 crypto UCP 2024') = signal négatif : ne démontre pas initiative personnelle au-delà du cadre imposé. Projet scolaire **transformé** = signal positif : continuer après la fin du cours, ajouter fonctionnalités non-demandées, écrire blog post sur apprentissages, comparer avec implémentations industry. Exemple transformation : 'TP implémentation AES Python' → 'Implémentation AES éducative + comparaison avec PyCryptodome performance benchmark + blog post sur pitfalls communs'. Pattern 2024-2025 : privilégier projets perso initiés de A à Z > projets groupe école > projets individuels école > stages anciens (sauf extrêmement pertinents). Si peu de projets perso, 1-2 projets école transformés valent mieux que liste entière projets école bruts. Pour les reconvertis sans école cyber : zéro pression — projets perso directement.
  • Comment enrichir mon portfolio sans expérience pro cyber ?
    Six stratégies éprouvées 2024-2025. 1) Home lab documenté : monter AD lab + Splunk + Sysmon, write-up complet explication détections implémentées. 2) Write-ups HackTheBox retired machines : pas juste walkthrough, ajouter contexte, alternative approaches, mitigation perspective recruteur. 3) Règles custom : Sigma / YARA / Semgrep rules pour patterns spécifiques (ex: détection Kerberoasting dans environnement cloud-native). 4) Contributions open source : commencer par documentation PRs sur outils que tu utilises (BloodHound, Impacket, nuclei), escalader vers code. 5) Blog technique : Medium/Dev.to/self-hosted avec 3-5 articles par an, ciblant sujets apprentissages profonds (pas tutoriels copy-paste). 6) CTFs compétitifs : CTFtime profile avec participation régulière + write-ups, équipe française (Phreaks 2600, Hackademint) accepte aussi débutants. Pattern gagnant : consistency > ambition unique. 15-20h par semaine pendant 6 mois sur ces 6 axes = portfolio junior crédible.

Écrit par

Naim Aouaichia

Expert cybersécurité et fondateur de Zeroday Cyber Academy

Expert cybersécurité avec un master spécialisé et un parcours hybride : développement, DevOps, DevSecOps, SOC, GRC. Fondateur de Hash24Security et Zeroday Cyber Academy. Formateur et créateur de contenu technique sur la cybersécurité appliquée, la sécurité des LLM et le DevSecOps.