Juste curieux, quels genres de tentations dans la programmation se sont avérés vraiment nuisibles dans vos projets?
Par exemple, lorsque vous ressentez le besoin urgent de faire quelque chose et que vous croyez que le projet en bénéficiera ou que vous ferez simplement croire que c'est le cas, et après une semaine, vous réalisez que vous n'avez pas résolu tous les problèmes mais que vous en avez créé de nouveaux ou , dans le meilleur des cas, plaisait à votre bête intérieure sans impact visible.
Personnellement, je trouve très difficile de ne pas refactoriser un mauvais code. Je travaille avec beaucoup de mauvais codes hérités, et il faut de grandes respirations pour ne pas y toucher quand je n'ai aucun test pour prouver que mon refactoring ne casse rien.
Un autre démon pour moi dans l'interface utilisateur, je peux littéralement passer des heures à changer la disposition de l'interface utilisateur simplement parce que j'aime le faire. Parfois, je me dis que je travaille sur la facilité d'utilisation, mais la vérité est que j'aime bouger les boutons.
Quels sont vos démons de la programmation et comment les éviter?
Réponses:
La généralisation prématurée est mon gros bugaboo; au lieu de résoudre le problème à la main d' abord et attendre jusqu'à ce qu'il ya un besoin réel de résoudre le cas général, je vais toujours après le cas général à l' avant et le vent par écrire une tonne de code qui est plus complexe qu'il doit être.
Mise à jour:
Voir " Sin # 1 - Généralisation prématurée " pour une description détaillée.
la source
"Nous reviendrons sur ce problème et le réparerons plus tard. Nous en avons juste besoin maintenant!"
la source
La date limite est tellement longue, j'ai assez de temps pour le faire, alors pourquoi ne pas passer un peu de temps à surfer sur le Web?
la source
"Il ne s'agit que d'un code de preuve de concept à jeter. Une fois qu'ils l'aimeront, je le rendrai vraiment bon."
la source
la source
En proie à la tentation de tout construire en interne, quand il existe des frameworks et des bibliothèques.
la source
Mes démons récurrents: optimisation prématurée et ingénierie excessive.
Et je ne peux toujours pas les éviter à 100% ...
la source
Estimations trop optimistes
Lorsque votre responsable vous regarde fixement et que vous avez le sentiment brûlant de donner une estimation inférieure à ce que votre instinct vous dit, ne le faites pas!
Après tout, votre intestin est probablement déjà trop bas!
la source
Utiliser une technologie / un outil / un langage dans votre projet uniquement parce que vous venez de l’apprendre.
Pour essayer de prouver à quel point vous êtes un développeur.
Considérer le code que vous avez écrit pour être le vôtre.
la source
Je vais juste faire une pause et regarder stackoverflow.com;)
la source
La pire tentation:
Devinez quoi, ça fait mal. :)
la source
goto
déclaration entraînera une attaque de rapace.Oublier que l' écriture de code est le dernier recours pour résoudre un problème .
la source
Caractéristique Creep
Faites un plan, respectez-le et déployez-vous. Et puis revenez en arrière et ajoutez ce que les gens demandent.
J'ai vu cela maintes et maintes fois. Vous vous asseyez, travaillez sur la conception et commencez à coder. Les utilisateurs entendent des sottises confuses au sujet de leur fonctionnalité «manquante» préférée et ils commencent à faire pression pour elle. Votre patron vous demande de l'ajouter à la 11e heure, il bloque le déploiement, introduit des bugs partout, et 3 mois plus tard, une fois que tout le monde est installé, on vous demande de le supprimer, car personne ne peut comprendre pourquoi vous avez mis cette fonctionnalité rétro merdique en premier lieu! Ne pouvez-vous pas dire que le reste de la conception l'a rendu inutile?
la source
Ajouter plus de fonctionnalités
La compétition a cette fonctionnalité. Il s’agit donc d’une fonctionnalité indispensable, donc plus de programmation que d’analyser la stratégie, le positionnement, etc.
La compétition n'a pas cette fonctionnalité. Il s’agit donc d’une caractéristique différenciante, donc plus de programmation que d’analyser la stratégie, le positionnement, etc.
Résoudre un problème d’entreprise avec plus de programmation. par exemple, il est impossible d’acquérir une meilleure expertise en matière d’administration du serveur Linux sur lequel votre site Web est hébergé via la programmation de davantage de fonctionnalités. Parfois, vous devez simplement apprendre à résoudre le problème plutôt que de tout coder à nouveau en C # .Net
Résoudre un problème de marketing avec plus de programmation. par exemple, abuser du concept de la vache pourpre de Seth Godin selon lequel vous résolvez indirectement un problème de marketing en programmant plus de fonctionnalités dans votre produit pour en faire une "vache pourpre". Parfois, c'est juste un monstre mutant.
Résoudre un problème de productivité avec plus de programmation en vous disant que le temps passé à écrire ce script sera économisé dans les heures à venir au lieu de programmer réellement des choses vraiment importantes
Planification du codage mais pas encore du codage parce que vous voulez "bien faire les choses"
Coder une version sale et promettre que vous "améliorerez la situation plus tard", mais ne reviendrez jamais à "améliorer"
Ne pas faire de maquette ou de sitemap parce que c'est "très gênant". Je peux simplement capturer les pages des concurrents pour les maquettes et dessiner à la volée le plan du site "plus tard", ce qui n'est jamais. Et puis, allez directement à la programmation de la première page que je visualise dans mon esprit.
Confession: J'ai personnellement commis des erreurs 1, 3, 7, 8. J'ai également fait 2, 4, 5, 6, mais je me suis souvent trompé que je ne l'avais pas fait.
Je suis en train de remédier à 9.
EDIT N'a pas réalisé que la question nous oblige à mettre des solutions.
1) Ajoutez plus de fonctionnalités , mais ne le faites pas. Travaillez avec votre entreprise, votre marketing, vos fondateurs, vos conseillers, etc., et effacez votre candidature en une seule chose.
Allez lire à propos de Twitter, Groupon , etc. sur la façon dont ils éliminent les choses en une seule chose qui a conduit à leur succès.
Si vous pensez que cela ne fonctionne que si vous souhaitez créer de grandes entreprises, détrompez-vous. Ctrl + F pour cette ligne "Plus j'ajoute de fonctionnalités au logiciel, plus le produit se vend mal. (Inutile de dire que cela n'est pas du tout intuitif pour la plupart des développeurs de logiciels.)" Dans ce lien
2) La compétition a cette fonctionnalité. Donc, c'est une fonctionnalité indispensable
Voir la solution 1
3) La compétition n'a pas cette fonctionnalité. Donc, ceci est une caractéristique de différenciation
Voir la solution 1
4) Résoudre un problème d’entreprise avec plus de programmation.
Si vous avez besoin d'embaucher quelqu'un pour vous enseigner, donner des consultations ou le faire pour vous, puis documentez comment il l'a fait pour que vous puissiez le faire vous-même la prochaine fois. SIMPLEMENT FAIS-LE!! Ne réécrivez pas le code, ne passez pas GO, ne collectez pas 200 $.
5) Résoudre un problème de marketing avec plus de programmation.
Si les gens ne comprennent pas ce que vous vendez, C’EST un problème de marketing. Retournez à la solution 1 et faites pivoter.
6) Résoudre un problème de productivité avec plus de programmation
Attendez.
Attendez jusqu'à ce que vous sentiez que votre productivité souffre d'un problème de productivité particulier pour une période supérieure à 2 semaines et que cela se produira raisonnablement pendant 2 semaines supplémentaires.
Maintenant, évaluez le temps passé à programmer un script pour résoudre ce problème. N'oubliez pas de prendre votre pire estimation et de la multiplier par 2.
Multipliez votre estimation par votre taux horaire.
Maintenant, examinez les solutions alternatives: externalisez, achetez une solution sur étagère, ne faites rien à ce sujet, etc.
Choisissez la solution la plus rentable.
S'y tenir.
7) Planification du codage mais pas encore du codage parce que vous voulez "bien faire les choses"
Allez faire de l'exercice. Vous allez ressentir une poussée d'endorphines qui motiveront votre cul et vous inciteront à agir. Je le sais parce que je viens de faire des benchpress 5x5 et des squats 5x5.
8) Coder une version sale et promettre que vous «améliorerez la situation plus tard» sans jamais revenir à «améliorer»
Configurez un système de fichiers tickler dans GTD. et suivi agressif. Suivez toutes les promesses faites à vous-même et aux autres.
9) Ne pas faire de maquette ou de plan du site parce que c'est "très gênant".
Allez dépenser 75 USD sur une édition de bureau de maquettes balsamiq. Je le sais parce que je l'ai acheté il y a 3 semaines. Cela m'a fait refaire mes maquettes parce que je me sens artiste, architecte et visionnaire, même si mon dessin dans le monde réel est nul. La police utilisée dans balsamiq vous rappelle inconsciemment qu'il ne s'agit que d'une maquette, non figée, ce qui vous aide dans RAD.
Fin EDIT
la source
Un couple de bières m'aidera à travailler mieux et plus longtemps.
la source
"Oui, je peux refactoriser ce gigantesque désordre de 2000 lignes de spaghettis en un jour ..."
la source
et c'est mal frère,
la source
La procrastination et l' estimation optimiste des tâches sont mes plus gros péchés.
Étirements, tractions ou tractions (ou tout autre exercice physique) pour le premier et humeur pessimiste avant de donner une estimation pour le second.
la source
"Il est beaucoup plus facile de réimplémenter la fonctionnalité à partir de zéro que de comprendre le code existant."
la source
Le projet sur lequel je me trouve a subi une tentation extrêmement préjudiciable: l’effet «Inner Platform». C’est une approche que les architectes, qui sont maintenant disparus depuis longtemps, ont adoptée avec une sagesse infinie, ce qui a permis de créer un projet générant environ 20 millions de dollars par an, mais dont la mise à jour et le maintien coûtent 60 millions de dollars (chiffres approximatifs, mais c du problème).
la source
NIH - pas inventé ici
J'ai beaucoup de mal à donner une chance à des solutions tierces. Tout le monde devrait être naturellement sceptique face aux solutions tierces qui ne sont pas conçues sur mesure pour eux, mais j'ai du mal à être objectif à 100% à ce sujet.
Les gains de temps peuvent être si importants que même si la solution de la tierce partie devait être évitée 9 fois, je dois rester suffisamment objectif pour réaliser celle qui fonctionnera.
la source
Conception, codage et / ou tests unitaires par rapport aux "exemples de données" fournis au lieu d'analyser une copie de la base de données réelle du client. La date limite était courte et ils n'arrêtaient pas de dire que ça allait arriver, mais ça ne l'a jamais fait. Lors de son déploiement, l'explosion était spectaculaire. Vraiment, qui aurait pu s'attendre à ce qu'un client ait 3 clients parents.
Je ne recommencerai jamais un projet tant que je n'aurai pas une copie des données réelles .
la source
Le Il doit y avoir une bibliothèque qui fait que quelque part le syndrome.
étroitement liée à
Le plugin fétiche
la source
Le perfectionnisme tue; probablement la plus grande raison pour laquelle les projets ne réussissent pas.
la source
Parfois, la programmation me conduit à la bouteille.
la source
Réécrire au lieu de refactoriser.
la source
Penser qu'il doit y avoir une meilleure façon de faire cela. Je ne vais pas me contenter de quelque chose qui pourrait être "assez bon". Je prends rien de moins que la perfection! Cela est généralement évité en parlant à d'autres personnes qui peuvent avoir une perspective différente d'un problème ou en cherchant une solution sous un angle différent.
la source
Automatiser le tout au point, on passe plus de temps à entretenir les outils qu'au travail réel.
Solution: comme pour l'optimisation du code, commencez par identifier les goulots d'étranglement de la productivité, puis remédiez-les avec une bonne automatisation .
la source
En dehors de ce que d'autres ont mentionné.
Priorisation : Ignorer le travail hautement prioritaire en ce qui concerne le projet et travailler d’abord sur d’autres éléments du projet car ils sont plus intéressants!
Avec un peu plus d'autodiscipline. Sérieusement, la discipline personnelle et la motivation personnelle à faire ce qui est juste aident à éviter la plupart de ces "démons".
la source
Plus tard, quand vous aurez fini de construire le projet pour qu'il corresponde à la composition ...
(* la fonctionnalité principale est entièrement différente)
Ensuite, vous continuez à refactoriser votre code d'origine, en vous basant sur le modèle original défectueux, au lieu de tout recommencer à zéro, car vous êtes sous la pression d'un délai serré et supposez qu'il s'agissait des dernières révisions.
Je me fais mordre par celui-ci tout le temps. Il est difficile d'éviter en tant que développeur web. Le meilleur conseil que je puisse vous donner est de demander plus de temps pour pouvoir apporter les modifications correctement.
la source