Comment écrire du code efficace malgré des délais lourds

28

Je travaille dans un environnement où nous avons de nombreux projets avec des délais stricts sur les livrables. Nous parlons même directement aux clients, donc faire les travaux rapidement et est un must.

Mon problème est que j'écrirais toujours du code pour la première solution qui me vient à l'esprit, ce que je pensais bien sûr le mieux à ce moment-là. Cependant, cela finit toujours par être laid et je me rendrais compte plus tard qu'il existe de meilleures façons de le faire, mais je ne peux pas me permettre de changer en raison de contraintes de temps.

Existe-t-il des astuces pour rendre mon code efficace tout en le livrant à temps?

Gladysbixly
la source
11
Ne vous concentrez pas sur un code efficace , mais plutôt sur du code correct . Cela va bien plus loin. Économisez votre efficacité pour les versions ultérieures.
Jesse C. Slicer

Réponses:

23

Si le code doit être maintenu, expliquez que du temps supplémentaire est nécessaire pour rendre le code plus maintenable, ce qui leur fera économiser de l'argent sur le backend. En d'autres termes, faites du code maintenable une exigence.

S'ils ne se soucient pas de cela, je ne pense pas que vous ayez besoin de faire quelque chose de différent, à part vous améliorer tout le temps et faire de votre mieux pour incorporer les meilleures pratiques dans la mesure du possible.

Robert Harvey
la source
3
D'accord, je suis d'accord avec tout cela, sauf que cela fonctionne rarement de cette façon en réalité. Votre patron veut que quelque chose soit fait d'ici la date X et ne bougera pas? Dommage, vous devez encore le faire, ou peut-être pouvez-vous trouver du travail ailleurs, ce qui n'est souvent pas une option.
Ed S.
4
@EdS. Trouver du travail ailleurs est toujours une option ... cela s'appelle "maintenir votre carrière" et cela prend du temps et des efforts.
Spoike
17

