Vous motiver à réellement écrire le code après avoir conçu quelque chose [fermé]

27

Est-ce que cela m'arrive seulement ou est-ce que cela vous est familier aussi?

C'est comme ça: vous devez créer quelque chose; un module, une fonctionnalité, une application entière ... peu importe. C'est quelque chose d'intéressant que vous n'avez jamais fait auparavant, c'est difficile.

Alors vous commencez à penser à comment vous allez le faire. Vous dessinez des croquis. Vous écrivez quelques prototypes pour tester vos idées. Vous assemblez différentes pièces pour obtenir la vue complète.

Vous vous retrouvez enfin avec un design que vous aimez, quelque chose de simple, clair pour tout le monde, facile à entretenir ... vous l'appelez. Vous avez couvert chaque base, vous avez pensé à tout. Vous savez que vous allez avoir cette classe, ce fichier et ce schéma de base de données. Configurez ceci ici, adaptez cet autre truc là-bas, etc.

Mais maintenant, une fois que tout est réglé, vous devez vous asseoir et écrire le code pour cela. Et ce n'est plus un défi .... J'y suis allé, j'ai fait ça! L'écriture du code n'est maintenant que des «formalités» et donne l'impression de réitérer ce que vous venez de terminer.

Lors de mon travail précédent, je m'en sortais parfois parce que quelqu'un d'autre faisait le codage en fonction de mes spécifications, mais à mon nouveau concert, je suis en charge de l'ensemble du processus, donc je dois le faire aussi (parce que je suis payé pour le faire il).

Mais j'ai un projet pour animaux de compagnie sur lequel je travaille à la maison, après le travail et il n'y a que moi et personne ne me paie pour le faire. Je fais le travail créatif et quand le moment est venu de l'écrire, je n'en ai tout simplement pas envie ( parcourons un peu le Web, voyons les nouveautés sur P.SE , SO SO, etc.).

Je veux juste passer à la prochaine chose difficile, puis à la suivante et à la suivante ...

Cela vous arrive-t-il aussi? Comment gères-tu cela?

Comment vous convaincez-vous d'entrer et d'écrire le code flippant?

Je prendrai n'importe quelle réponse.

Communauté
la source
Quelle est votre estimation de la taille de votre projet? Quels sont vos objectifs? Qui bénéficiera du projet s'il réussit? Quel genre d'avantages?
rwong
2
@rwong: Mon objectif principal est d'étendre mes connaissances. J'expérimente sur mon projet personnel avec différentes idées, techniques, bibliothèques, etc. dans le but de s'améliorer. Mais je voulais construire quelque chose avec un scénario de cas d'utilisation réel et pas seulement un mangle de prototypes indépendants.
1
Si vous ne concevez et ne codez jamais, comment savez-vous même si votre conception va fonctionner? Le code valide ou réfute la faisabilité d'une «conception». Autrement dit, il est facile de «concevoir» par un vague geste de la main, mais en réalité, la mise en œuvre représente une énorme quantité de travail. C'est parfois frustrant, parfois fastidieux, mais finalement, pour moi au moins, épanouissant.
Kevin
J'ai répondu à cela il y a plus de 3 ans, mais en relisant votre question, je me demande si ce n'est pas un signe de TDAH (que j'ai par hasard). J'ai aussi du mal avec ce que décrit votre question, et bien que ce que j'ai répondu m'aide un peu, c'est toujours extrêmement difficile. Russell Barkley explique pourquoi très bien: youtu.be/LyDliT0GZpE
Mark Freedman

Réponses:

6

Si le défi pour vous consiste à concevoir et non à mettre en œuvre, vous avez peut-être besoin d'un facteur de motivation différent:

Si c'est un projet pour animaux de compagnie (pas pour le travail), j'ai vraiment hâte de le voir prendre vie, donc le concevoir ne me suffit pas. Lorsque vous proposez vos propres projets pour animaux de compagnie, quel est l'objectif? Est-ce pour quelque chose que vous devez utiliser? Si c'est le cas, vous pouvez utiliser cela comme motivation pour sa mise en œuvre. Pour le voir fonctionner. Pour fournir la fonctionnalité que vous cherchiez à en retirer.

Envisagez-vous de le rendre disponible pour d'autres? Un facteur de motivation pourrait être de les voir bénéficier du produit final. Ils ne vont pas en retirer l'utilité si ce n'est qu'en mode conception. Et si vous prévoyez de le commercialiser, utilisez le fait que personne ne paiera pour votre projet pour animaux de compagnie alors qu'il est bloqué en mode conception, comme facteur de motivation.

Quand je travaille sur mon propre truc, j'adopte une approche plus itérative que je ne pouvais au travail - je ne m'inquiète pas de tous les détails avant de générer quelque chose. Cela peut prendre plus de temps, mais 1) puisque ce n'est que pour moi (ou pour quelqu'un qui ne sait même pas qu'il existe sous quelque forme que ce soit), alors j'ai la possibilité d'expérimenter et de prendre mon temps. 2) Je passe un tas de cycles à refactoriser et à apprendre de meilleures façons de faire les choses. À moi seul, au sens figuré.

