Comment estimer un projet de développement Web

Évaluer correctement la durée d'un projet de développement Web revient à deux choses: être capable de diviser le projet en petits morceaux et tirer parti de votre expérience pour comprendre la durée de chaque morceau. Dans cet article, je vais partager des approches pour faire ces deux choses ainsi que pour savoir quoi faire si vous n’avez pas cette expérience sur laquelle vous appuyer.

Quand avez-vous besoin d'estimer

Il est important d'estimer la durée d'un projet si votre facturation est basée sur le temps. Vous pensez peut-être que si vous facturez à l'heure (ou à la semaine ou au mois), vous n'aurez pas besoin d'estimer l'heure. Cela peut être vrai, mais la plupart des clients voudront comprendre le coût total du projet.

Si vous facturez un prix de projet fixe ancré au temps que prendra le projet, l’estimation sera cruciale pour vous assurer de respecter au moins votre taux horaire minimum et d’espérer en tirer un bénéfice supplémentaire. Si vous estimez la moitié du temps nécessaire pour mener à bien un projet, cela signifie que votre taux horaire correspond désormais à la moitié de ce que vous aviez initialement calculé. Rien n’est plus démoralisant que de devoir travailler sur un projet forfaitaire qui dépasse déjà de loin votre estimation initiale.

Si vous établissez une tarification des projets en fonction de la valeur, vous avez encore besoin d’une estimation approximative de l’effort requis. Cela vous permet de faire une vérification de la réalité par rapport à votre tarification pour vous assurer que vous faites au moins votre taux horaire minimum. La tarification basée sur la valeur devrait vous permettre d’augmenter considérablement votre taux horaire effectif, mais si vous essayez de travailler sur un projet dont la valeur est faible pour votre client, vous risquez de travailler à un taux très bas. En acquérant de l'expérience, vous aurez une idée précise des projets que vous pouvez vous permettre de réaliser et de ceux qui ne sont pas suffisamment utiles à votre client pour en valoir la peine.

Pour une discussion approfondie sur la tarification de vos projets, consultez mon guide ultime sur la tarification du développement Web freelance.

Le briser

La plupart des projets que vous recevez sont trop volumineux pour être estimés. Les projets sont des collections de nombreuses tâches distinctes. Vous avez beaucoup plus de chances de prendre l’une de ces tâches et d’estimer avec précision le temps qu’il faudra, au lieu de vouloir estimer le projet dans son ensemble. Enregistrez ces tâches individuellement afin de pouvoir estimer chacune d’elles séparément.

Regardons un exemple.

Exemple: Rendre mon blog WordPress plus rapide et moins cher!

Un client vient me voir avec un site WordPress à fort trafic. Le site est lent et l'hébergement coûte cher. Le client veut que je l'aide à résoudre ces problèmes. Je propose d’adapter le site à GatsbyJS, un générateur de site statique construit sur React. Cela permettrait au client de servir le site sur une seule page statique, ce qui le rend super rapide et facile à héberger. Le client aime l'idée mais pose la question redoutée «Combien cela coûtera-t-il?»

Pour répondre à cette question, nous devons d’abord comprendre combien de temps cela prendra. Pour les besoins de cet exemple, nous supposerons que nous évaluons le projet en fonction du temps qu’il faudra pour le mener à bien, car c’est le scénario dans lequel l’estimation est primordiale. Découpons-le en plusieurs parties.

Répartition au plus haut niveau

  • Adapter le thème WordPress à GatsbyJS
  • Migrer le contenu vers le site GatsbyJS
  • Facilitez l'ajout de contenu, la création et le déploiement du site pour l'utilisateur

Nous avons maintenant pris un seul projet - déplacer un site WordPress vers GatsbyJS - et nous l'avons divisé en trois parties. Ces pièces sont encore trop volumineuses pour pouvoir être estimées. Combien de temps faut-il pour «adapter un thème WordPress à GatsbyJS?». Je ne sais pas. Combien de temps faut-il pour "faciliter aux utilisateurs l'ajout de contenu, la création et le déploiement du site?" Encore une fois, je ne le sais pas. Cela signifie que mes pièces ne sont pas assez petites. Faisons une autre passe.

Répartition de l'adaptation du thème

  • Adapter le thème WordPress à GatsbyJS
  • Trouvez les polices utilisées dans le thème WordPress
  • Migrer les styles typographiques globaux
  • Adapter l'en-tête
  • Adapter la zone de contenu
  • Adapter le pied de page
  • Adapter la barre latérale

En réfléchissant à la manière de décomposer l’adaptation du thème, j’ai réalisé que certaines pages du site n’utilisaient pas l’en-tête général, la zone de contenu, le pied de page et la barre latérale. Ces pages sont construites sur mesure avec un générateur. Je vais devoir les construire manuellement.

  • Recréer des pages WordPress personnalisées

