Crainte que l'application Web ne soit «à l'épreuve du temps»

106

Je suis développeur Web d'une petite application Web SaaS locale. Il compte actuellement une demi-douzaine de clients.

Au fur et à mesure que je continue à concevoir l'application, il est de plus en plus difficile pour moi de me convaincre de m'engager à tout moment dans le projet, ce qui s'est produit dans sa phase initiale. Étant attaché au projet et au code que j'ai déjà écrit, je crains que tout travail supplémentaire que je commette ne soit annulé dans un proche avenir, lorsque l'application ne sera plus à la hauteur de la croissance de l'entreprise.

En tant qu'étudiant à l'université qui postule pour un stage, des employeurs m'ont demandé de ne pas utiliser de framework Web pendant les entretiens, ce qui m'a amené à douter davantage de mon travail précédent. Je ne connais tout simplement aucun framework Web et je ne sais pas par lequel commencer.

J'ai eu un stage en tant que développeur full-stack en janvier, où je vais commencer à apprendre les frameworks front-end, mais la pression pour finir l'application est de plus en plus forte, et j'envisage de supprimer complètement l'application et de recommencer, c'est quelque chose que j'ai déjà fait. L'application est actuellement construite en PHP et jQuery (pour les appels AJAX) et utilise MySQL pour sa base de données. Avez-vous des idées sur la façon dont je peux surmonter ce blocage mental et assurer que mon application sera évolutive? Merci d'avance.

cameraguy258
la source
93
L'utilisation d'un cadre est censée être moins chère, pas objectivement meilleure. Les entreprises demanderont toujours "pourquoi pas moins cher", car c'est leur travail. Il faut plusieurs années d’expérience pour répondre "pourquoi ce cadre n’est-il pas celui-là, ni la coutume". En tant qu'étudiant / stagiaire, il est impossible de donner une réponse significative à cette question simplement parce que vous n'avez pas participé à suffisamment de projets pour observer le fonctionnement d'un cadre donné pour un problème donné. Sans cette expérience, la seule chose que vous puissiez faire est de devenir la proie d'un marketing-cadre donné.
Agent_L
24
La seule chose que vous sachiez de l'avenir, c'est que vous n'en savez rien. Alors, continuez à vivre dans le présent. L’avenir trouvera le moyen de te botter le pied, même si tu perds du temps à essayer de l’éviter!
alephzero
20
"Étant devenu attaché au ... code, j'ai déjà écrit" C'est notre nature de devenir attaché à notre travail et résistant à le changer. Mais même si vous le faites, cela continue dans le contrôle de version. Les logiciels doivent être modifiés, tout comme le monde réel. N'ayez pas peur de supprimer le code ou de le modifier de manière substantielle lorsque vous le construisez.
bitsoflogic
8
En ce qui concerne l'abandon du projet, je le déconseille. Il est généralement agréable de repartir à zéro, car vous avez beaucoup d'élan face à de nombreux problèmes que vous avez déjà résolus. Cependant, vous finissez par revenir à un nouveau problème qui ne correspond pas au modèle. Le temps de réécriture pourrait être consacré à la résolution des nouveaux problèmes. Vous pouvez toujours éliminer les goulots d'étranglement une fois que vous savez ce qu'ils sont.
bitsoflogic
6
@james_pic Vous faites des projets Web sans un framework de base (par exemple asp.net core dans .NET, etc.)? Donc, vous réimplémentez la logique de routage et tous les autres éléments au-dessus d’une simple bibliothèque http? Cela semble excessif et je ne vois pas quel avantage cela devrait vous donner.
Voo

Réponses:

201

Parfait est l'ennemi du bien.

Ou en d'autres termes, ne vous inquiétez pas à ce sujet aujourd'hui. Si votre application fait ce qu'elle doit faire, c'est bien. Ce n'est pas une mauvaise chose de réécrire des parties de logiciels plus tard. à ce stade, vous 1) savez plus clairement ce que vous essayez de construire et 2) savez quels bits constituent réellement le goulot d'étranglement. Vous pourriez passer beaucoup de temps à écrire une application pouvant atteindre un million d'utilisateurs, mais ce ne serait pas mieux pour vos six clients actuels que ce que vous avez aujourd'hui .