En fin de compte, cependant, n'est-ce pas la vraie satisfaction de voir quelque chose prendre vie de nulle part? Voilà ce que ça fait pour moi. Si cela ne le fait pas pour vous, à moins que votre motivation ne soit le produit final, alors je ne suis pas sûr de comprendre pourquoi vous voulez travailler sur le projet pour animaux de compagnie. Si la conception est ce que vous jugez et que vous le faites au travail, vous semblez déjà obtenir la satisfaction que vous recherchez.

Mark Freedman
la source
6

Vous avez besoin d'un prototypage rapide, chez vous.

Lorsque vous appliquez le même niveau de rigueur professionnelle à un projet personnel privé, cela entraîne facilement une suringénierie.

Il est parfaitement acceptable de fixer un niveau élevé pour un projet personnel, mais vous devez comprendre que vous ne disposez peut-être pas de suffisamment de ressources (heures de codage, en plus de vos 8 heures de travail quotidien) pour faire avancer le projet.

Quel est l'objectif le plus essentiel de votre projet animal? Pour prouver l'utilité d'une de vos idées? Si tel est le cas, réduisez le projet jusqu'à ce qu'il devienne un projet de preuve de concept . Ensuite, utilisez le prototypage rapide pour pouvoir en faire plus avec moins de temps de codage.

rwong
la source
5

Je suppose que c'est juste moi, mais j'ai le problème inverse. J'ai généralement du mal à penser à tous les détails avant de commencer à écrire le code et à rencontrer les problèmes pertinents. De manière réaliste, je n'ai généralement qu'un vague design en tête lorsque je commence à coder quelque chose. Mon grand défi consiste à penser à tous les détails et à avoir un design dès le départ.

dsimcha
la source
5
Pourquoi ce vote a-t-il été si élevé qu'il ne répond pas vraiment à la question principale "Comment vous convaincre d'entrer et d'écrire le code flippant?"?
dan_waterworth
1
@dan_waterworth: Je pense que parce que beaucoup de gens peuvent comprendre la réponse. Quand j'étais junior, j'ai également fait la même chose, en sautant la tête la première dans le codage sans aucune planification à l'avance. Depuis, j'ai appris (à la dure) qu'il vaut mieux s'asseoir et réfléchir avant de passer à l'étape de la dactylographie.
2

Je peux certainement m'identifier à cela. J'adore relever le défi de choses que je n'ai pas rencontrées, mais j'ai du mal à commencer à travailler sur tout ce que j'ai déjà résolu. La plus grande chose que je fais est de me forcer à m'asseoir dans le but de faire X et de fonctionner. Habituellement, une fois que j'y vais, je finis par m'amuser et faire plus que ce que j'avais prévu en premier lieu, mais si je ne force pas un but, je vais juste rouler pendant des heures.

Je suis aussi avec vous dans la mesure où cela se produit plus à la maison lors des travaux secondaires qu'au bureau. Je ne sais pas si c'est plus de distractions, d'être brûlé par le travail ou quoi ...

bunglestink
la source
2

Je comprends certainement votre frustration, car je l'ai moi-même vécu auparavant.

