Developper un projet à la va-vite Vs developper un projet en mode Pro dev


Le post va être court mais je fais juste une analyse perso sur une histoire vécu que je vis encore et que je vivrai jusqu’à la fin de ma vivifiante vie…

Je tiens à préciser que ce constat est à placer dans le contexte de réalisation de projets web avec très peu de personnes (1 ou 2) et pour son compte perso, pas de cas chez Facebook où on a le temps et les moyens de faire les choses en grand.

J’ai toujours été entouré de très bons devs, en fait je me suis toujours rapproché des bons devs, laissant les moins bons de côté. Moi je suis un bâcleur, je code avec mes pieds mais ça marche mais ça bugge beaucoup, donc du coup je me retrouve très souvent à débugger un projet qui marche mais que j’ai mal codé.

J’ai pu constater durant ces 5 dernières années un fait que peu de personnes pourront contredire:
En faire trop c’est mal !
En effet les bons dev ne vont pas penser à la suite du projet (sa mise en ligne, son developpement commercial, le fait qu’il faille manger des nouilles Barilla, payer ses factures, etc…). Ils vont donc “prendre leur temps” à décortiquer le projet sous toutes ses formes, étudier les diférentes possibilitées techniques, l’âge de ma grand-mère, lire des tonnes de docs sur les dernière version Beta d’un plugin russe traduis en chinois mais qui peut afficher l’heure sur la page sous forme holographique (suivez mon regard… ;) )

Au final on a un projet béton (testé par tous les trous) , super compatible avec les premiers téléphone à manivelle, qui tourne sur un serveur qui tiens sur une clef usb, qui affiche l’heure en chinois, c’est merveilleux.

Mais hé ho !
On a passé 1 mois sur un truc que moi (le bâcleur professionel, qui fait plein de trucs qui buggent pas compatibles) j’aurais fais en 1 semaine.

Et pendant ce temps ?
Les 3 semaines qui me restent je vais les passer à tester le projet dans la vie réélle, demander si il plait aux gens, faire la promo, faire des backlinks, voir si ça plait ?!

Pour conclure:
Je ne critique ni l’une ni l’autre de ces deux méthodes, je sais que les Dev pros vont s’en donner à coeur joie pour me démonter (visez les fesses SVP) Mais au final j’ai à mon actif 3 projets qui ont rapportés de l’argent et en rapportent encore pour certains d’entre eux, qui ont atteinds pour 2 d’entres eux plus de 100 000 visiteurs uniques par jours, qui ont été developpé en quelques semaines pour le plus gros et en quelques jours les 2 autres.
Qui buggent à morts mais qui m’ont permis depuis ces 5 dernières années de voyager, de manger, de payer mes factures, loyer, impot et d’être libre comme le vent…

Faites moi part de vos impressions, j’aimerai ne plus être le seul dans l’univers…

PS: J’aime le fouet et le martinet…

