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 tgl . Évalué à 10.
- 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 spell (site web personnel) . Évalué à 10.
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 Krunch (site web personnel) . Évalué à 4.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: rien à voir mais bon
Posté par WH (site web personnel) . Évalué à 1.
[^] # Re: rien à voir mais bon
Posté par spell (site web personnel) . Évalué à 1.
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 Maxime (site web personnel) . Évalué à 6.
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 galactikboulay . Évalué à 2.
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 olebrun . Évalué à 2.
[^] # Re: Projets pertinents
Posté par seginus . Évalué à 5.
[^] # Re: Projets pertinents
Posté par galactikboulay . Évalué à 2.
[^] # Re: Projets pertinents
Posté par Sufflope (site web personnel) . Évalué à 10.
[^] # Re: Projets pertinents
Posté par Gmooron . Évalué à 2.
bouge-toi le cul feignasse !
</humour>
# .
Posté par ccomb (site web personnel) . Évalué à 4.
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 Snarky . Évalué à -1.
Ça me dis quelque chose ça.... ;-)
# Re: Terminer ses projets, pas si facile ?
Posté par pierthi . Évalué à 10.
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 seginus . Évalué à 10.
[^] # Re: Je ne peux pas t'aider
Posté par Jean-Philippe (site web personnel) . Évalué à 2.
[^] # Re: Je ne peux pas t'aider
Posté par Alex . Évalué à 7.
http://www.thinkgeek.com/tshirts/generic/8bad/
# ...
Posté par Anonyme . Évalué à 2.
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 Anonyme . Évalué à 2.
@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 lasher . Évalué à 2.
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 Anonyme . Évalué à 4.
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 Tonton Benoit . Évalué à 3.
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 alexissoft . Évalué à 2.
[^] # Re: ...
Posté par galactikboulay . Évalué à 5.
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 Moonz . Évalué à 2.
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 jigso . Évalué à 4.
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 Thomas . Évalué à 4.
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 qstone . Évalué à 4.
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 bergamote23 . Évalué à 10.
"pour ne pas avoir de projets inachevés, ne commence rien"
ca vaut ce que ca vaut
[^] # Re: La voie de la sagesse
Posté par alexissoft . Évalué à 10.
[^] # Re: La voie de la sagesse
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: La voie de la sagesse
Posté par chimrod (site web personnel) . Évalué à 10.
# rien à foutre
Posté par Axel R. (site web personnel) . Évalué à 3.
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.