C'est un effet secondaire agréable de la décomposition de vos projets. Vous découvrirez des éléments du projet que vous auriez peut-être négligés.

Réflexion sur la migration de contenu

  • Migrer le contenu vers le site GatsbyJS

En regardant celui-ci, j'ai réalisé que j'avais des décisions à prendre. Gatsby a des plugins qui me permettent d'extraire du contenu de nombreuses sources différentes. Je dois décider quelle source a du sens pour ce projet.

Si je le voulais, je pourrais le récupérer à partir de la base de données WordPress existante, mais cela voudrait dire que le client aurait toujours besoin d'héberger la base de données quelque part. Cela donnerait à mes clients la possibilité de créer du contenu dans le tableau de bord WordPress, ce à quoi ils sont déjà habitués. Je ne sais pas à quel point c'est important. C’est probablement une bonne question à poser au client.

Si je voulais faire une nette rupture avec WordPress, je pourrais utiliser un autre CMS que Contentful. Cela nous laisse toujours avec une facture considérable pour le CMS. Mon client étant préoccupé par le prix, je ne veux pas aller dans cette voie. En discutant de cette question avec mon client, j’ai appris qu’il était à l’aise avec Markdown. C’est pourquoi je choisirai le contenu.

J'ai fait une petite recherche et appris que cette décision a rendu l'étape actuelle assez simple. J'ai trouvé un outil qui convertit vos publications WordPress en Markdown et crée la structure de répertoires appropriée pour Gatsby. Je devrais probablement le tester pour être sûr que cela fonctionnera, mais si ce n’était pas le cas, je pourrais écrire un script en ligne de commande qui effectuerait la conversion pour moi. Si je veux être totalement en sécurité, je peux plutôt estimer cela. Si l’outil existant fonctionne, c’est un bonus pour moi!

Dans les deux cas, je ne pense pas avoir besoin de casser celui-ci plus loin maintenant.

Automatisation des versions et du déploiement

  • Facilitez l'ajout de contenu, la création et le déploiement du site pour l'utilisateur
  • Générer des pages à partir de sources Markdown

Depuis que j'ai choisi Markdown, je sais que j'ai besoin de cette étape pour permettre à mon client d'ajouter du nouveau contenu. Je ne sais pas trop ce que je veux faire de la construction et du déploiement. La chose la plus simple à développer serait un simple script de ligne de commande à créer et à déployer, mais cela ne fonctionnera pas bien pour tous les clients. Même de nombreux développeurs ne sont pas à l'aise avec la ligne de commande, sans parler des êtres humains ordinaires.

Quelques recherches supplémentaires révèlent Netlify CMS. C'est une interface sophistiquée pour l'édition de fichiers dans un référentiel Git. J'ai trouvé un démarreur Gatsby qui inclut tout ce dont j'ai besoin pour créer et déployer le site après l'ajout de nouveau contenu via le CMS Netlify. Encore une fois, cette recherche précieuse a rendu cette pièce beaucoup plus simple.

  • Travailler à partir de démarreur gatsby-starter-netlify-cms

La ventilation finale

  • Adapter le thème WordPress à GatsbyJS
  • Trouvez les polices utilisées dans le thème WordPress
  • Migrer les styles typographiques globaux
  • Adapter l'en-tête
  • Adapter la zone de contenu
  • Adapter le pied de page
  • Adapter la barre latérale
  • Recréer des pages WordPress personnalisées
  • Migrer le contenu vers le site GatsbyJS avec l'outil de conversion
  • Facilitez l'ajout de contenu, la création et le déploiement du site pour l'utilisateur
  • Générer des pages à partir de sources Markdown
  • Travailler à partir de démarreur gatsby-starter-netlify-cms

Maintenant, j'ai enfin des morceaux que je pourrais espérer estimer avec précision.

Estimation des pièces

Voici où sont les enjeux: attribuer des chiffres à chacune de ces tâches. Vous allez vous appuyer sur l’une des deux choses pour trouver des chiffres:

  1. Votre expérience passée à faire la même chose ou quelque chose de similaire. Si tout ce que vous avez est votre mémoire, c’est mieux que rien… mais pas beaucoup. Idéalement, vous avez suivi votre temps et vous pouvez parcourir l'historique pour savoir combien de temps cette tâche a réellement pris dans le passé.
  2. Votre meilleure hypothèse. C’est triste mais vrai, mais la science et les faits ne vous mèneront que très loin dans votre estimation. J'espère que vous avez une sorte de base pour cela. Même si vous n’avez pas fait la tâche que vous avez estimée, vous avez peut-être appris à faire quelque chose de similaire dans le passé et vous l’avez ensuite fait. Le temps qu'il a fallu pour faire cela pourrait être similaire au temps qu'il faudra pour faire cela.