Philip Kendall
la source
23
Bon point. Si vous passez 2 mois à essayer d’éviter toute réécriture d’une semaine, vous avez perdu 7 semaines de votre temps. Acceptez le fait qu'il y aura des changements et ne le prouvez que s'il est presque certain que cela devra être fait.
Neil
83
YAGNI, bébé, YAGNI
Kevin
32
Un autre cas d '" optimisation prématurée est la racine de tout mal ". A noter que vous ne passerez pas de 6 utilisateurs à un million. Si 6 clients suffisent à payer pour un développeur, le code peut nécessiter une structure différente, même lorsque vous atteignez 100 clients, simplement pour permettre à plusieurs développeurs de travailler simultanément. C'est très différent d'optimiser les performances et cela se produit beaucoup plus tôt que de devoir jongler avec un million d'utilisateurs.
R. Schmitz
22
@ R.Schmitz Cette citation est utilisée de nos jours dans un contexte complètement différent de celui utilisé par Knuth dans la programmation informatique en tant qu'art. Knuth s'oppose résolument à «tout simplement commencer la programmation et s'inquiéter de l'optimisation ultérieure». Ce qu'il dit, c'est que les gens optimisent les mauvaises parties du code au mauvais moment. Cela ne signifie en aucun cas que vous ne devriez pas prendre le temps de réfléchir à votre architecture pour vous assurer qu'elle est efficace avant de commencer à écrire du code. Vous préférerez peut-être l'autre sentiment, mais vous ne devriez pas citer Knuth comme défenseur là-bas.
Voo
20
@ R.Schmitz À l'époque où Hoare / Knuth avait déclaré que "l'optimisation" impliquait le comptage de cycles et d'autres tâches que nous ne faisons plus de toute façon aujourd'hui, pas "pensez à une bonne architecture avant de commencer à coder". Utiliser la citation comme excuse pour ne pas simplement penser à une bonne conception du système n’est tout simplement pas ce qu’ils avaient en tête.
Voo
110

Avez-vous des idées sur la façon dont je peux surmonter ce blocage mental et assurer que mon application sera évolutive?

Le noeud du problème n’est pas l’évolutivité. Le nœud du problème est de penser que vous vous en sortirez du premier coup .

Vous devriez vous concentrer sur l'écriture de code propre. Parce que le code propre maximise la commodité lorsque vous devez (inévitablement) changer quelque chose dans le futur. Et c'est le véritable objectif que vous devriez avoir.

Ce que vous essayez maintenant de faire, c'est d'essayer de penser au code parfait à écrire. Mais même si vous y parvenez, qui a déclaré que les exigences ne changeraient pas ou que vous avez peut-être pris vos décisions en vous basant sur des informations erronées ou une mauvaise communication?

Vous ne pouvez pas éviter de faire des erreurs, même si ce n'est pas de votre faute. Concentrez-vous sur l'écriture de code dans lequel il est facile de changer les choses plus tard, au lieu d'espérer écrire un code que vous n'aurez pas besoin de changer à l'avenir.

Ayant grandi attaché au projet et au code que j'ai déjà écrit,

Je sympathise absolument avec ce sentiment. Mais s’attacher au code que vous avez écrit est un problème.

La seule chose qui devrait être constante est votre désir de résoudre un problème spécifique . Comment résoudre ce problème n’est qu’une préoccupation secondaire.

Si demain nous publions un nouvel outil réduisant votre base de code de 80%, vous allez être contrarié par le fait que votre code n'est plus utilisé; ou allez-vous être heureux que votre base de code est devenue plus petite et beaucoup plus propre / plus facile à gérer?

