Journal Terminer ses projets, pas si facile ?

Posté par  .
Étiquettes : aucune
0
9
déc.
2006
Bonjour,

Je m'en viens poster sur un sujet assez pénible, concernant la
programmation amateur. J'ai appris la programmation en autodidact il y a
des années, et ai toujours eu plein d'idées. Mais mon gros probleme a
toujours été de finir mes projets.

Le probleme ne vient que rarement d'un manque de compétences: je "parle"
couramment C et C++, ai de bonnes notions de perl et de php, et ai des
bases d'asm x86, de python, et de bash.

J'ai remarqué que bon nombre d'amis programmeurs souffraient du meme
symptome, a savoir un grand nombre de projets en cours (souvent en version
0.0.1), mais aucun terminé. Il faut dire que j'ai en permanence la tete
pleine d'idées, ce qui fait que j'ai toujours envie de commencer un
nouveau projet (en vrac, un framework de devel de jeux vidéos, un
compilateur C, un éditeur de texte scriptable en perl, un lecteur audio
console avec affichage des lyrics, un OS, etc.); pour arranger les choses,
je suis tres exigeant avec les programmes que j'utilise, et ai donc plus
que souvent l'envie de les recoder. Enfin, je n'aime pas contribuer, car
j'aime avoir un controle complet sur un projet, son archi, etc.

Alors je me demandais s'il y aurait parmi vous des gens qui auraient des
idées ou méthodes pour terminer ses projets de maniere satisfaisante. Ca
parait un peu stupide de demander de l'aide a ce sujet, mais les personnes
souffrant des memes symptomes que moi comprendront.

