Show Menu
Cheatography

French CTO Cheat Sheet (DRAFT) by

French CTO role cheat sheet

This is a draft cheat sheet. It is a work in progress and is not finished yet.

CTO en un mot

Le CTO identifie les problèmes clés (Loi de Pareto) et essaye de les résoudre. Des problèmes techni­ques, mais pas seulement.

Les casquettes du CTO

 
orga, archi, dev, infra, securité, manager, tech lead, recruteur, support, avant-­vente

Les missions du CTO

Gère le quotidien opérat­ionnel
Met en place un enviro­nnement qui favorise l'enga­gement de l'équipe
Organise les interfaces de l'équipe technique
Garantit la bonne exécution technique de la vision produit
Manage les techs
Est rattaché au CEO
Participe au CODIR
A une influence straté­gique sur la techno­logie
Gère le budget
Définit la vision techno­logique
Supervise la RD, l'inno­vation
Fait le sale boulot
Est respon­sable de la sécurité (et de la confor­mité)
Arbitre, priorise pour aligner les choix techni­ques, produit et business
Est respon­sable de la docume­ntation
Gère l’amél­ior­ation continue
Utilise des indica­teurs (DORA, uptime, etc.) en faisant attention à la loi de
Communique vers ses équipes et informe l'exté­rieur
Pilote les post mortem

Le but final du CTO

Le but final du CTO est de prendre en charge des sujets, automa­tiser, scaler, déléguer et passer sur d'autres sujets. Crédit graph Hugo Dupré
 

Recruter en 4 étapes

1e étape : Entretien de présen­tation et fit humain avec le CTO
2e étape : Entretien tech par un membre de l’équipe tech
3e étape : 1 journée immersion payée
4e étape : Faire une propos­ition
Bonus : ne pas ghoster. En cas d'arrêt du process, faire un retour honnête
L'exercice de l'entr­etien classique ne teste pas si le candidat convient au poste visé, il teste si le candidat est bon en entretien. Évitez le double écueil de favoriser les candidats optimisés pour les entretiens et de défavo­riser les bon tech plus faibles en entretien.

Fidéliser un tech

Salaire au niveau du marché ou supérieur
Augmen­tation annuelle
TT ou espace coworking ou présentiel libre
Indivi­dua­lis­ation des leviers de motivation et avantages
Haut niveau d'exigence

Créer et maintenir l’enga­gement de l’équipe

Célébrer les victoires
Faire des one to one réguliers
Utiliser la méthode américaine (inspirée de l'éduc­ation positive)
Éviter absolument les injustices
Manager en remote demande des compét­ences spécif­iques qu'il faut développer

Agile… mais pas trop !

Les individus et leurs intera­ctions plus que les processus et les outils… mais les processus et outils sont importants
Des logiciels opérat­ionnels plus qu’une docume­ntation exhaus­tive… mais la doc reste importante !
La collab­oration avec les clients plus que la négoci­ation contra­ctu­elle… mais la négoci­ation contra­ctuelle reste importante
L’adap­tation au changement plus que le suivi d’un plan… mais les specs détaillées sont primor­diales
Bonus : le leader­ship, l'exem­pla­rité, l'inte­lli­gence collective à la place du management direct­if/­hié­rar­chique
 

Comment résoudre un problème

N’importe quel problème complexe peut être découpé en plus petit problèmes plus simple à résoudre
Isoler le problème : simplifier au maximum le problème pour n'avoir qu'un paramètre à traiter
Essai/­erreur : émettre une hypothèse, tester la solution, vérifier le résultat, itérer

Security by design

Minimiser la surface d'attaque
Appliquer le principe de moindre privilège
Utiliser une approche défensive au niveau du code
Bonus : Mitiger les attaques par force brute (page de login, DDOS, etc.)

Rembourser la dette technique

Funday : un jour par semaine de refacto
La Guerrilla contre les bugs : 30% des évolutions sur du refacto
Le Drynuary : un mois entier de rembou­rsement de la dette technique
Atelier quickwin d'une heure en pair avec le produit

Bonnes pratiques design logiciel

KISS
SOLID
9 règles des objets Calist­­henics
fail fast, modes strictes, typage fort
Mettre à jour la stack et les dépend­ances et utiliser les innova­tions
Séparer front et back et passer en API
Supprimer le code mort, supprimer les features inutil­isées
Créer et utiliser des value objects signif­iantes plutôt que les primitives
Tendre vers le DDD
Tendre vers l'arch­ite­cture hexagonale
Passer en TDD
Extraire les parties plus basses ou non métiers, utilis­ables dans d'autres projets dans un projet séparé open source qui devient une dépend­ance.
Parall­éliser les TU
Traiter les requêtes n+1
Rendre le système observable et monitoré

Les événements de l'équipe

1 fois par mois : retros­pective entre techs (améli­oration de nos process, évocation des bloqueurs, gros sujets à aborder etc.)
1 fois par mois : Le CTO fais un one to one avec chacun des techs
lundi : priori­sat­ion­/pl­ani­fic­ation de ce qu'on va faire dans la semaine
1 fois par jour : daily rapide pendant laquelle on fait une revue des des tickets en cours et on se pose un peu plus sur les tickets qui n'avancent pas (qui sont resté dans le même status plus de 24h ou 48h). Mais pas de tour de table systém­atique. Et chacun peut aussi annoncer un atelier qu'il organise sur une problé­matique qu'il synthé­tise.
Des ateliers proposées à l'init­iative des techs sur lesquels les autres techs peuvent s'insc­rire.
Et surtout, beaucoup beaucoup d'asyn­chrone via Slack