Malgré la peur des flammes de la communauté car je sais que ce n'est pas une excellente approche, je partagerai avec vous mon approche pour les projets parallèles . Veuillez noter que cette méthode fonctionne pour moi et que je l'utilise sur des projets à moyen / long terme, je ne le ferais pas pour quelque chose de petit (car j'ai généralement la motivation de la terminer en une seule fois).

Saisissez l'ensemble du projet et divisez-le en «packages», chacun composé de parties qui vont souvent interagir les unes avec les autres. Divisez ensuite chaque paquet en petits morceaux (pensez quelques heures maximum) que vous pouvez concevoir et coder.

Idéalement, vous seriez en mesure de terminer chaque pièce dans le temps que vous allouez à votre projet parallèle pour une journée, mais ce n'est pas nécessaire (cela dépend de la personne).

Personnellement, je ne me fixe pas de délai estimé pour chaque pièce parce que je suis déçu et démotivé une fois que j'échoue à cette estimation, je ne le recommande donc pas. Prenez votre temps mais ne prenez pas trop de temps non plus.

Maintenant, chaque petit morceau obtient toutes les étapes de votre processus de développement normal, la conception, les tests, la mise en œuvre et tout ce que vous devez faire. L'idée est de donner à chaque pièce un bon démarrage mais pas encore une touche finale complète.

Cela maintient ma motivation car je sais qu'après quelques heures de codage ennuyeux, j'aurai plus de design à faire (délicieux). Ne vous laissez pas éloigner de vos objectifs, continuez simplement à faire cette tâche épouvantable et ce sera bientôt fini.

Après avoir parcouru toutes les pièces, regardez l'emballage. Voyez comment cela fonctionne, ce qu'il fait, examinez à nouveau l' ensemble du package. Je suis sûr qu'il y aura des changements et des ajustements, faites-les maintenant. Gardez à l'esprit les informations les plus vitales car vous en aurez besoin lorsque vous travaillerez sur tous les autres packages. Gardez aussi des notes, elles aident beaucoup.

Parcourez chaque package et souvenez-vous de tous les autres que vous avez fait auparavant, comment le nouveau code que vous écrivez va-t-il interagir avec les choses que vous avez écrites il y a une semaine? N'ayez pas peur de rechercher des éléments que vous avez déjà écrits et que vous avez peut-être oubliés.

Enfin, lorsque vous êtes tous à court de packages, je laisse généralement passer quelques jours, me repose et me concentre sur autre chose.

Normalement, je suis impatient de revenir en arrière et de commencer à entrelacer les packages et à faire des tests ludiques, il n'y a pas beaucoup plus de code à écrire et l'objectif est proche, c'est une motivation suffisante pour moi alors.

J'espère que cela vous aidera dans vos efforts.

andre
la source
2

J'ai toujours constaté que les hypothèses d'origine ne tenaient pas entièrement et que la conception originale devait plus ou moins être modifiée en fonction de l'expérience acquise lors de la mise en œuvre réelle.

Si vous considérez que votre conception est absolument infaillible et parfaite après avoir dessiné des boîtes, mais avant de l'essayer, je vous considérerais comme un candidat parfait pour certaines implémentations de projet.

L'expédition est une fonctionnalité. Si vous ne faites pas toute la distance, vous n'êtes qu'un architecte.


la source
1
+1 Globalement bien, une préoccupation est que les architectes ont leur place, "juste un architecte" semble un peu humiliant, involontaire bien sûr.
Orbling
@Orbling: Thorbjørn s'abstenait ( beaucoup plus avilissant) d'astronaute d'architecture.
rwong
@Orbing, pourrait bien l'être. Comment qualifieriez-vous le fait que vous ne pouvez pas faire vous-même ce que vous dites aux autres de faire?
1

Je pense que le problème est dans un objectif incorrect. Il semble que vous ayez fixé l'objectif "système de conception". Et puis vous le faites bien, et l'objectif est atteint. Donc, une suggestion est de fixer un autre objectif «mettre en œuvre le système», mais alors il est plus lié à la motivation et à la façon dont vous le faites.

Il y a une autre façon qui a bien fonctionné pour moi: définir l'objectif initial comme "fournir le système à des utilisateurs spécifiques" au lieu de "concevoir le système" ou "créer le système". De cette façon, vous ne serez pas satisfait jusqu'à ce que les utilisateurs obtiennent quelque chose de précieux. Et vous le faites bien depuis le début (y compris les tests et autres trucs de fantaisie modernes).

Konstantin Petrukhnov
la source
1

En plus d'être effectivement une question de motivation, je pense qu'une partie de la solution peut être trouvée en combinant la conception et le processus de codage. C'est comme ça que je le fais surtout. Fondamentalement, cela revient à implémenter les bases de votre conception lorsque vous y pensez, puis passez à l'étape suivante.

Par exemple: si j'ai conçu mes cours de base, je les écris et je fais des tests dessus. Ensuite, j'ai conçu une base de données sous-jacente, je l'ai configurée et testée. Ensuite, j'ai les méthodes et les fonctions dont j'ai besoin pour tout entrer / sortir de la base de données, je continue. Les tests se font plus facilement car mes classes de base sont déjà prêtes. Et quand je viens enfin de concevoir l'interface utilisateur, j'ai déjà tout un ensemble de code prêt à jouer.

Maintenant, cela suppose que vous concevez également des blocs qui sont liés via des interfaces. Je ne connais pas le mot cher, car je ne suis pas programmeur de formation, mais vous savez ce que je veux dire.

J'espère que cela t'aides.

Joris Meys
la source
1

Ensuite, écrivez simplement vos idées de conception, publiez-les (dans un blog), faites de votre mieux pour expliquer le problème et la solution que vous avez proposée aux autres.

Une astuce: écrivez votre explication de la conception comme un programme alphabétisé! :) Ensuite, vous vous occupez de la partie intéressante (vos idées de conception), mais vous les justifiez en fait avec le vrai code que vous fournissez à côté.