(Désolé pour la perte de certains accents, j'ai switché vers dvorak-us il
y a deux semaines (d'ailleurs je ferai un journal la-dessus
prochainement))
  • # Deux pistes

    Posté par  . Évalué à 10.

    Bon, je suis mal placé pour répondre vu que j'ai tendance à ne faire que des petits trucs qui sont bouclés en deux jours ou des contribs/fixes sur les projets des autres. Mais d'un point de vue purement théorique, j'imagine que ces deux paramètres me pousseraient au cul si je me lançais un jour dans un truc plus conséquent :
    - choisir un projet que tu vas, personnellement, utiliser de façon régulière (idéalement quotidienne). J'imagine que si j'étais l'auteur de mon éditeur de texte, je continuerais longtemps à l'améliorer / peaufiner, à mesure que j'en découvrirais les lacunes et défauts.
    - essayer d'atteindre au moins le stade du "diffusable publiquement". Après, quand tu commences à recevoir des bugs reports ou feature requests, ça doit, je suppose, aider à rester motivé, parceque tu acquiers un certain sentiment de responsabilité vis-à-vis de tes utilisateurs.
  • # Définir ses Objectifs

    Posté par  (site web personnel) . Évalué à 10.

    Je suis un grand spécialiste des choses pas finies dans mon travail.
    Rarement satisfait de moi-même, ces choses traînent sans fin.
    Que ce soit dans mon travail, ou dans la vie de tout les jours.

    Le seul moyen de m'améliorer a été d'être suivi par un chef de projet exigeant,
    mais cela c'est passé dans la douleur pour nous deux.
    Maintenant que je sais que l'on n'attends pas des miracles de ma part,
    je me dérobe moins aux objectifs.

    La solution trouvée pour arriver à des objectifs précis a été de les
    définir _précisément_, et les quantifier, et surtout de re-découper .

    * Définir ses objectifs : Qu'attends tu de la version 0.1 de ta librairie de jeux ?
    * Quantifier : Dans combien de temps penses-tu y arriver ?
    Faire juste cela, ne te permettra pas de réussir si tu ne découpe pas tout en sous tâches.
    * Redéfini tes objectifs en sous tâches, d'une durée de 1/2 journée à 5 jours grand maximum.

    Avec tout ça, si tu est respectueux de ton objectif, ça devrait aller.

    Enfin l'aspect psychologique est très important; Sans doute attends tu de la reconnaissance dans tes projets. J'avais plus de facilité à travailler quand on me disais c'est bien, tu avances bien, plutôt que "c'est pas encore ça; y'a plein de bugs; faut refaire cette partie complètement".
    Essaie donc de rendre ton projet visible, pour voir si une communauté s'y intéresse. C'est encore mieux si des développeurs se joignent à toi.
    Car avancer seul dans le noir, c'est très difficile, impossible pour moi en tout cas.

    Bon courage.
    • [^] # rien à voir mais bon

      Posté par  (site web personnel) . Évalué à 4.

      Je crois que tu confonds « trackball » et « trackback » (sur ton blog).

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

      • [^] # Re: rien à voir mais bon

        Posté par  (site web personnel) . Évalué à 1.

        Et pour ton problème de spams, utilise spamplemousse et regarde les astuces de ploum (ploum.frimouvy.org).
        • [^] # Re: rien à voir mais bon

          Posté par  (site web personnel) . Évalué à 1.

          Effectivement, les gars, merci.
          Trackback et non pas (n'importe quoi ) trackballs.
          On sens le billet qui a été rédigé dans l'urgence.
          Pour l'article de ploum, effectivement, je connaissais, mais maintenant il va falloir mettre en pratique !!

          En tout cas, Merci.
  • # Projets pertinents

    Posté par  (site web personnel) . Évalué à 6.

    Essaye de voir quel logiciel n'existe pas encore (sous linux) et qui manque.
    Ensuite s'il y a de la demande, je t'assure que tu voudras continuer à le développer.
    C'est simple, si tu recois régulierement des emails te demandant telle ou telle feature, tu auras envie de les implémenter.
    Par contre si tu codes des trucs histoire de coder... Et que ca n'intéresse que toi (compilateur C et OS par exemple pour citer ce que tu as dit)... Je pense que si tu trouves une autre idée, tu seras plus facilement tenté d'abandonner le projet sur lequel tu bossais.

    Bon et sinon, tu peux aussi intégrer un projet déjà existant, ca ne te tenterai pas ?
    Par exemple je bosse sur un projet (gshutdown), on est 2 dessus et on a en fait pas pu bosser plus de 2 semaines dessus depuis fin aout par manque de temps... Donc on est assez ouvert pour que quelqu'un d'autre vienne filer un coup de main.
    J'imagine que beaucoup de projets sont dans le même cas.
    • [^] # Re: Projets pertinents

      Posté par  . Évalué à 2.

      C'est simple, si tu recois régulierement des emails te demandant telle ou telle feature, tu auras envie de les implémenter.

      Oui, enfin ça, ça dépend aussi de comment c'est demandé. Je travaille sur un projet où on me demande d'implémenter une feature particulière (qui serait extrêmement utile, tout le monde s'accorde là-dessus), mais qui prend des mois à développer. Quand on te saoûle toutes les semaines du style "alors ça en est où ?" (sous-entendu bouge toi le c.l faignasse) et que tu as très peu de monde qui participe (voire pas du tout pour ceux qui te réclament la feature en question), c'est pas très motivant non plus...
      • [^] # Re: Projets pertinents

        Posté par  . Évalué à 2.

        Dans ce cas, il faut qu'un "planning" même lointain soit écrit (peut être avec l'état d'avancement) et les gens n'ont qu'a s'y référer.
        • [^] # Re: Projets pertinents

          Posté par  . Évalué à 5.

          Et si tu as du mal à rédiger le planing, inspire toi de debian, ils ont une formule magique qui marche dans un peu tout les cas : ça sortiera quand ce sera prêt.
      • [^] # Re: Projets pertinents

        Posté par  . Évalué à 2.

        <humour>
        bouge-toi le cul feignasse !
        </humour>
  • # .

    Posté par  (site web personnel) . Évalué à 4.

    je vois quelques réponses et solutions.
    1) ne pas être tout seul
    2) choisir un framework de développement suffisamment riche pour ne pas se perdre dans des questions connes de développement ni être obligé de réinventer la roue.
    3) s'obliger à en faire un peu tous les jours : il vaut mieux faire 1/2h-1h par jour que 10h tous les dimanches.

    pour la 1) c'est mon gros défaut. Mais c'est difficile de trouver des gens disponibles.
    pour la 2), j'ai commencé un truc (parmi x) il y a 3 ans en php/postgres (prodebian.org), et j'ai eu l'impression de passer plus de temps à résoudre des questions inutiles qu'à vraiment avancer. Du coup je me suis mis à apprendre zope3 pour voir si ça permet d'être plus productif, et après des débuts (très) difficiles je suis (très) fortement enthousiaste.
    pour la 3) ça fait 1 mois que j'y arrive mais il faut avoir le temps. Comme je suis indépendant je me réserve toute la matinée pour apprendre et développer des nouveaux trucs et je bosse l'après-midi.
  • # Tiens...

    Posté par  . Évalué à -1.

    un framework de devel de jeux vidéos
    Ça me dis quelque chose ça.... ;-)
  • # Re: Terminer ses projets, pas si facile ?

    Posté par  . Évalué à 10.

    Ça ressemble au syndrome de la procrastination ce que tu décris (http://fr.wikipedia.org/wiki/Procrastination ).

    Pour avoir participé à quelques projets pleinements finalisés (hum, hum, proprios surtouts), il faut bien le reconnaître : peaufiner un projet pour qu'il soit bien intégré avec le système, s'assurer qu'il ne plante pas pour des conneries, que les cas d'erreurs affichent des messages compréhensibles, que la doc soit à jour, que la compatibilité ascendante soit un peu près préservée, que le déploiement se passe bien, vérifié qu'on a pas laissé d'instructions de debug, sans parler des problèmes purement ergonomiques, où les utilisateurs peuvent littéralement bloquer et qui t'oblige à repenser ton interface (ton égo en prends un coup là), tout ça c'est une montagne astronomique de boulot over-chiantissime (mais indispensable), qui fait qu'on a pas toujours envie de s'y mettre (d'autant plus quand on en a conscience).

    J'avais commencé il y a un an un framework : ma motivation était proche de 0. Pour avoir quelque chose de fonctionnel, il fallait aligner des tartines de code avant d'avoir quelque chose qui bouge à l'écran. Et quand on est seul, personne pour t'aider (puisque rien à montrer), il vaut mieux avoir une motivation en béton. Je pense que si j'avais été payé, le boulot aurait été torché en 2 semaines.

    Je pense qu'il y a une masse critique en-deça de laquelle ce n'est pas motivant faute d'avoir quelque chose de fonctionnel et au-delà où c'est tout aussi pénible, puisqu'on a l'impression de passer son temps à essayer ne pas casser l'existant (le syndrome usine à gaz, en somme). Garder un équilibre entre ces deux extrêmes est beaucoup plus difficile qu'il ne parait et d'après mon expérience (on va voir si les trollos vont exploser :-), le langage de programmation d'origine ne change pas grand chose.

    Je pense qu'avoir une gratification dans un projet, c'est souvent salvateur. La démotivation a tendance à augmenter exponentiellement en fonction des lignes de code à aligner avant de voir quelque chose à l'écran. Et même certains impératifs, comme la vie de famille te font radicalement changer tes priorités, être payé est souvent indispenble. Ou alors c'est comme disait la chanson : vivre libre, c'est vivre seul.

    Bon, tout ça, ça ne fait pas avancer le schmilblik des masses :-(
  • # Je ne peux pas t'aider

    Posté par  . Évalué à 10.

    En effet, moi, je finis toujours ce que
  • # ...

    Posté par  . Évalué à 2.

    Merci pour vos reponses, cela m'a donne des idees.

    Le fait de se mettre a plusieurs sur un projet est toujours plus motivant, a condition d'avoir les memes disponibilite.
    Par exemple, le jeu online 2d sur lequel je bosse avec deux amis pietine car le programmeur du client, qu'avant je voyais tous les jours IRL est partis a epita; du coup, cela fait des semaines que l'on ne s'est pas vus.

    Spell, tes suggestions m'ont beaucoup inspirees, je vais reflechir a tout ca.
  • # ...

    Posté par  . Évalué à 2.

    Oups, pas repondu a tout...

    @maxime: c'est pas mal le fait que mon projet puisse servir qui me motive (a moi comme aux autres), mais ca suppose d'arriver a une version un minimum utilisable. Pour ton projet, ne le prend pas mal, mais il ne me motive absolument pas. Non seulement je n'aime pas GTK (ni QT d'ailleurs), mais je ne vois pas vraiment l'interet (si je veux faire ce genre de choses, halt+cron me suffit).

    @Snarky: eh oui, a moi aussi...

    @pierthi: je crois en effet etre un parfait exemple de perfectionniste: mon code me satisfait rarement, et jamais ne serait-ce que deux semaines apres, ce qui est forcement genant niveau efficacite :/
    • [^] # Re: ...

      Posté par  . Évalué à 2.

      Mouais, perfectionniste, perfectionniste ... Un vrai perfectionniste va être obsédé par son code pour que celui-ci non-seulement marche, mais en plus soit le meilleur qui soit. Il est compulsif obsessionnel, quoi. Ce que tu décris est le syndrôme du poil dans la main. Je connais bien, j'ai un baobab dans la mienne.

      Tout est question de concentration, et/ou de motivation.

      J'ai croisé quelques perfectionnistes : ils ont fait des trucs déments (pas tous, cela dit). Ben c'est simple, ils n'avaient aucun autre projet entre temps (sauf éventuellement ceux du boulot). N'empêche, au bout d'un certain temps, si tu ne donne pas un côté pragmatique à tes projets (« ouais bon ok, c'est crade, mais le code est bien isolé, je pourrai le changer plus tard »), tu n'iras pas très loin, et tout restera au même point : au stade de projet.
      • [^] # Re: ...

        Posté par  . Évalué à 4.

        Je ne suis pas d'accord. Je ne suis pas spécialement paresseux (pas en prog en tout cas, pour le reste, ce n'est pas faux :p).
        Cela m'arrive souvent de partir tambours battants sur une idée qui m'enthousiaste. J'arrive à des résultats commençant à être intéressants, puis je découvre que j'aurais pu mieux faire telle ou telle partie (gestion mémoire, structures de données, fonctionnalité), et hop, je recommence parce que ça m'énerve de bosser sur quelqu'un chose dont les fondations ne me conviennent pas à 100%.

        Le problème est que beaucoup de choses ne me conviennent pas, à commencer par la STL en C++ (pour des tas de raisons über-techniques), la plupart des libs existantes (ncurses, gtk, qt, libxml2, les xsubs pour scripter en perl depuis C/C++, et des dizaines d'autres). C'est très rare qu'un outils me convienne parfaitement (expat est à mon goût quasi-parfait; si en plus il validait à coups de DTDs, j'en serais dingue).
        Autre exemple, les build system: make est trop bas niveau, scons est lent, les autotools sont polyvalents mais bordéliques et lourds, je commence à bien aimer cmake, mais je me sens limité par son langage. Du coup, j'ai souvent envie de m'en coder un, ce qui serait pas mal comme travail pas super productif.

        Pour arranger les choses, je suis assez dictatorial sur l'organisation du code, indentation (3 en espaces), commentaires (format doxygen), casse des caractères ("UneClasse", mais "une_fonction"), tout doit être réglé au poil de poil sinon ça me stresse et m'empêche d'avancer.

        Je sais que ça a un côté un peu pathologique, mais bon, le fait est que ça me gêne pas mal. Le coup des checklists avec petis objectifs réalisables est très bonne, mais là encore, faut que je refrenne l'envie de coder from scratch une appli web pour gérer ça, ce qui va me faire perdre encore des semaines.

        Je vais essayer aussi de bosser par sessions et de noter à chaque fois précisément ce qu a été fait, les bugs qui sont apparus (je viens d'installer mantis sur mon server).

        Bref, cpas gagné, mais je vais me motiver pour améliorer ça :)
        • [^] # Re: ...

          Posté par  . Évalué à 3.

          Y'a aussi le cas ou tu te rend compte que tu ne pourra pas faire ce que tu veut faire :/

          J'avais commencé un plugin amarok pour avoir une interface de gestion de la bibliothèque sur la freebox.

          Quand j'ai vu que la freebox ne gérait pas l'unicode, 90% de ma bibliothèque étant en Japonais j'ai laissé tomber.

          Je me voit mal choisir entre écouter ã©ããã¨å¨ ou ç�«ã�®ç´‰ã‚¸ãƒ£ã‚¤ãƒ´
          • [^] # Re: ...

            Posté par  . Évalué à 2.

            Oui sauf que là t'as un super hack, tu génère un GIF du titre côté serveur :)
        • [^] # Re: ...

          Posté par  . Évalué à 5.

          Il faut bien garder une chose à l'esprit, c'est que la perfection n'est pas de ce monde, et surtout pas en programmation /o\

          Perso, pour un projet assez complexe, j'essaie d'arriver à quelque chose de globalement fonctionnel rapidement, quitte à ce qu'il y ait des parties écrites à l'arrache au début (en s'arrangeant toutefois pour que l'interfaçage avec le reste soit propre). Une fois que l'ensemble est fonctionnel et que tous les concepts sont validés, je réécris les morceaux sales. C'est plus motivant pour moi dans la mesure où j'ai qqch à montrer.

          C'est très difficile de manière générale de partir sur quelque chose de "parfait" (en termes de structures de données, d'algorithmes, ...). Il y aura toujours un point de détail qui ne satisfera pas à un moment donné. Il faut essayer ne pas se focaliser dessus, sachant que rien ne t'empêche d'y revenir plus tard.
        • [^] # Re: ...

          Posté par  . Évalué à 2.

          >indentation (3 en espaces)
          Pourquoi tu n'indentes pas avec des tabulation en configurant ton éditeur pour qu'il affiche une tabulation comme trois espaces ? Ça évitera d'énerver quelqu'un qui voudrait te relire :p
  • # C'est la vie...

    Posté par  . Évalué à 4.

    C'est une constatation universelle - au moins en informatique :

    90% du projet est bouclé en 10% de temps.

    Ce qu i implique que les 10 % restant, "les petites conneries" comme la doc, le packaging, - les tests parfois - vont prendre beaucoup plus de temps que prévu. Et là, pas de miracle ou de méthode toute faite, il faut soit une carotte, soit un bâton, soit les deux.
  • # idées en vrac

    Posté par  . Évalué à 4.

    On dirait que tu as trop d'idées en même temps et que tu t'éparpilles. Essaie de te fixer une ligne directrice en commençant, et poursuit le projet avec une checklist et quelques objectifs le long de la voie.

    Sinon tu dis être perfectionniste. C'est un trait positif, mais l'être trop est souvent contre-productif.À être trop perfectionniste tu risques de n'être jamais content du résultat, si bon soit-il; comme Michaelangelo qui n'aimait pas trop la voûte de la chapelle Sixtine. À trop critiquer ton propre travail tu risques de te démotiver. Là aussi il convient de se réverver une petite marge de manoeuvre et d'avoir des objectifs réalistes pour ne pas avoir la sensation de n'être pas à la hauteur de la tâche.


    Bon c'est un peu pêle-mêle, mais il est à peine 13h du matin.

    • [^] # Re: idées en vrac

      Posté par  . Évalué à 4.

      > comme Michaelangelo qui n'aimait pas trop la voûte de la chapelle Sixtine

      En Français on l'appelle Michel-Ange (se prononce "Mickey-l'ange"), Michaelangelo dans un contexte français ça fait surtout référence aux tortues ninja...
  • # La voie de la sagesse

    Posté par  . Évalué à 10.

    Un grand sage tibetain a dit (fin je crois):

    "pour ne pas avoir de projets inachevés, ne commence rien"

    ca vaut ce que ca vaut
  • # rien à foutre

    Posté par  (site web personnel) . Évalué à 3.

    la solution du "rien-a-foutre" est assez efficace. Fais ce qu'il te plait, dis toi que ce qui est vraiment intéressant n'est pas forcement de finir un projet, mais au contraire, de le commencer, d'explorer les possibilités etc.

    Terminer un projet n'est pas indispensable, si tu estimes qu'il est plus intéressant/amusant de commencer un nouveau projet que d'en terminer un, fais le. Si tu rencontres un projet qui te passionne suffisamment, tu le termineras sans te poser de questions.

    Axel

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.