Et si je n'ai pas de bonne idée pour implémenter une fonctionnalité? [fermé]


32

Je travaille sur ma propre application et je suis bloqué. Je dois implémenter une fonctionnalité mais je ne trouve pas de bonne approche pour l'implémenter. J'y pensais pendant quelques jours et aucune bonne pensée ne vint. La recherche sur Internet ne m'a pas inspiré.

Je dois passer à autre chose, mais je veux savoir quel est le meilleur:

  • Penser plus, attendre plus et continuer à chercher la meilleure approche
  • Arrêtez de perdre du temps et commencez avec une mauvaise conception, en couvrant tout avec des tests

Qu'est-ce que tu penses? Comme je l'ai déjà dit, je travaille sur ma propre application. Je n'ai pas de délai, mais je veux aussi finir de coder l'application dès que possible.



12
@gnat: Ces autres questions traitent de situations dans lesquelles les demandeurs savent déjà comment implémenter certaines fonctionnalités proprement, mais peuvent vouloir sacrifier un bon design pour être "rapide et sale". Cette question, cependant, décrit une situation différente, il s’agit de la résolution de problèmes en général lorsque vous ne trouvez pas le bon point pour commencer du tout, il n’ya donc pas de doublon.
Doc Brown

remarque: si l'application est un succès, vous ne "finirez jamais de la coder" et les fonctionnalités seront de toute façon redessinées. Je voudrais donc mettre en œuvre la meilleure façon que je peux maintenant.
Ren

Réponses:


41

En plus de parler aux gens à ce sujet (la question suggère que vous n’avez pas de collègues sur le projet), je trouve souvent que c’est une bonne approche de se concentrer sur ce que je peux faire.

Habituellement, je sais que je dois écrire de toute façon dans le code. Les éléments que je ne sais pas encore écrire sont ensuite remplacés par des stubs qui renvoient des résultats factices ou utilisent une approximation suffisante pour tester le reste.

Cela vous permet de rester productif. Et au moment où vous devez implémenter la pièce manquante, vous avez l'interface. Et vous avez écrit beaucoup de code entourant le problème, dans le même domaine de problème, ce qui m’aide généralement à générer des idées: vous savez plus précisément ce que vous devez produire et quelles autres entrées sont disponibles s’il permet de résoudre le problème. . De plus, souvent, la conclusion est que la pièce manquante n'a pas besoin d'être aussi complète que ce que l'on pensait initialement.


6
Le dernier inconvénient de l'écriture du code le moins risqué, le moins compris, est que vous pouvez découvrir qu'il n'est pas possible de résoudre le problème, ou uniquement avec des modifications substantielles de l'architecture du programme, ce qui entraîne beaucoup d'efforts inutiles.
Rich Smith

1
L’autre inconvénient de cette approche est parfois de vous amener à «Je peux résoudre le problème X. Il ne reste plus qu’à faire Y». alors qu'en réalité, Y n'est pas réalisable et que la vraie solution est Z.
Brian

@ RichSmith, Brian: Cela arrive, bien que rarement si vous me le demandez. Cela vous permettra alors de mieux comprendre pourquoi la partie manquante est si difficile, ce qui améliore vos estimations. Et je ne suggérerais pas de mettre en place des semaines de travail basé sur une division spéculative et arbitraire des responsabilités.
JDV-Jan de Vaan

On peut se demander si ces inconvénients sont ou non. Votre temps aurait-il été mieux dépensé sans explorer la question? ou par vous assis à deviner ce qui fonctionnerait? Je pense que c’est une bonne pratique d’écrire des prototypes rapides, d’essayer des choses et d’échouer rapidement. c'est le seul moyen de savoir avec certitude et d'acquérir de l'expérience pour des situations similaires à venir
sara

14

Si la recherche échoue, vous pouvez toujours implémenter en utilisant la première idée (pas nécessairement la meilleure) que vous avez, puis la reformuler plus tard, lorsque vous trouverez la bonne approche.

C’est la bonne approche, car même si vous trouvez quelque chose qui semble être une bonne idée, il se peut que ce soit mauvais par la suite. Ou alors, cela peut être bien à ce moment-là, mais plus tard, vous trouvez quelque chose de bien meilleur. Ensuite, vous devrez toujours refactoriser.

Ce faisant, veillez à concevoir et à mettre en œuvre de manière à ce qu'il soit facile de le refactoriser. Si vous le faites correctement, vous ne devrez modifier que la partie problématique et ne pas recommencer à zéro.


1
Cela semble être supposé dans cet article, mais j'aimerais ajouter qu'il est très important que vous écriviez votre code de manière à ce qu'il soit facile de re-factoriser.
c_maker

