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.
la source
Réponses:
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.
la source
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.
la source
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.
la source
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 ...
la source
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.
la source
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
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).
la source
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.
la source
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!
la source
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.
la source
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.
la source
À 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.
la source
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?
la source
Les choses que je fais:
Ne fonctionne pas toujours, cependant
PS. Je travaille de la maison
la source