D'accord, cela peut sembler un peu fou, mais je jure que cela fonctionne. Ce n'est pas seulement pour la programmation, c'est une recette pour augmenter la créativité, la concentration et la mémoire:

  • Bien manger
  • Méditer
  • Dormez suffisamment (7 à 9 heures selon la personne)
  • Sieste chaque fois que votre cerveau est flou
  • Dormez avec un problème non résolu. Ne terminez pas votre journée avec tout ce qui est complet. Laissez une tâche difficile en suspens - votre subconscient est remarquablement efficace.
  • Portez des vêtements confortables
  • Exercice
  • Prenez le temps de faire des exercices mentaux par cœur - sudoku (non programmé), mots croisés, exercices mathématiques, puzzles spatiaux, etc.
  • Effectuez des expériences objectives sur vous-même pour voir lequel de vos comportements a un impact sur les performances (vous aurez besoin d'un moyen fiable pour tester les performances pour que cela fonctionne).
  • Prenez soin de votre santé spirituelle
  • Slip en coton
  • Prenez soin de votre santé sexuelle
  • Prenez du temps pour votre famille et vos amis
  • Devenir compétent dans quelque chose en dehors de votre profession (musique, cuisine, sports, etc.) et socialiser avec d'autres personnes faisant la même chose
  • Pour certaines personnes, un animal de compagnie est un must

Avant de vous en rendre compte, vous constaterez une nette amélioration de la productivité de votre programmation et de la qualité des solutions (sans parler des améliorations dans d'autres domaines).

Sources:

  1. Votre cerveau miracle: maximisez votre cerveau, augmentez votre mémoire, améliorez votre humeur, améliorez votre QI et votre créativité, prévenez et inversez le vieillissement mental
  2. Le moi quantifié
  3. Seth Roberts - dans Scientific American
Scant Roger
la source
6
Vous avez oublié: pas de caféine.
Christopher Mahan
Vous avez oublié: ne regardez pas PORN pendant le codage! Je vous remercie!
AmirHossein
9

C'est contre-intuitif, mais vous devez probablement ralentir. Lorsque vous implémentez la première solution qui vous vient à l'esprit, vous créez beaucoup de travail supplémentaire par la suite. Par "sur la route", je veux dire dès la fin de l'après-midi. Les problèmes que vous vous créez ne prennent pas des mois à se développer. Considérez vos options. Tapez moins et réfléchissez plus. Même dans un court projet, vous constaterez que moins de codage peut réellement vous accélérer.

Si vos clients se regroupent dans des secteurs spécifiques, essayez de créer des projets qui ont des composants réutilisables. Ne pas écrire de code est plus rapide que de l'écrire.

Du point de vue de votre client, cela sent un peu comme " Rapide, bon et pas cher, choisissez deux ". Bien sûr, nous voulons tous ce que nous désirons immédiatement, mais vos clients doivent déterminer si cela est le meilleur à long terme. Essayez d'articuler les compromis et aidez-les à prendre de bonnes décisions.

Marche de Corbin
la source
Je suis d'accord avec ça. Envisagez deux ou trois approches possibles avant de commencer à coder. Ensuite, en fonction d'une combinaison de facilité de mise en œuvre, de facilité de test, d'efficacité et d'extensibilité, faites votre choix.
Omega Centauri
8

Chercher un autre emploi.

Vous constaterez qu'après environ 6 mois. à une année où vous ne serez pas fier du travail que vous avez accompli. De plus, vous n'aurez pas passé de temps à vous renseigner sur les nouvelles techniques, technologies ou cadres - donc après un an, vous n'aurez pas pu suivre les nouvelles technologies. Vous serez un pire programmeur par rapport au marché après un an que vous ne l'étiez au début.

Si trop de temps passe (disons quelques années ou plus), vous aurez beaucoup de mal à être embauché n'importe où, sauf pour ces types d'emplois rapides où le code de qualité n'est pas apprécié, seulement la vitesse.

Cela dit, en tant qu'expérience d'apprentissage «dans le monde réel», il y a quelque chose à dire pour l'environnement au rythme rapide, mais je dirais que environ 6 mois. est assez. Au-delà de cela, vous devriez chercher à vous connecter avec quelques recruteurs et à chercher un meilleur endroit. Vous serez beaucoup plus heureux, honnête.

Mike Rosenblum
la source
2
Que voulez-vous dire par «mos». ?
Darius.V
mos. = mois. Deux autres personnages à parcourir ...
gnasher729
Je ne vous connais pas mais "mos" en persan a un mauvais sens. cela signifie fesses. ;)
AmirHossein
3

Pour vos clients, l'efficacité du code n'est peut-être pas aussi critique et peut être assez coûteuse. De nos jours, le temps passé à créer du code doit permettre d'économiser des heures de CPU pour justifier une heure de votre temps. Pour la plupart des programmes, l'efficacité n'est pas si critique. Même pour ceux où il se trouve, la plupart du code n'a pas besoin d'être aussi efficace. Étant donné le choix, ma préférence serait pour une solution facile à maintenir plutôt que pour un code plus efficace et plus difficile à maintenir.

Prendre le temps de planifier votre codage avant de commencer peut vous donner le temps d'évaluer des solutions et d'envisager d'autres approches. Cela devrait vous faire gagner du temps dans le codage et les tests. J'ai trouvé qu'un code souvent plus simple est plus efficace.

Disposez le code proprement en utilisant autant de lignes que nécessaire. Un code complexe peut confondre l'optimiseur et peut entraîner un code plus lent. Les compilateurs modernes sont très bons pour optimiser le code, faites-lui confiance pour faire son travail.

Acceptez que suffisamment bon est assez bon. Lorsque vous proposez des approches plus efficaces, notez-vous. Si vous avez du temps, comparez quelques-unes de vos conceptions les plus efficaces avec celles que vous avez mises en œuvre. Essayez-les dans le petit (juste le code effectué) ainsi que dans le grand (le programme qui les utilise). Cela vous donnera une idée du moment où une approche plus efficace est appropriée.

Beaucoup de gens considèrent l'optimisation prématurée comme une mauvaise approche. Sa mise en œuvre peut être coûteuse. Malheureusement, de nombreuses optimisations prématurées ne sont en fait pas aussi efficaces que le code qu'elles ont optimisé. Pour optimiser correctement le code, vous devez instrumenter le code avant et après le changement pour voir si vous avez vraiment amélioré l'efficacité.

Étudiez les techniques qui vous aident à écrire du code plus propre avec un faible couplage et une cohésion élevée. Dans de nombreux cas, la réduction de la complexité augmente l'efficacité. Les techniques qui vous aident à minimiser les bogues que vous devez corriger pendant le développement vous aideront à livrer plus rapidement. Cela peut vous libérer du temps pour tester d'autres approches.

BillThor
la source
1

Robert a couvert les aspects les plus importants.

J'ai travaillé dans de tels environnements, où le code ne vit pas (ne peut pas) vivre plus de six mois. Il y a quelques règles générales auxquelles je peux penser:

  1. Utilisez des bibliothèques open source, des solutions tierces, etc.,. L'apprentissage impliqué est récompensé par moins de maintenance et de débogage. Cependant, si vous êtes coincé avec une bibliothèque buggy, vous êtes condamné.
  2. Assurez-vous que votre conception est extensible. Une exigence obligatoire: la plupart du travail vient en tant qu'améliorations, pas en créant de nouvelles fonctionnalités.
  3. Élaborez des plans de test rigoureux. Obtenez un contrôle qualité ou automatisez les tests pour garantir les tests de régression.
  4. Utilisez des outils intelligents - IDE, utilitaires de génération de code, etc.,.
  5. Gardez les choses aussi configurables que possible. (Le revers est une augmentation des efforts de test)
  6. Améliorez votre vitesse de frappe :-)
CMR
la source
1

Dans la phase de conception, parlez à vos collègues .

