Practical Programming
Projet perso réussi

9 clés pour un projet perso réussi

De débutant à Tech lead, tous les développeurs ont dans leur repositories des projets personnels. Certains sont le fruit d’idées ayant des ambitions disruptives, d’autres sont de simples bacs à sable pour s’entraîner qui ne verront jamais la lumière d’une requête provenant de l’internet !

Tu envisages ou tu as fait une formation accélérée pour devenir développeur ? Sache que c’est plus difficile que ce qu’il n’y paraît.
Télécharge mon guide “Réussir sa reconversion pour devenir développeur

Quelle que soit la raison de sa création, les projets perso naissent, parfois vivent et souvent meurent. Dans cet article, je vais vous partager mes X meilleurs conseils pour que vos projets voient le jour et aient une chance de se confronter à de vrais utilisateurs !

1 – Être clair sur la raison d’être du projet

Les projets de veille technos

Ces projets ont pour vocation de vous faire pratiquer une techno en particulier. Il n’a pas vocation à apporter une valeur ajoutée à des utilisateurs et souvent pourra vivre en local avant de mourir oublié dans votre répertoire de travail.

Les projets “portfolio”

Ces projets existent pour montrer à d’éventuels employeurs (ou client si vous êtes freelance) ce que vous savez faire. Il peut avoir un intérêt à être déployé si vous voulez montrer vos compétences en devops ou si l’interface et l’expérience utilisateur est aussi importante que le code lui même. Ce qui peut être le cas si vous êtes développeur Frontend ou intégrateur.

Le “MVP” et projet entrepreneurial

Suivant où vous en êtes dans votre projet entrepreneurial, vous pourriez être amenés à développer un projet à des fins lucratives (ou caritatives). Ce projet peut être à vocation de “Proof of Concept” ou au stade de MVP en vue d’être en V1. Suivant où vous en êtes dans la découverte utilisateur, le projet pourra avoir pour but uniquement de découvrir un besoin ou, si celui-ci est déjà identifié, de construire une première version fonctionnelle d’un produit.

2 – Tempérer ses ambitions

Rome ne s’est pas faite en un jour, votre projet non plus. Lorsqu’on démarre un projet perso, on peut être tenté dès le départ d’avoir une liste de features qui nous paraissent essentielles à implémenter. Le plus souvent ce n’est que votre esprit qui s’emporte par enthousiasme. Il est fort probable qu’au démarrage vous n’ayez pas besoin de système d’authentification par Google ou d’envoyer des notifications à tout va.

Listez toutes vos idées avant qu’elles vous échappent. Que ce soit sur papier, je vous conseille de prendre en photo vos notes si c’est votre choix de prédilection, sur une app de prise de note type Evernote ou directement dans le Readme du projet Github, lister puis prioriser les fonctionnalités que vous souhaitez implémenter sont des étapes à ne pas sauter.

3 – Prioriser avant de coder

Dans le cadre d’un projet veille techno, votre priorité est d’arriver au plus vite à l’élément que vous voulez mettre en pratique. Par exemple vous essayez d’apprendre à implémenter ElasticSearch, inutile de démarrer un serveur web complet avec une archi MVC et une base de donnée SQL ou MongoDB.

Dans le cadre d’un projet portfolio ou un projet entrepreneurial, les priorités sont différentes puisque vous cherchez avoir un produit fonctionnel en ligne. Pour ce faire, prenez la liste de fonctionnalités que vous avez établie en étape 2 et classez les en 3 catégories:

  • les fonctionnalités “métier”
  • les fonctionnalités “techniques”
  • les fonctionnalités “autres”

Imaginons que votre projet soit une app de liste de course partagée. Voici à quoi ressemblerait votre répartition:

Metier:

  • Ajouter un produit
  • Barrer un produit
  • Retrouver ma liste
  • Avoir plusieurs listes
  • Ajouter utilisateur à ma liste

Technique:

  • Enregister la liste en BDD
  • Authentification
  • Recherche

Autre

  • Affichage en temps réel
  • Autocomplete des produits
  • Récupération des dernières listes
  • Gestion des droits de lecture et écriture

La liste métier va regrouper les geste “utilisateurs” sans prendre en considération les implications techniques. L’utilisateur d’une app de liste de course n’a que faire de savoir quelle base de donnée vous avez choisi et comment vous l’avez implémenté.

La liste technique va lister les contraintes techniques que vous aurez pour réaliser les gestes métier.

La liste autres va englober le reste.

A partir de cette liste, prenez toutes les fonctionnalités sans quoi votre application ne peut pas exister et enlevez toutes les autres. Par exemple, vous n’avez peut être pas besoin d’un système complet d’authentification. Pour démarrer une clé par utilisateur à mettre dans les paramètres de l’url peut faire l’affaire, quitte à créer les utilisateurs à la main pour les beta testers ou pour un compte demo.

Pour finir, classez les fonctionnalités par ordre de valeur ajoutée. La plus importante devrait être celle qui ferait le plus la différence pour un utilisateur. Par exemple, “ajouter un produit” à une seule liste est plus important que “créer plusieurs listes” ou même que “barrer un produit”.

4 – Hacher en miettes

A ce stade, vos fonctionnalités sont encore sous forme de gros blocs. Avant de commencer à développer, prenez le temps de découper vos fonctionnalités en tâches les plus petites possible.