@c_maker Oui, bien sûr. Sinon, cela n'a aucun sens de tout réécrire plus tard. Je vais l'ajouter à la réponse. merci
BЈовић

10

Qu'en est-il de demander à une autre personne? Par exemple, vous pouvez décrire votre problème ici ou, s’il s’agit davantage d’un problème d’implémentation, sur stackoverflow.com, et demander des idées. Parfois, cela vous aidera déjà si vous écrivez le problème, même si vous n'obtenez pas de bonnes réponses.


Si c'est l'interface utilisateur qui pose problème, il y a aussi ux.stackexchange.com
Rob Church

si vous posez la question sur SO, les réponses seront protégées par le droit d'auteur sous Creative Commons, et selon le projet, ce code pourrait être inutilisable.
smcg

2
Les conseils peuvent être protégés par le droit d'auteur? L’auteur l’utiliserait sûrement comme tutoriel, pas pour copier / coller?
Grizwako

@smcg: le sujet a été abordé ici: meta.stackexchange.com/questions/12527/… - Mais honnêtement, si cela devient vraiment un problème, je pense que l'on peut le contourner en suivant les suggestions de GrizzLy.
Doc Brown

@ DocBrown IANAL, je ne peux donc pas dire avec certitude si cela tiendrait, mais il est parfois bon de faire preuve de prudence.
smcg

2

Quelques idées:

  • Faites un remue-méninges
    Ecrivez toutes vos idées stupides (sur papier ou sur un tableau blanc). Cochez celles qui ne fonctionneront pas, vous en êtes sûr. Continue d'écrire. Inclure des solutions aux problèmes réels potentiellement liés. Par exemple, le fait de mélanger de la peinture, de poser un clou dans le mur ou de changer votre huile résout-il un simile du monde réel?
  • Demandez de l'aide sur
    Google, demandez ici, demandez à vos amis geek, etc.
  • Résoudre un problème connexe
    Vous ne pouvez pas résoudre le problème, mais pouvez-vous résoudre un problème beaucoup plus simple? Ou un autre complexe, apparenté? Fais ça. Effectuez ensuite de petits changements individuels pour rapprocher votre solution de la solution souhaitée.
  • Commencez tout simplement à écrire de l’extérieur,
    que votre interface soit un service Web, une page Web, une fiche native, une caméra, un clavier, un moniteur ou autre , il existe une interface. Écrivez quelques lignes de code / pseudocode pour que l'interface fonctionne. Utilisez des méthodes magiques qui n'existent pas encore. Faites récursivement la même chose pour chaque méthode magique inexistante. Optimiser plus tard.

2

Il n'y a rien de mal à aller avec la mauvaise solution. Souvent, vous ne connaissez pas suffisamment le domaine problématique à ce moment-là. Aller avec une mauvaise solution vous permet d'aller de l'avant et en apprendre davantage sur le problème. Ensuite, vous pouvez toujours revenir et reformuler votre première solution.


1

J'essaie toujours de voir les choses du point de vue de l'utilisateur final. Il est très facile d'imaginer une idée "géniale" en tant que développeur sur lequel vous pouvez passer des années à travailler et qui ajoute réellement très peu à votre application.

Idéalement, vous souhaitez définir toutes les fonctionnalités de votre application et les hiérarchiser en fonction des avantages pour l'utilisateur final. Personnellement , j'utilise MOSCoW . Toutefois , si vous conservez la même méthode de hiérarchisation, elle peut être aussi simple qu'un 1 - 5.

Après quoi, si vous trouvez toujours que cette fonctionnalité est une partie essentielle de votre application, alors comme les gens l’ont déjà dit, demandez! Je ne pense pas avoir jamais rencontré de problème qui n'ait finalement pas été résolu, ni par un collègue ni par ces gentils gens de Stackoverflow.


Cool, parce que je suis de Moscou :)
user21974

Voilà c'est un signe!
Mrk Fldig

1

Mon opinion est la suivante: n'écrivez jamais un code qui fonctionne! Il devrait être très difficile de refactoriser à l'avenir.

C'est une approche très courante pour les développeurs (et bien sûr les chefs de projet ou les chefs de projet). J'ai entendu beaucoup de temps "faire que ça marche" ou "je réglerai ça plus tard" (plus tard quand ??? jamais!) Mais je pense que la qualité n'est pas quelque chose que vous ne pouvez pas obtenir au milieu du projet.

Ma suggestion est la suivante: arrêtez de penser à votre problème pendant un moment… faites quelque chose d'autre et, parfois, les solutions viennent tout seul à lui-même.

Au fait, demander à un collègue est absolument un excellent moyen de résoudre votre problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.