Si l'ancien, vous avez un problème: vous ne voyez pas la solution pour le code . En d'autres termes, vous vous concentrez sur le code sans voir la situation dans son ensemble (la solution qu'il vise à fournir).

J'ai peur que tout travail supplémentaire que j'engage ne soit annulé dans un proche avenir, lorsque l'application ne sera plus à la mesure de la croissance de l'entreprise.

C'est un problème différent pour un jour différent.

Tout d'abord, vous construisez quelque chose qui fonctionne. Deuxièmement , vous améliorez le code pour corriger les éventuels défauts. Ce que vous êtes en train de faire, c’est de retenir la première tâche par crainte d’avoir à faire la deuxième.

Mais quelle autre option existe-t-il? Vous ne pouvez pas dire le futur . Si vous passez votre temps à réfléchir aux possibilités futures, vous finirez par deviner de toute façon. Une supposition est toujours sujette à la mort.

Au lieu de cela, construisez l'application et prouvez qu'il y a bien un problème. Et une fois que le problème est clair, vous commencez à vous en occuper.

En d'autres termes: Henry Ford n'a jamais construit de voiture conforme aux normes / attentes de 2018. Mais s'il n'avait pas construit le modèle T, une voiture imparfaite selon les normes modernes, personne n'aurait commencé à utiliser des voitures, il n'y aurait pas d'industrie automobile et personne n'aurait eu une voiture à améliorer.

Des employeurs ont demandé à mon choix de ne pas utiliser de framework Web pendant les entretiens, ce qui ne m'a fait que douter davantage de mon travail précédent.

La partie importante ici n’est pas de savoir quel cadre vous utilisez (un employeur qui vous juge sur qui ne fait pas son travail correctement). La partie importante ici est de savoir ce que vous faites et pourquoi vous le faites .

Par exemple, vous pourriez éviter le cadre existant spécifiquement parce que vous voulez savoir pourquoi un cadre est utile en le faisant à la dure. Ou vous pourriez essayer de créer votre propre cadre.

La seule mauvaise réponse ici est "je ne sais pas", car cela montre un manque de prise de décisions éclairées. C'est un drapeau rouge pour un employeur.

Je ne connais tout simplement pas de framework Web et je ne sais pas lequel utiliser.

Le même problème se pose ici. La solution ne consiste pas à penser plus, mais plutôt à agir:

  • Arrêtez de penser à la réponse parfaite .
  • Choisissez un cadre. À moins que vous n'ayez une préférence, choisissez-en une au hasard. Utilisez un jeu de fléchettes, lancez un dé, lancez une pièce de monnaie, prenez une carte.
  • Utilise le.
  • Avez-vous aimé l'utiliser? Avez-vous trouvé quelque chose d'énervant?
  • Cherchez comment prévenir ces mauvais éléments. Avez-vous mal utilisé le cadre ou s'agit-il simplement de la manière dont le cadre est censé fonctionner?
  • Une fois que vous sentez que vous maîtrisez le cadre (que vous le vouliez ou non), choisissez un nouveau cadre et répétez le cycle.

Pour en savoir plus à ce sujet, lisez L’état de faire> l’état de pensée . L'auteur l'explique mieux que moi.

mais la pression pour finir l'application est en train de monter, et j'envisage de supprimer complètement l'application et de recommencer

Sauf si la base de code actuelle est un gâchis absolument incontrôlable; vous prenez la décision opposée.
Les développeurs pensent souvent que jeter les choses serait le meilleur choix. C'est un sentiment très commun. Mais c'est rarement le bon choix.

Lancer le code et repartir de zéro, c'est comme se retrouver coincé dans la circulation sur le chemin du travail, craignant d'être en retard pour le travail (manquer la date limite) et de rentrer à la maison et d'essayer à nouveau dans la même voie. Cela n'a pas de sens. Vous êtes peut-être coincé dans la circulation, mais vous êtes toujours plus près du travail que lorsque vous étiez chez vous.

Flater
la source
9
Partir de zéro est rarement le bon choix: joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i
Martin Bonner
10
@MartinBonner Bien que ce soit certainement vrai dans le contexte dont parle Joel dans cet article, s'il s'agit littéralement du premier projet sur lequel vous avez travaillé, et que vous êtes la seule personne à l'avoir travaillé, il est fort possible que vous le fassiez. capable d'écrire quelque chose de mieux. Je me souviens d’avoir réécrit le premier projet personnel très ambitieux sur lequel j’ai travaillé, et c’était probablement la bonne décision à l’époque: le prototype original était irrécupérable, car je ne savais pas ce que je faisais quand je l’ai écrit.
James_pic
4
@ Plus tard, je suis d'accord avec la plupart de ce qui a été écrit ici, sauf une chose: si vous devez choisir un cadre et que vous ne connaissez rien d'eux, vous pouvez au moins vérifier le niveau d'adoption de ce cadre. Par exemple, combien d'étoiles a-t-il sur github? Combien de problèmes y a-t-il? Combien de contributeurs? Quand était la dernière mise à jour? Répondre à ces questions peut au moins aider à choisir un cadre pour lequel vous pouvez obtenir de l'aide, embaucher des gars qui le connaissent mieux, etc.
Jalayn
@Jalayn On pourrait supposer qu'un débutant qui n'a pas de connaissance préalable est susceptible de trébucher sur des frameworks bien connus pour commencer.
Flater
3
C'est une excellente réponse car cela encourage une approche méthodique et disciplinée. Il m'a fallu plusieurs années avant que je puisse pleinement apprécier un tel conseil!
Kashiraja
18

Malgré l'énorme somme d'argent que Facebook et Google ont investie dans le marketing pour vous convaincre du contraire, les cadres frontaux existent pour deux raisons principales:

  • Premièrement, décharger les demandes matérielles / réseau vers les opérations côté client en mettant l'état et la logique dans le client
  • Deuxièmement, en rapport avec la logique client supplémentaire nécessaire pour prendre en charge le premier point, ils fournissent des contextes d’exécution isolés de sorte que vous pouvez insérer le code d’autres personnes dans une page sans rien casser.

Vous n'avez probablement besoin que d'un framework pour résoudre ces problèmes si votre application est intrinsèquement dynamique, si l'état de l'application que vous sauvegardez côté client est assez complexe, si vous attendez un grand nombre de clients avec une latence réseau mauvaise (mobile, etc.). ou éloignés du serveur), ou s’il existe un besoin important pour les entreprises de prendre en charge des CSS ou des éléments dynamiques particulièrement avancés.