Et affichez le programme alphabétisé comme une présentation de vos nouvelles idées à d'autres!

imz - Ivan Zakharyaschev
la source
1

Cela va sembler banal, mais commencez juste. Vous devrez probablement ouvrir votre environnement de développement, faites-le. Vous devrez probablement définir chacune des classes dans votre conception et écrire leurs signatures de méthode, alors faites-le. Vous devrez commencer à implémenter les méthodes les plus importantes, alors faites-le.

Habituellement à cette époque, j'ai oublié que j'avais du mal à démarrer et je suis dans la zone.

Fonctionne environ 80% du temps. Pour le reste, il y a Tetris.

Vince Green
la source
0

Ce n'est certainement pas seulement vous! Je retarde actuellement un projet.

Personne ne peut vous motiver sauf vous-même.

Créez un calendrier réaliste et mettez-vous au défi de terminer chaque section à temps. Vous n'avez rien à montrer pour les projets s'ils ne passent jamais la phase de conception.

dan_waterworth
la source
0

À en juger par votre question, votre problème est que vous semblez réinventer la roue. Si vous avez déjà fait tout cela, pourquoi devez-vous recommencer? N'y a-t-il pas de cadre pour le faire pour vous? Sinon (bien que cela soit plutôt improbable), pourquoi ne pas en écrire un?

Une tâche clé de la programmation n'est pas de refaire des trucs ennuyeux , mais de le faire une fois, de le faire correctement puis de le réutiliser. Ou encore mieux: trouver quelqu'un qui l'a déjà fait une fois et correctement.

back2dos
la source
0

Je comprends parfaitement d'où tu viens. C'est le problème qui vous intéresse, et une fois que vous l'avez compris, la mise en œuvre ne fonctionne plus.

Pourquoi ne pas simplement concevoir la solution et en faire implémenter d'autres?

John MacIntyre
la source
-1

Les choses que je fais:

  • Mettez une grosse minuterie devant moi (peut être en mode inverse, par tranches de 1 heure)
  • Forcez-moi à rester debout jusqu'à atteindre un objectif (parfois avec une bière, j'ai trouvé qu'un peu d'alcool aide)

Ne fonctionne pas toujours, cependant

PS. Je travaille de la maison

Eduardo Molteni
la source