Dois-je créer une application complète ou une application simple, puis ajouter lentement des fonctionnalités?

11

Je travaille dans une usine de fabrication qui a chargé l'informatique de créer un programme de planification en atelier (ce qui est très nécessaire). Sur la base de l'expérience d'autres utilisateurs, serait-il préférable de prendre moins de temps et d'élaborer un cadre de base utilisable, puis de s'appuyer sur cela en ajoutant des fonctionnalités ou de commencer par créer une solution entièrement implémentée dès le départ. Je ne suis développeur que depuis environ un an et je n'ai pas beaucoup d'expérience avec la création initiale d'applications de cette taille. Je penche pour l'idée qu'une application barebones est la voie à suivre en raison de l'extrême besoin d'un certain type de calendrier numérique, mais je crains que l'ajout de fonctionnalités aléatoires après coup puisse devenir un peu compliqué. Si vous étiez dans la même situation, vers quelle voie vous pencheriez-vous?

Kyle Vancamp
la source
3
Oubliez la chose cadre dans ce contexte. Créez une application, pas un cadre sophistiqué.
keuleJ
2
peu importe ce que vous faites, vous finirez par le construire un morceau à la fois .Construire ledit «cadre», ce qui, espérons-le, signifie autre chose que d'écrire un cadre au fur et à mesure. La question est, veulent-ils que vous libériez le plus tôt possible et donnez votre avis ... c'est généralement la meilleure voie. De plus, cela ne vous offense pas, vous devriez probablement leur suggérer de faire appel à un développeur senior pour vous aider avec une application de cette taille. Quoi qu'ils veuillent, ils pensent probablement que cela peut être fait plus rapidement et à moindre coût.
xenoterracide

Réponses:

29

L'expérience mène certainement à la construction de quelque chose de petit et de simple, et à la transmission aux utilisateurs le plus tôt possible. Ajoutez des fonctionnalités et des capacités à la demande des utilisateurs.

Les chances sont très bonnes (à la limite de certaines) que ce qu'ils veulent / demandent ne ressemblera pas beaucoup à ce que vous auriez construit par vous-même (le cas échéant).

En ce qui concerne les choses qui deviennent désordonnées lorsque vous ajoutez à votre application d'origine: eh bien, c'est pourquoi Agile (et la plupart des méthodologies similaires) mettent fortement l'accent sur les tests et la refactorisation. La refactorisation signifie nettoyer le code lorsque vous apportez des modifications, et une suite de tests solide (que vous exécutez chaque fois que vous apportez des modifications) garantit que si / lorsque vous introduisez des bogues vous les connaissez (presque) immédiatement, de sorte que lorsque vous publiez quelque chose pour vos utilisateurs, vous avez une assurance raisonnable que cela fonctionne réellement.

Jerry Coffin
la source
Très bon point avec la distinction entre ce qu'ils demandent et ce dont ils ont besoin et ce que nous pensons qu'ils font. Je pense que la plus grande hésitation à laquelle je pensais était qu'entre le moment où ils nous disent ce qu'ils veulent et le moment où nous trouvons une solution, leurs besoins changent complètement. Mais je suppose que petit et simple est certainement plus facile à changer que complet.
Kyle Vancamp
2

Avez-vous une idée s'ils sont sérieux au sujet de l'application, alors vous ne voudrez peut-être pas créer des cadres, etc. etc.

Cependant, vous devez trouver un équilibre. Le développement agile vous suggère de vous concentrer sur ce qui est requis par l'application à ce stade, mais cela ne signifie pas que vous devez vous limiter en négligeant la conception de base. Il y a des choses qui peuvent facilement être vues comme venant (et oui l'expérience joue un rôle ici) et d'autres que vous ne pouvez pas imaginer à ce stade (je suis presque sûr que les personnes qui ont demandé l'application ne peuvent pas non plus les imaginer).

Je ne connais pas les détails de l'application de planification, mais je peux imaginer que le "type de rendez-vous" est quelque chose que vous rencontrerez bientôt. Peut-être que les gens ne le demandent pas maintenant, il n'est pas raisonnable de s'attendre à une telle fonctionnalité.

J'aborderais ce cas comme suit: je construirais l'infrastructure (le cadre que vous mentionnez) en créant une table dans la base de données pour contenir les types de rendez-vous, mais je ne prendrais pas la peine de créer l'interface pour ajouter ou sélectionner les types. Je coderais en dur un type de base et passerais aux fonctionnalités réelles. Après tout, personne n'a demandé d'inclure différents types de rendez-vous.

Ensuite, à l'avenir, si les gens reviennent vers vous pour demander cette fonctionnalité, vous avez la structure et vous construisez simplement le milieu / avant.

John Kouraklis
la source
2

Souvent, vous ne disposez pas de suffisamment d'informations pour créer un programme initialement complet. Les tests et les commentaires des clients révèlent presque toujours des parties de votre conception initiale qui n'étaient pas aussi bonnes qu'en théorie.

Cela dit, si le problème est bien compris et que vous êtes capable d'écrire un programme complet au départ, c'est mieux parce que sinon vous refactorisez constamment le code et le résultat est rarement aussi propre qu'un design solide qui a été suivi depuis le début.

À tout le moins, je pense qu'il est important de bien réfléchir au type de fonctionnalités dont votre programme pourrait avoir besoin. De cette façon, vous pouvez le concevoir de sorte que de telles fonctionnalités puissent être facilement ajoutées dans la structure existante.

Jonathan Wood
la source
1

À partir d'une expérience personnelle: créez votre MVP (produit minimum viable), puis ajoutez-y des fonctionnalités en fonction des commentaires que vous recevez. Il est facile d'obtenir des tonnes de fonctionnalités et personne ne les utilise.

L'expérience utilisateur que vous utilisez pour résoudre le problème est également importante. Validez le flux de travail que vous créez avec vos utilisateurs réels, puis continuez à ajouter d'autres fonctionnalités. De cette façon, vous pouvez vous concentrer sur la valeur fondamentale que vous construisez.

Bhavya Aggarwal
la source