Framework marketing veut vous faire croire que leur méthode d'architecture particulière accélère le développement et facilite la maintenance. Ceci est manifestement faux pour les petites équipes travaillant sur des projets simples. Isoler le code et organiser les importations peut aider une grande équipe à commercialiser plus rapidement un produit. Il fournit beaucoup moins à une équipe de développement composée d’une seule personne travaillant sur un projet déjà fonctionnel.

Vous passerez plus de temps à apprendre à intégrer le code fonctionnel existant dans la structure qu'à la mise en œuvre de fonctionnalités. Il est fort probable que quelqu'un quelque part mettra à jour quelque chose, et le code écrit dans cette structure cessera de fonctionner dans les 18 mois, à moins que quelqu'un est là pour le maintenir constamment.

Vanilla JS et, dans une moindre mesure, mais dans une large mesure, JQuery, ne souffrent pas de ces problèmes. À quelques exceptions près, les applications JQuery + AJAX ne s'appuyant pas sur des comportements spécifiques à un navigateur et renonçant aux dépendances externes lorsque cela est nécessaire, continuent de fonctionner 10 à 15 ans après avoir été écrites avec des modifications très mineures.

Les cadres sont parfaits pour les startups typiques prenant en charge des applications Web complexes, en continu et faisant face au public. Ils permettent aux grandes équipes de bien se coordonner, s’intègrent bien aux infrastructures d’ajout de fournisseurs et prennent en charge de nouveaux widgets et de nouveaux paradigmes de conception pour vous aider à rester compétitif.

Rien de tout cela n’importe pour un petit logiciel avec un auditoire fixe que vous êtes sur le point d’abandonner. L'adoption d'un framework ralentit votre vitesse de développement lorsque vous vous adaptez à un nouveau paradigme et introduit des risques de compatibilité inutiles. Garder le code côté client simple (et idéalement auto-hébergé) signifie que la surface de risque de compatibilité diminue considérablement. Les navigateurs changeront, les URL de CDN cesseront de fonctionner, les dépendances seront périmées - Mais personne ne touche à ce serveur, et il continuera à fonctionner correctement.

N'adoptez un cadre que s'il résout un problème architectural particulier que vous avez aujourd'hui ou que vous pouvez prévoir, et envisagez vivement de résoudre ce problème par un autre moyen, si celui-ci est supportable.