En prenant la fonctionnalité “ajouter un produit à ma liste de course”, elle pourrait se décomposer en:

  • Créer le composant frontend pour ajouter un produit à ma liste
  • Créer la logique frontend qui va envoyer la donnée au serveur
  • Côté serveur, recevoir l’input du client
  • Le sauvegarder en base de donnée
  • Et enfin, retour sur le frontend, afficher l’élément qui vient d’être envoyé à ma liste.

Ce découpage de vos fonctionnalités en micro tâches est tiré de la méthode Kaïzen. Le fait d’avancer par petite étapes préserve le moral et vous donne le sentiment d’avancer. Chaque tâche complétée est une petite victoire, que vous pouvez accomplir le plus rapidement possible.

5 – Démarrer le plus petit possible

Lorsqu’on démarre le projet, on se retrouve bien souvent devant une montagne dès lors qu’on a créé le répertoire de travail et le repository sur github. Dans la continuité de l’étape précédente, toute petite avancée est une victoire à prendre.

Commencez par les pièces les plus évidentes, les tâches les plus basiques à réaliser. Faire le Hello World est souvent la première.

6 – Déployer tôt et souvent

L’erreur que j’ai souvent commise est de penser qu’il faut attendre d’avoir une version un minimum fonctionnelle de son app pour la déployer. C’est faux ! Il arrive que des problèmes ne surviennent qu’au moment où vous déployez votre application alors que tout semblait fonctionner sur votre environnement local.

Pour éviter les surprises et les debugging à rallonge, déployez le plus tôt et le plus souvent possible. J’ai pris pour habitude de créer un hello world et de le déployer immédiatement.

Ensuite à vous d’arbitrer sur la fréquence de vos déploiements. Si vous avez bien découpé vos fonctionnalités en micro tâches, déployer à chaque fois que vous complétez l’une d’entre elle peut être trop fréquent. Dans ce cas regroupez quelques tâches puis déployez.

Mais vous ne devriez probablement pas attendre d’avoir fini une fonctionnalité complètement pour déployer. Ce geste doit être un non-événement. Vous deviez pouvoir déployer votre application et revenir en arrière sans que ce soit trop laborieux ni chronophage. Ainsi vous ne procrastinerez pas et vous ne serez pas intimidé par cette étape.

7 – Tracker son rythme et son avancement

Même si çà n’est que rarement explicitement mentionné, gérer un projet est une compétence qu’on attend d’un développeur. Suivre l’avancement de votre projet est une étape dans sa gestion.

Plusieurs outils sont à votre disposition pour vous aider. Trello, Asana, Github, il existe une multitude de solutions. Je vous conseille d’avoir un board public sur Trello ou de créer un projet dans votre repository sur Github. Vous y listerez les fonctionnalités et les micro tâches sous formes de colonnes et vous pourrez faire avancer vos tâches au fur et à mesure que vous les complétez.

Sur un projet portfolio, il est important de garder ce board public et accessible à un potentiel employeur. Il va servir d’appui à votre candidature.

8 – Ne pas se formaliser avec l’apparence

A moins que vous soyez développeur Frontend avec une forte orientation UX/UI et intégration, ne vous formalisez pas avec la finition esthétique. Votre projet MVP a le droit d’être aussi moche qu’il veut, tant qu’il est utilisable.

Pour ne pas perdre de temps avec l’apparence, je vous conseille d’utiliser des librairies CSS comme Tailwind, Bootstrap ou Bulma. Il vous suffira d’ajouter quelques classes à votre HTML pour avoir un rendu présentable mais là encore, il ne faut absolument pas perdre de temps a essayer d’harmoniser les couleurs, aligner les boutons ou mettre en place une navigation responsive.

9 – Documenter l’avancée du projet

Cette étape est un bonus bourré de valeur, réservé à ceux qui auront eu le courage de lire l’article jusqu’au bout.

On sous estime trop souvent l’histoire d’un projet, qui est souvent aussi importante que celui-ci. Si vous travaillez sur un projet entrepreneurial, c’est grâce à ces histoires sur votre projet que vous trouverez vos premiers utilisateurs. Si c’est un projet portfolio, c’est là que vous piquerez l’intérêt des recruteurs.

Créez un compte sur Medium et forcez-vous à poster une fois par semaine sur l’avancement du projet. Parlez technique, parlez du problème que vous voulez adresser, parlez de vos défi que vous surmontez en construisant le produit, racontez les échanges que vous avez eu cette semaine lorsque vous avez parlé de votre projet à un autre dev ou à un potentiel utilisateur.

Postez ces articles sur votre Facebook perso et votre Linkedin. Vous serez surpris de voir à quel point les gens autour de vous sont curieux des vraies histoires plutôt que des photos de la dernière sortie au resto italien ou de vidéos de chatons.

Et de la persévérance

Pour qu’un projet ait une chance de servir son but, il faut faire preuve de persévérance. Vous allez plus d’une fois être tenté de vous orienter vers un nouveau projet, une nouvelle techno, une nouvelle approche. Si vous cédez à cette tentation, c’est la mort de votre projet.

Continuez à travailler uniquement sur ce projet et évitez tout autre engagement qui pourrait vous distraire de votre objectif.

Rayed Benbrahim

Rayed Benbrahim

Commenter

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.

Most popular

Most discussed