Trois compétences indispensables pour un CTO de startup
Au fur et à mesure que la technologie a évolué au cours des dernières décennies, il en va de même pour de nombreux rôles qui l'entourent. Pendant mes études d'ingénieur logiciel, je n'étais au courant que d'un rôle de développeur. Je ne savais pas qu'il existe ou qu'il existera autant de domaines individuels dans un spectre de développement logiciel autre que le simple fait d'être développeur. Lors du développement d'applications au cours des 15 dernières années, l'importance de bon nombre de ces rôles est devenue évidente, tout comme le rôle d'un CTO pour toute startup.
D'après mon expérience de travail avec quelques startups et de nombreux projets d'entreprise greenfield, ces compétences sont fondamentales pour une startup précoce et tout projet greenfield de tout niveau. Cette liste n'est pas exhaustive et d'ailleurs pas définitive mais indispensable pour lancer une startup en douceur.
La raison principale de ce blog est d'aider les nouvelles startups à faire le bon choix lors de la sélection d'un CTO.
1. Expertise du framework et pas seulement du langage — Connaissance
"Je peux coder dans n'importe quelle langue" - je suis sûr que vous avez dû entendre cela de la part de nombreux développeurs novices. J'étais aussi une fois le même. Ayant écrit du code dans quelques langues, je pensais pouvoir coder dans n'importe quelle langue. Cependant, lorsque j'ai développé plus de maturité, j'ai réalisé que presque tous les développeurs devraient être capables de s'adapter à une nouvelle syntaxe de langage. En revanche, la compétence principale réside dans le cadre sous-jacent ou la bibliothèque utilisée, qui peut être une courbe d'apprentissage abrupte et exige une pratique et une recherche persistantes avec des changements évolutifs dans le cadre choisi.
Souvent, cela apporte également un changement architectural. Par exemple, un développeur travaillant comme ingénieur backend doit travailler sur une application web front-end ; ce n'est pas seulement le changement de langage ou de framework, mais aussi un changement complet d'architecture. L'architecture sous-jacente d'un navigateur diffère du serveur principal, d'un appareil mobile ou d'un pipeline de données de longue durée.
La connaissance et l'expérience d'un expert avec l'architecture et le cadre de la plate-forme sélectionnée sont essentielles pour le développement et la livraison réussis d'un projet.
2. Possibilité de l'exécuter localement en une seule étape - Développement facile
Lorsque je dis « exécutez-le localement », je ne parle pas seulement d'un seul service ou de quelques services, mais de tout exécuter localement de bout en bout, y compris les services tiers. L'action la plus cruciale ici est de pouvoir tout exécuter en une seule étape ou en aussi peu d'étapes que possible.
Les services tiers peuvent inclure un serveur OAuth, des services cloud, des bases de données ou des services d'API REST tiers. De nos jours, lorsqu'elles fournissent des services cloud, la plupart des entreprises proposent une simulation similaire à exécuter localement pour accélérer le développement et les tests. On peut toujours écrire un service stub si de tels simulacres ne sont pas disponibles. Cela semble être un effort supplémentaire au début, mais cela fait gagner beaucoup de temps à long terme.
J'ai toujours préconisé l'automatisation et l'exécution locale de tous les services requis, mais l'exécuter en une seule étape était toujours difficile. Lorsque j'ai eu l'occasion de travailler avec certaines organisations, j'ai été ravi de constater que peu d'entre elles ont déployé des efforts supplémentaires pour permettre à leurs développeurs d'exécuter un projet de microservice complet avec des services tiers en une seule étape.
Beaucoup sont même allés au niveau de l'écriture d'un nouvel outil open-source pour les aider à y parvenir. En tant que startup, je ne recommanderai à personne de réinventer la roue ou d'aller jusqu'à cet extrême, mais il existe maintenant plusieurs outils pour automatiser un environnement de développement en quelques étapes seulement. Cependant, il est regrettable que des situations où les développeurs doivent bricoler pour configurer un environnement local ou tout exécuter la première fois localement prennent des jours, voire des semaines, existent toujours. Imaginez que votre équipe doive passer autant de temps non seulement à rejoindre de nouveaux membres, mais aussi en cas de panne d'un système ou d'un service, ce qui, croyez-moi, se produit plus que souvent.
Une autre raison de tout exécuter localement et rapidement est que vous pouvez écrire moins de tests unitaires ou d'intégration au début du démarrage. La seule façon de tester l'application est de l'exécuter de bout en bout et manuellement. Cependant, lorsque trop d'étapes sont impliquées dans son exécution et son test de bout en bout, de nombreux développeurs perdent leur concentration ou deviennent paresseux ; par conséquent, de nombreux défauts entrent dans la version.
3. CI/CD — Déploiement facile
L'importance de CI/CD est déjà bien reconnue pour tout projet. Cependant, son importance est d'une grande valeur, surtout dans un projet de Startup. Ce n'est pas seulement lorsque vous êtes prêt ou sur le point de vous lancer en production, mais plutôt dès le début, lors du déploiement de vos services dans n'importe quel environnement, y compris le développement et l'assurance qualité.
En plus de déployer automatiquement vos services uniquement, le fait d'avoir votre infrastructure sous forme de code à l'aide d'outils tels que Terraform ou similaires sera très bénéfique pour votre startup.
Dans un démarrage précoce, vous vous verrez déployer vos services plusieurs fois par jour dans tous les environnements, et tous ces déploiements prennent du temps supplémentaire sans parler du risque d'erreur humaine. L'automatisation de ce processus peut vous libérer, vous et votre équipe, d'éventuelles erreurs et vous faire gagner du temps.
Conclusion
Le rôle d'un CTO est de jeter les bases d'une Startup du côté technologique. Au début, il ne pouvait s'agir que d'une équipe d'une seule personne où le CTO lui-même faisait tout le travail. Au fur et à mesure que le projet se développe et que le besoin d'embaucher plus de membres d'équipe se fait sentir, les règles ci-dessus peuvent facilement superviser un projet d'une personne pour qu'il se développe de manière exponentielle.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