Gremlin de fer
la source
2
Quand je pense "framework", je pense à des choses comme jQuery ou Angular ou React où il fournit beaucoup de blocs de construction pour des choses qui seraient ennuyeuses à implémenter vous-même (et souvent difficiles à implémenter correctement et compatibles avec plusieurs navigateurs).
moelleux
@fluffy Que pensez-vous spécifiquement d'Angular ou de React, c'est bien plus facile que de faire la même chose avec vanilla JS ou JQuery en 2018 sur des navigateurs non mobiles? De nos jours, FF / Chrome / Edge ont suffisamment de surface commune pour créer de petites applications entièrement fonctionnelles sur des cales sans support.
Iron Gremlin
3
@ IronGremlin Vous plaisantez? Avez-vous déjà utilisé des liaisons de données bidirectionnelles ou des modèles Angular / Vue / peu importe? Pour les applications où ces fonctionnalités sont utiles, elles constituent une énorme simplification et vous permettent de vous débarrasser du code événementiel fragile. Ensuite, le processeur. Bien sûr, l’utilisation de JS Framework nécessite généralement une charge supplémentaire du serveur, mais c’est un sous-produit , et vous dites que c’est la raison principale. Ensuite, "L’architecture simple (...) semble mieux convenir à ce projet". Eh bien, c’est une déclaration assez farfelue, étant donné que nous en savons peu sur le projet.
Frax
2
Je veux dire, vous dites que votre point fondamental est "tout ne doit pas nécessairement être ou devrait être une" application js riche "". Je suis d'accord avec ce point. Cependant, je pense que votre réponse ne parvient pas à l'exprimer correctement. Ce serait bien mieux si vous la modifiiez.
Frax
1
Je n'ai jamais entendu parler du fait de décharger la CPU sur le client en tant que raison d'utiliser JS - je dirais que la tendance historique de l'utilisation de JS sur le client suggère simplement que (je ne dis pas LA (une raison primordiale)), et a semblé se développer de manière exponentielle depuis que jQuery a tranché à travers le nœud gordien des incompatibilités de navigateur.
radarbob
7

La meilleure chose à faire pour «pérenniser» votre application est de suivre les meilleures pratiques de conception de votre système afin de maximiser le couplage lâche et la séparation des problèmes. Aucune partie de votre application n'est à l'abri de devenir obsolète, mais vous pouvez faire beaucoup pour isoler le code qui devient obsolète pour la raison X du code qui ne doit pas nécessairement être affecté par X.

Cependant, je soutiendrais que votre croissance / l'évolutivité de votre application devrait être moins préoccupante que le taux de croissance de votre propre expérience et de vos propres capacités. Le blocage mental que vous décrivez me semble être un apprentissage de la stagnation ou une prise de conscience de nombreux inconnus connus sans la stratégie ou les outils pour les combattre.

Les cadres ne sont pas particulièrement bien adaptés pour résoudre le problème de la "pérennité", bien qu'ils puissent fournir des indications initiales pertinentes aux inexpérimentés, généralement via des modèles de conception de haut niveau tels que MVC. Au contraire, ils ont tendance à être plus utiles pour accélérer le développement en offrant une cohésion forte et souvent au détriment d'un couplage plus étroit. Par exemple, supposons que vous utilisiez un système de mappage objet-relationnel fourni par la structure dans l'application pour interagir avec votre base de données, avec l'intégration du système de mise en cache. Peut-être que plus tard, vous devrez passer à un magasin de données non relationnel et maintenant tout ce qui l'utilise est affecté.

Le désordre que vous avez maintenant ne provient pas de ce que vous avez utilisé, mais de l' endroit où vous l'avez utilisé (probablement un peu partout sur le back-end). Combien vous serez mieux si le code qui rend une page ne récupère jamais les données qu’il restitue.