Mais je n’ai pas / assez / la bonne expérience!

Quand vous êtes nouveau, vous vous retrouverez beaucoup plus enclin à deviner qu’à l’expérience. C'est bon.

Vous allez vous tromper. Vous allez considérablement sous-estimer quelque chose et réduire votre tarif horaire sur ce projet à 8 $ / heure. Vous pouvez même faire cela deux ou trois fois (ou plus).

Ce que vous achetez avec autant de revenus perdus, c’est l’expérience dont vous aurez besoin pour faire une meilleure estimation la prochaine fois. Vous ajoutez un point de données qui sera pris en compte dans votre prochaine estimation de projet. Assurez-vous de le capturer afin que votre argent ne soit pas gaspillé.

Des choses auxquelles vous ne penserez même pas

Communication client

Quelles sont les attentes du client en matière de communication? Veulent-ils vous rencontrer une heure par jour ou une fois par semaine? Est-ce qu'ils vous laissent ça? Quoi qu’il en soit, vous allez passer un peu de temps à communiquer avec le client. Assurez-vous de bien prendre en compte cette période dans votre estimation.

Révisions

Ce problème peut être résolu dans votre contrat en exigeant que les conditions soient renégociées en cas de révisions approfondies, mais vous devrez probablement faire au moins quelques révisions mineures sur presque tous les projets. Assurez-vous de tenir compte de cela.

Voyage

La plupart des tâches de développement Web ne vous obligent pas à voyager, mais certaines personnes s'attendent à ce que vous veniez dans un bureau pour travailler ou simplement pour vous enregistrer ou assister à des réunions. Ce voyage prend du temps que vous devriez demander dans le cadre du projet.

Comment commencer

Si vous débutez en freelance, voici comment commencer.

  1. Casser le projet du mieux que vous pouvez. Vous voulez des pièces suffisamment petites pour pouvoir les estimer, mais vous voulez éviter de passer de 3 à 4 heures à cette étape, car tout se décompose en une poudre fine.
  2. Déterminez les parties sur lesquelles vous avez le moins la moindre idée. Faites un peu de recherche sur chacun de ceux-ci jusqu'à ce que vous ayez une idée un peu plus précise de leur durée. Encore une fois, trouvez un équilibre ici. Vous pouvez évidemment faire le projet pour éliminer toutes les conjectures, mais cela va trop loin.
  3. Prenez votre meilleur coup avec chaque tâche. Je sais que vous n’avez pas beaucoup d’expérience, mais utilisez ce que vous avez. Si vous rencontrez une tâche que vous n'avez absolument aucune idée pour commencer, cette tâche pourrait ne pas être bonne pour vous à ce stade de votre pratique de la pige. Il n’est pas honteux de dire au client que le projet n’est pas un bon choix et de recommander quelqu'un d'autre. Vous pouvez toujours être le héros en aidant le client à trouver une solution.
  4. Doublez toutes vos estimations. Au moins les doubler. Les développeurs Web sont extrêmement optimistes. Vous constaterez que vos estimations qui, à votre avis, étaient basées sur les «pires scénarios» se situaient quelque part au milieu des résultats possibles. Vous le découvrirez en appliquant le pire scénario possible à quelques-unes de vos tâches. Si vous doublez tout, vous ne perdrez pas votre chemise pour ces tâches et le tampon supplémentaire dont vous disposez pour les tâches qui se sont bien déroulées peut vous permettre d’atteindre votre estimation globale du projet.

Si vous avez un seul article à tirer de cet article, vous devriez le perdre à la fois en tant que nouveau développeur et en tant que consultant expérimenté. Ne perdez pas une tonne de temps à essayer de le rendre parfait.

Prenez une heure ou deux pour faire le point et faire des recherches. Approchez-vous autant que possible et avancez. Enregistrez ce qui s'est réellement passé et insérez ces informations dans votre processus la prochaine fois. En fin de compte, vous remarquerez que la sous-estimation se produira beaucoup moins souvent que vous ne vous en approcherez. C’est vraiment le meilleur que vous puissiez espérer.

Je donne 4 séances de mentorat gratuites chaque semaine sur raddevon.com. Peu importe l’endroit où vous vous trouvez dans votre parcours - que commencer, essayer de passer de développeur débutant à développeur senior ou quelque chose entre les deux. Rendez-vous là-bas pour obtenir le vôtre!

Publié à l'origine sur raddevon.com.