Discutez de votre conception et de la façon dont vous voulez le faire, et demandez-leur d'examiner vos décisions. Si et quand vous êtes tous d'accord sur ce qui est intelligent, vous avez un design beaucoup plus sonore.


la source
1

Entraine toi. Entrainez-vous à écrire un bon code jusqu'à ce qu'il devienne une seconde nature. Ensuite, entraînez-vous à coder plus rapidement. Ensuite, entraînez-vous mieux à coder. Et quand vous avez terminé ... entraînez-vous un peu plus.

Michael Brown
la source
0

Mon problème est que j'écrirais toujours du code pour la première solution qui me vient à l'esprit, ce que je pensais bien sûr le mieux à ce moment-là.

Non, ce n'est pas votre problème. C’est une vertu. Il fait la chose la plus simple qui pourrait fonctionner. Mais cela ne fonctionne que lorsqu'il est combiné avec une refactorisation. C'est un processus continu: faire la prochaine chose la plus simple qui pourrait éventuellement fonctionner, encore et encore, afin que votre système soit toujours une expression de votre compréhension actuelle de l'espace de la solution.

Votre problème est que vous avez une direction qui ne comprend pas le véritable coût du cycle de vie des systèmes logiciels. 90% de ce coût est la maintenance, pas la mise en œuvre initiale. Les tests et la refactorisation sont nos meilleurs outils pour réduire le coût total du cycle de vie d'un système logiciel. Si vos managers ne vous permettent pas de faire ces choses, ils sont irresponsables et doivent être recyclés. Ou vous devez trouver un nouvel emploi.

Enfin: comme je l'ai déjà dit *, vous devez apprendre à dire non .

* Comment coder sur un planning très serré?

Rein Henrichs
la source
0

S'ils fixent la portée et le temps, tout ce que vous pouvez faire pour respecter le délai est la qualité de la goutte.

Si possible, laissez tomber la qualité externe, visible par les parties prenantes, ne compromettez pas la qualité interne, des choses qui nuisent à votre habitabilité dans la base de code.

Je ne pense vraiment pas que l'amélioration de soi va vous aider un peu dans cette situation. Si quoi que ce soit, désolé de le dire, c'est généralement de l'affirmation de soi.

Essayez de mettre un pied dans la porte lorsque le travail est estimé. Comment votre patron peut-il estimer le temps qu'il vous faut pour faire quelque chose?

Apportez des choix à votre patron et / ou client. Trop souvent, ce sont les développeurs eux-mêmes qui choisissent d'abandonner la qualité sans rien communiquer. Les projets / travaux en retard sont très courants et généralement «gérés». Agissez à temps, avertissez les gens si vous voyez venir un délai non respecté.

Ils ne peuvent pas réduire la portée ou déplacer la date limite si vous ne leur dites rien.

Si vous allez faire un compromis sur la qualité sous quelque forme que ce soit, essayez de laisser leur décision. Donnez-leur du poids les uns contre les autres.

Certaines choses que VOUS seul pouvez décider. Si vous arriviez à le faire fonctionner. Mais c'est très difficile à maintenir. Peut-être n'êtes-vous pas sûr que cela fonctionne dans tous les cas. Ne dites à personne que vous avez terminé. Refais-le. Très souvent, c'est une décision que vous seul pouvez prendre. Soit parce que le problème prend beaucoup de temps à articuler, soit que vous avez un responsable non technique.

Parfois, cela fait partie de votre éthique de travail, voudriez-vous simplement recoudre un patient sans vous laver les mains parce qu'il n'y a pas de temps?

Surtout, souvenez-vous: il n'y en a pas plus tard.

Joppe
la source
0

Je suis un développeur .Net travaillant sur des applications Web.

Ce que j'ai commencé à faire, c'est -

S'il s'agit de code C #, j'essaie d'abord d'écrire ce code dans LinqPad (si possible).

S'il s'agit de code Javascript, j'écris d'abord ce code et le teste dans jsfiddle / jsbin (si possible).

J'ai trouvé que cela aide à la qualité du code mais ne me ralentit pas (et dans plusieurs cas, je l'ai trouvé plus rapide).

user637563
la source
ce post est assez difficile à lire (mur de texte). Pourriez-vous le modifier sous une meilleure forme?
moucher
@gnat - merci pour la suggestion. Il est utile de recevoir des suggestions avec le downvote. J'espère que le formatage est meilleur maintenant.
user637563
Trouver une solution en dehors de l'environnement complet peut avoir ses avantages. Vous aurez quelque chose qui fonctionne, donc vous saurez que si cela ne fonctionne pas dans le système complet, le problème doit alors être un conflit avec le reste du système. Vous pouvez ensuite essayer de modifier la solution pour supprimer le conflit tout en étant en mesure de voir si la solution fonctionne toujours en dehors de l'environnement complet. Votre santé mentale pourrait vous en remercier pour toute la suite.
Bent