Supposons que vous souhaitiez ajouter un petit widget à une page nécessitant des scripts et des ressources supplémentaires pour fonctionner correctement. Si vous utilisez un framework, vous pouvez demander "Comment cela veut-il que je rajoute les dépendances à une page pour cette chose?" Si vous ne l'êtes pas, la question est plus ouverte: "Quels problèmes techniques dois-je toucher qui devraient être séparés d'une manière ou d'une autre?" Il faut plus d'expérience pour répondre à cette question, mais voici quelques astuces:

  • Que se passerait-il si, demain, vous déplaciez toutes vos ressources statiques (scripts, images, etc.) sur un serveur séparé, un réseau de diffusion de contenu, etc., ou tentiez de les regrouper pour améliorer les performances?
  • Que se passerait-il si vous commenciez à placer ce widget sur différentes pages ou plusieurs instances de celui-ci sur la même page?
  • Comment pourriez-vous commencer à effectuer des tests AB sur différentes versions du widget?

Si tout cela semble écrasante, alors je vous suggère de vous devriez utiliser un cadre pour l' instant, non pas tant à cause de votre application , mais le bien de votre propre croissance personnelle. Ne recommencez pas forcément. Au lieu de cela, utilisez des cadres en tant que programme pour vous aider à guider l'évolution de votre application.

Il n'y a que deux façons d'apprendre. L'un est par essais et erreurs, et l'autre en apprenant de l'expérience des autres. Les essais et les erreurs ne peuvent pas être éliminés. Le développement de logiciels est par nature un domaine d’apprentissage continu et tout code qui ne fait rien de nouveau ou de différent est par définition inutile. (Utilisez plutôt le code déjà écrit.)

L'astuce consiste à le minimiser en recherchant de manière proactive les connaissances préexistantes (stratégies, meilleures pratiques et codes / bibliothèques / frameworks) tout au long du processus de développement, afin de ne pas réinventer constamment la roue.

En ce qui concerne l'application que vous écrivez actuellement, votre première préoccupation devrait simplement être de le faire avec un minimum d' effort ordinaire (ce qui est un peu comme une odeur de code, mais pour le processus de développement). Compte tenu de la nature de l’apprentissage humain, le moyen le plus rapide d’atteindre un niveau de qualité élevé est de commencer par quelque chose . Il est beaucoup plus facile de comprendre l'objectif lorsque vous pouvez le définir en critiquant quelque chose que vous avez déjà.

Si vous pouvez accepter qu’une grande partie du code que vous écrivez est un processus d’apprentissage jetable et nécessaire pour trouver de bonnes conceptions, cela vous incitera utilement à continuer. Après tout, c’est le défi de la résolution de problèmes qui rend le développement de logiciels attrayant, et ce défi est omniprésent si ce que vous faites vaut la peine (voir la déclaration «apprentissage continu» ci-dessus).

HonoréMule
la source
5

Par-dessus tout, "abandonner la chose et recommencer" n'est jamais une option ... après tout, n'avez-vous pas dit que vous aviez "une demi-douzaine de clients?" Avez-vous déjà pris le temps de réfléchir à ce qu’ils pourraient penser de votre déclaration, étant donné qu’ils sont en ce moment (vraisemblablement) "parfaitement satisfaits de votre travail ?!"

Voici une analogie que j'aime utiliser:

  • "Mon travail consiste à construire des maisons pour que les gens puissent y vivre, pour que ceux-ci créent des entreprises, etc." Mon travail consiste à faire en sorte que "ces morceaux de sable incroyablement minuscules et trop glorifiés " fassent un travail utile. (Tout comme les constructeurs de maisons construisent des maisons à partir de panneaux de gypse, de carreaux de céramique, de blocs de béton et de 2x4.)

  • Cependant, alors que les "clous" utilisés par les constructeurs de maisons n’ont vraiment pas beaucoup changé en deux cents ans (sauf pour passer de "carré" à "rond", puis pour être utiles avec des machines à clouer pneumatiques), la technologie que nous utilisons change constamment et subit parfois de très profonds changements. ("Alors ça va.")

  • « Néanmoins, chaque maison, une fois construit, restera à jamais après- être vécu dans. » Vous ne pouvez pas les expulser. Une fois que vous l'avez construit et remis les clés, "ce n'est plus" votre "maison." C'est ce qui est en ce moment, et cela durera très longtemps.

Une grande partie de mes affaires ces jours-ci consiste à aider les clients à faire face aux logiciels construits il y a dix, vingt, trente ou plus, utilisant les technologies "de pointe" qui existaient à l'époque - (et qui, heu, Je me souviens) - et qui sont encore en service (!) Aujourd'hui.