32 thoughts on “Developper un projet à la va-vite Vs developper un projet en mode Pro dev

  • Sam

    Pour la remise en context, Max vit (confortablement) de ce que ses projets lui rapportent.

    95% des dev Web n’ont jamais mis en oeuvre des projets complets qui ont autant de traffique / charge que les siens ni qui utilisent autant de serveurs / composants que les siens.

    Je ne veux pas dire par là que c’est une personne extraordinnaire. Mon propos ici est plutôt que:

    – La plupart des devs (excepté les excellents freelances ou les mecs de grosses boîtes, et j’exclus les SS2I) n’ont aucune idée de ce que veut dire développer sur une large échelle.
    – La plupart des devs ne vivent pas de la réussite de leur création. Max n’a pas le choix: si son site ne marche pas, il ne bouffe pas. Il faut que la thune rentre. Les employés, surtout en France, n’ont pas le quart de cette contrainte.

    Mais il y a le revers de la médaille:

    – Max n’a aucune idée de ce que veux dire “créer une solution clé en main”. La notion de client B2B est complètement abstraite pour lui, satisfaire un client pro, il le fait très très rarement, et jamais dans les conditions de l’employé français moyen. C’est une challenge qu’il ne connait pas.
    – Il a une liberté totale. Si ça foire, personne ne va lui crier dessus. Il choisit ses horaires. Si ça pête, c’est son problème, il n’est responsable pour personne d’autres.

    Tout le monde ne peut pas se permettre ça.

    Notre plus gros débat depuis qu’on se connait, c’est mon forcing pour faire les refactorings, le code propre et la doc, versus son obsession de mettre des trucs qui marchent en ligne le plus tôt possible.

    Moi je suis freelance, je forme des gens, je livre des projets de dev, et avoir un truc qui pête que mon client ne peut pas réparer n’a pas les mêmes conséquences. Je comprends donc les deux points de vues.

    Mais il faut reconnaitre une chose: je n’ai JAMAIS de ma vie mis autant de projet en ligne qui soient utiles et qui marchent que depuis que je travaille avec Max.

    Release early, release often.

    Car quand on est dans une logique de service en ligne pour le grand publique, avoir un truc imparfait qui a des clients, c’est mieux que d’avoir un truc niquel que personne n’utilise.

    • Sam

      Il est évident que vous ne voulez pas embaucher Max pour lancer un satellite.

  • stopher

    +1 dans l’idée,
    “Ce qui est simple fonctionne bien”

    Puis la durée de vie d’un projet web étant relativement court .. autant aller vite.

    Quelques règles restent cependant indispensable dans les deux cas, les commentaires dans le code et une doc ( même minimaliste ) sur le fonctionnement globale .

    Ch.

  • Max Post author

    Pour le lancer je le lance, après chais pas où il va tomber le satellite ^^

    #stopher Oui la doc c’est primordial si on veut repasser plus tard sans perdre trop de temps à comprendre pourquoi on a mis l’oeuf avant la charette sans avoir voler le boeuf auparavant. Je commente pas mal en général et ça ne mange pas de pain, c’est un peu de temps en plus au début pour en gagner vraiment bcp à la fin.

  • fero14041

    Tiens, ça m’a rappelé des cours de biologie…
    C’est comme si Max adoptait une stratégie en deux temps: d’abord, essaimer un maximum, multiplier les projets (sélection r), avec comme objectif qu’il y en ait dans le lot qui “survivent”. Puis, une fois ces projets viables identifiés (les “survivants”), stratégie d’investissement maximum sur ceux-ci (sélection K). Bref, il est sûr de “gagner”, quelles que soient les conditions du milieu, mais au prix d’un plus gros coût sur le long terme des projets viables, puisque “mal” démarrés (car démarrés “au plus tôt”). J’ajouterais que ce surcoût d’entretien des projets sélectionnés engendré l’oblige sans doute à ne démarrer de nouveaux projets… qu’à faible coût (sélection r) — et la boucle est bouclée.

  • fero14041

    Haha, sympa le tampon! Il ne lui manquerait toutefois pas un petit TM, à la DLFP ?-)

  • roro

    Je préfère un code fait à l’arrache dans lequel on s’y retrouve…Qu’un code super élégant auquel personne ne comprend rien….Amen!

  • Muchos

    Je n’ai JAMAIS de ma vie mis autant de projet en ligne qui soient utiles et qui marchent que depuis que je travaille avec Max.

    Quelle synergie ! Ce n’est pas un duo, c’est un couple ^^

  • Max Post author

    en fait c’est un peu comme dans une partouze, on a plein de sujets, on les essais et celle qui a le meilleur taux de compression anal qui retiens notre attention, on a plus qu’à travailler dessus… C’est de la bio aussi… Selection A

  • blou

    hey! super vos articles les gars, je vous ai connu grâce à l’effet sebsauvage :)

    Pour ma part je développe quelques web app persos à l’arrache et j’ai quelques projets d’app pour le grand public mais le tournant c’est d’adopter un framework!

    Quand on est habitué à développer ses petits bidules dans son coin, c’est vraiment un pas difficile à faire que d’adopter un des nombreux framework dispos… Mais je suis persuadé que ça en vaut la peine.

    Et puis par rapport à l’article, j’imagine qu’il faut savoir trouver un juste milieu pour pouvoir s’y retrouver :)

  • Sam

    Utiliser un framework n’a rien n’a voir avec la propreté du code.

    Nous on utilise Django, mais on pont parfois du code bien pourri.

    J’ai vu du code PHP très propre, et du code ROR hyper dégueu.

  • Max Post author

    Merci pour le compliment blou.

    En effet on bosse sous Django et Bottle pour les plus petits projets mais ça n’empêche pas de coder comme une truie violette. Ceci dit ça aide un peu à mieux s’organiser et à acquerir un peu plus de logique de dev je trouve.

    faut de tout pour faire un monde ^^

  • Freak0

    En fait au delà de l’utilisation d’un framework, c’est l’industrialisation du dev qui est une étape lourde à mettre en place.

    Quand tu commence à coder une appli qui va utiliser les web-services développé par Chantal mais que chantal elle a pas encore commencé, que de toute façon la base est même pas encore en place etc …

    C’est là que la phase de conception est importante, elle permet de faire bosser tout le monde en même temps et quand moment de la mise en recette, tout se branche gentiment comme par magie (dans un monde de bisounours hein).

    La “programmation par contrat” c’est vraiment un truc génial mais ça a un peu du mal à se mettre en place…

    Bon je vous laisse faut que je mette un coup de pression à Chantal…

  • Max Post author

    Chantal si tu nous entends, sache que sam et moi-même sommes de tout coeur avec toi…

  • kage

    Tres bon billet est-il possible d’avoir les liens des 3 GRANDS projets du célèbre pythoniste MAX!

  • Sam

    Je crois que tu n’as pas compris le principe de blogger anonyme, kage :-)

    Un service connu, y a une boîte derrière. Et une boîte, son dirigeant est connu.

  • Sam

    Ah non, tout l’astuce c’est que tu ne dois pas nous croire. Nous on écrit, si ce que tu lis te plais, profites en, si ce que tu lis ne te plais pas, critique le en comment. Et si tu t’en tamponne le coquillard avec une patte d’astrakan femelle, le Web est grand.

    Que nous soyons des guignoles ou des cadors n’a aucune importance. Ce blog n’est pas là pour révolutionner le monde, mais pour le plaisir.

    L’important est que tu trouves autant de plaisir à venir ici que nous à te recevoir. Le reste c’est du détail d’implémentation.

  • Freak0

    En fait j’avoue, cette information concernant les 3 grands projets à succès de Max m’a donné envie d’en savoir plus.

    Est ce que l’on pourrait avoir d’autres informations ? Sans brisé l’anonymat de Max évidement :)

    Quel type de service, qu’elle audience, etc …

  • Sam

    Dans le lot on a quatre sites de streaming (qui hébergent, transcodent et streament ses propres videos), un site d’hébergement de fichiers, un site de listing de médias et quelques sites satellites.

    Les metrics montent a 5 zeros pour les visites uniques par jours, et les quantités de données sont chiffrées en To.

    C’est pas amazon, mais c’est pas non plus le site du vendeurs de pizza du coin.

    Avant de bosser avec Max, j’ai bossé sur des projets pour l’OMS, l’Unicef, The Bill Gates fondation (pas MS hein, leur organisme caritatif), Thoughtwork (le plus gros sous-traitant de Google) et feu Neuf télécom. Aucun de ces projets n’approche ce genre de contraintes en terme de ressources et d’associations de techno.

    Je pense qu’un de ces quatres on fera un article sur des stacks techno qu’on utilisent et pourquoi.

    EDIT: attention cependant, les projets de Max plantent. Un max. On passe notre temps avec les mains dans le moteur. Développer à la ouanégaine, c’est se payer le poteau à la maintenance. Toujours. Et ça a un impact sur le service client, les révenus et les coûts d’exploitation. A l’inverse, les projets dont j’ai parlé plus hauts, je n’ai quasiment jamais eu (bon, sauf pour l’unicef, on avait grave merdé) à revenir dessus.

  • Freak0

    Hum ça ça m’intéresse fortement, je souhaite mettre en place un système de streaming de mon coté, pas qqch de grandiose, juste de quoi me permettre une certaine indépendance vis a vis de plateformes type youtube ou viméo, mes clients web ont du mal à accepter d’héberger leurs vidéos sur une plateforme qu’on ne maitrise pas.

  • Max Post author

    pour ton systeme de streaming tu peux faire simple, django + base de données mysql, utilise FLV pour les videos pas le mp4 car il faut que le player lise les données atom et ça fait un temps de latence à chaque seeking, pour encoder utilise ffmpeg il fait ça tres bien, on a un systeme de queue pour l’encodage , tu peux regarder l’article de sam sur task master. pour tout ce qui est nb de vues, cache des pages etc on met ça dans redis.

  • Freak0

    En fait je suis plus php mais c’est un choix :)

    Concernant les vidéos, je souhaitais essayer de me passer de me passer de flash (donc du flv) mais je ne sais pas trop comment faire ça du coup. :)

    Enfin ce sera pour plus tard :p

    • Max Post author

      Jwplayer offre une version html5 qui permet de se passer de flash, mais faut avoir les navigateurs compatibles, à voir si tes clients sont à jour

  • Sam

    Ouai, on a essayé aussi de se passer de flash en utilisant le combo JWplayer + MP4 mais on s’est fait couillonné sur le seeking. Le mp4 a la bonne idée d’obliger le téléchargement entier des métadata avant de pouvoir lire la première frame, et du coup sur les grosses vidéos, on a tout l’index (jusqu’à plusieurs Mo) qui doit être dl avant de voir la moindre image. C’est très relou pour le end user. Du coup on a tout réencoder, et réencoder des mois de videos, c’est un énorme boulot.

    Si tu es en PHP, symfony reste le référence il me semble (cakePHP, code igniter et zend sont loin derrières), après pour le streaming un petit lighttpd avec le mod qui va bien, et redis pour pour le cache et le rating ça passe effectivement niquel (mais gourmand en ram).

    Bon, après y a plein des chose à savoir en terme de hardware, de phase d’encoding, de gestion de files de tasks, etc. Mais c’est la base.

  • Tom

    Autant je ne lis pas tous vos articles, mais ceux que je lis sont à chaque fois géniaux !
    En particulier celui-là, ça permet de voir les choses autrement, et c’est important, surtout quand on commence à se monter ses propres projets (ce serait pas le moment de passer à côté d’une bonne méthode d’organisation).

    Le problème c’est que quand on est un peu trop attachés aux détails on à toujours du mal à pousser le code en ligne (bon allez je le fait… meeeeeerde le bouton est pas bien aligné. Bon maintenant c’est ok… c’est quoi cet aliasing là ? allez je refait mes icônes, etc…). Mais bon je suis peut être monomaniaque :]

  • iTux

    Poste intéressant et les comms aussi :)

    Je ne connaissais pas votre blog, je m’y abonne de suite.

    Juste un petit détail : svp n’utilisez plus le mot “autiste” dans ce contexte …

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.