Mike Robinson
la source
3

S'assurer que quelque chose est à l'épreuve du temps est presque impossible. Vérifier que l'application est évolutive n'est pas trop difficile cependant. Il vous suffit d'écrire un test de performance pour l'application et de voir le nombre de clients qu'elle peut gérer. En écrivant des tests, votre application sera définitivement plus pérenne, car vous pourrez évaluer son comportement une fois que vous aurez implémenté plus de modifications.

En ce qui concerne le cadre, je ne serais pas trop inquiet en termes de performances et d’évolutivité. C’est quelque chose que vous pouvez facilement vérifier et probablement réparer. Le plus gros problème est la sécurité. Les frameworks Web vous aident généralement à écrire le code d’authentification, les cookies, la protection CSRF, etc., en particulier compte tenu de votre manque d’expérience.

Akostadinov
la source
3

J'ai commencé à écrire un commentaire sur les cadres d'apprentissage, mais cela a fini par devenir quelque chose qui ressemblait davantage à une réponse, alors le voici.

Ne pas connaître les cadres semble être un problème. Dans pratiquement n'importe quel travail webdev, vous devrez travailler avec un framework. Apprendre dans un autre cadre une fois que vous savez que ce n’est pas si grave, mais l’apprentissage du premier peut prendre un certain temps - c’est pourquoi les employeurs peuvent se préoccuper de cela. Éviter les cadres peut indiquer le syndrome non inventé ici , ce qui est une approche très peu pratique.

Comme le principal objectif de connaître vos premiers cadres est d'apprendre une langue commune, essayez peut-être simplement d'apprendre quelque chose de populaire parmi vos pairs. Vous pouvez essayer de modifier un projet simple écrit dans un cadre. Commencer un projet à partir de zéro dans un cadre que vous ne connaissez pas est une méthode d'apprentissage très inefficace.

Maintenant, votre question portait sur un projet spécifique et son transfert dans un cadre. Pour cela, la réponse semble être: ça dépend, et on ne peut pas vraiment vous le dire. Cependant, le portage de choses dans un framework que vous ne connaissez pas est certainement une mauvaise idée, car vous ne pouvez même pas savoir si cela a un sens . Par conséquent, il semble que vous devriez la laisser telle quelle et revoir cette décision à un moment donné, une fois que vous connaissez et appréciez certains cadres. D'autres réponses contiennent de bons arguments sur ce que vous devriez rechercher lorsque vous prenez une telle décision.

Frax
la source
2

Cet article a beaucoup attiré l'attention sur Hacker News il y a 2,5 ans: écrivez un code facile à supprimer et difficile à étendre. Cette perspective peut vous aider ou non à gérer votre base de code actuelle, mais à l'avenir, elle pourrait aider à éviter les frustrations dues au perfectionnisme / à l'ingénierie excessive.

Si nous voyons les «lignes de code» comme des «lignes dépensées», nous réduisons le coût de la maintenance lorsque nous supprimons des lignes de code. Au lieu de créer des logiciels réutilisables, nous devrions essayer de créer des logiciels jetables.

Je n'ai pas besoin de vous dire que supprimer du code est plus amusant que de l'écrire.

(c'est moi qui souligne)

Le fil de l'article sur Hacker News pourrait également valoir la peine d'être lu.

jasonszhao
la source
-1

S'agissant de la pérennité et de l'application des principes d'échelle et de cadre, c'est une tâche de taille à prendre en charge par vous-même, je ne m'inquiéterais probablement pas pour ça, mais si vous deviez:

Gardez votre code propre, suivez les principes SOLID, DRY> google.

Appliquez un équilibreur de charge dès que possible.

Mettez en place au moins deux serveurs Web, gérez les scénarios d'équilibrage de la charge dans le code.

Enfin, il existe de meilleures solutions pour traiter un million d'utilisateurs que LAMP, mais je suis sûr que c'est tout à fait faisable.

Cas et point, voir: https://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts-to-degrade Le point est valide, mais 10 Go est trivial en tant que sujet de test.

RandomUs1r
la source