Comment devenir un programmeur «plus rapide»?


142

Ma dernière évaluation d’emploi ne portait que sur un point faible: la rapidité. Je suis déjà conscient de certaines choses que je peux faire pour améliorer cela, mais ce que je recherche, c’est d’autres.

Quelqu'un a-t-il des conseils ou des conseils sur ce qu'il doit faire pour augmenter la vitesse de production sans en sacrifier la qualité?

Comment estimez-vous les délais et les respectez-vous? Que faites-vous pour en faire plus dans des délais plus courts?

Tous les commentaires sont grandement appréciés, merci,


96
Passez moins de temps sur SO au travail, si vous le faites.
San Jacinto

52
Si vous lisez ceci, il est déjà trop tard

32
J'ai lu "Comment devenir un gros programmeur".
M'a

13
Je vous poserais une question de suivi. Votre désir d'être un "programmeur plus rapide" est-il le résultat de votre propre performance médiocre (AKA, vous devez affiner vos compétences, vous devez vous concentrer et éliminer les distractions (telles que les SO), etc.), ou votre planification est-elle insuffisante point de vue (AKA, on vous a donné 1 semaine pour faire quelque chose que toute personne sensée aurait su prendrait 1 mois). Chaque article a des solutions très différentes.

3
Il n'y a pas de bonne réponse possible, alors inscrivez-la dans une question du wiki de la communauté ou fermez la question.
Donal Fellows

Réponses:


190

Éteignez l'ordinateur. Prenez un crayon et du papier. Esquisser votre conception. Examinez-le avec vos pairs. Ensuite, écrivez le code.


9
OU vous pouvez garder votre ordinateur
allumé

208
Le crayon et le papier ou un tableau blanc est plus rapide que la plupart des applications que j'ai utilisées.
Thomas Owens

24
Le faire sur papier concentre l'esprit.

100
pourquoi ne puis-je pas voter le commentaire visio? Ne pas utiliser Visio est un moyen d'accélérer le développement!

52
Ugh .... Visio. Chaque fois que je suis invité à "utiliser Visio dans votre document de conception", je le dessine d'abord sur papier, puis je passe les deux prochains jours à lutter pour que toutes les lignes de Visio soient correctes.
Robert Fraser

149

Quelques idées...

  • Évitez le placage à l'or - faites seulement ce qui vous est demandé (en termes d'exigences)
  • Comprendre les exigences de l'entreprise et le faire correctement dès la première fois
  • Bien comprendre votre environnement et vos outils
  • Devenez une dactylo fantastique, utilisez les raccourcis clavier au lieu de la souris
  • Adoptez une approche itérative et intégrez des contrôles de cohérence pour vous assurer que vous êtes sur la bonne voie.
  • Ne réinventez pas la roue, envisagez de réutiliser le travail du passé et celui des autres
  • Éliminez les distractions, ne continuez pas à consulter vos courriels, à regarder à l'extérieur, à parler à vos collègues, etc.
  • Ne surchargez pas vous-même - reconnaissez le moment où vous devez prendre des pauses

7
+1 pour ne pas réinventer la roue. Apprenez à produire du code réutilisable, qui peut être inséré dans un autre code et ne fonctionner avec aucun code en petite réécriture. (ex: fonctions avec des paramètres, au lieu de coder en dur)

34
+1 pour «éviter le placage d’or» - c’est la raison pour laquelle j’ai manqué trop de délais en raison de mes tendances perfectionnistes / rétentives.
Dinah

7
Dactylographie - point important. Toujours étonné du nombre de codeurs que je rencontre qui n'ont pas appris à dactylographier ...
Paddy

2
+1 éliminer les distractions. Comme je le vois, ils sont les principaux mangeurs de temps.

2
+1 pour les astuces pour micro-améliorer (au lieu de macro-améliorations en termes de projets de planification).

132

Votre désir d'être un programmeur "plus rapide" en lui-même est louable. Cependant, ne pas livrer à temps ne signifie pas que vous êtes lent, mais que le projet a été mal planifié. Être un programmeur "plus rapide" ne va pas aider; cela signifie simplement que vous dépasserez le délai plus rapidement.

Vous (et votre équipe) commettez l'une des erreurs suivantes (ou la totalité d'entre elles):

  • sous - estimer le travail à accomplir;
  • manque une grande exigence ou pièce d'architecture lors de la planification;
  • confondre les estimations de travail avec les estimations de calendrier et ne pas prendre en compte des éléments tels que des réunions / téléphone / autres frais généraux

Il existe de nombreuses façons de s’adresser à l’une des trois réponses ci-dessus. Mais avant de pouvoir améliorer l'un d'entre eux, vous devez savoir pourquoi les choses vont comme elles sont. Faites un post mortem sur les estimations des deux ou trois derniers projets par rapport au temps réel et déterminez où le temps supplémentaire a été passé.

Je le répète: être lent à écrire du code ne vous fera pas manquer l'échéance , si vous l'avez bien planifié pour en tenir compte.


47
Certains développeurs sont vraiment trop lents cependant. Cela peut être un problème.

12
Oui, cela peut être un problème, mais c'est un problème personnel. Cela ne devrait jamais devenir un problème de projet ou d'équipe. En d'autres termes, cela peut avoir un impact sur la carrière, mais cela ne devrait jamais avoir d'impact sur le calendrier du projet.
Franci Penov

12
'ne pas livrer à temps ne signifie pas que vous êtes lent, mais que le projet a été mal planifié' - c'est la description d'un argument invalide dans la zone de texte. il y a beaucoup d'autres raisons pour lesquelles vous pourriez ne pas livrer à temps, l'une d'entre elles pourrait bien être parce que vous êtes lent.
chair

15
@ chair - si vous savez que vous êtes lent, pourquoi ne planifiez-vous pas votre horaire pour tenir compte de ce fait? En d'autres termes, si vous savez que vous ne pouvez pas courir aussi vite que Usain Bolt, prévoyez-vous de courir 100 m en 9.7?
Franci Penov

5
@Kibbee - dans cette situation, vous coupez des fonctionnalités. vous ne pouvez pas promettre de faire un certain travail à une certaine heure lorsque vous savez que cela ne peut pas être fait et que vous espérez un miracle.
Franci Penov

89

Vraiment, vraiment apprendre votre éditeur. Si vous utilisez un IDE, assurez-vous d’utiliser toutes les fonctionnalités qu’il offre. Obtenez une feuille de triche pour apprendre les raccourcis clavier pour votre éditeur de choix. Si vous utilisez un shell, configurez des raccourcis pour les répertoires couramment utilisés


3
Cela peut en effet parfois augmenter considérablement la productivité
sshow

6
L'écriture de code réel ne constitue qu'une partie du travail d'un développeur. Passer du temps à apprendre l’IDE ​​à la perfection est une optimisation ponctuelle; et vous savez ce qu'ils disent à propos des optimisations, n'est-ce pas? - "Mesurer d'abord puis optimiser les goulots d'étranglement".
Franci Penov

1
Je ne vois pas ça du tout. Si je réduis de 50% mon temps de frappe, combien de temps cela va-t-il me sauver en un jour? D'après mon expérience, je passe le plus clair de mon temps à penser / tester / évaluer / légèrement modifier le code / etc., par rapport à l'écrire, je pense que cela ne donnerait pas beaucoup de succès.

4
Cela rend la navigation dans l'IDE quelque chose que vous faites sans y penser. Tout ce qui nécessite un effort conscient, comme passer au petit bouton gris marqué d’une chose ou d’une autre à côté de tous les autres petits boutons gris, vous ralentit en interrompant votre réflexion. Avoir ctrl-n sous le bout de mes doigts sans aucun mouvement est un gain net important.
Paul McMillan

5
Dans le même ordre d'idées: apprendre les touches de raccourci générales. Par exemple, dans de nombreux programmes Windows ... Copier: Ctrl + C Couper: Ctrl + x (le 'x' ressemble à une paire de ciseaux ouverte) Coller: Ctrl + v (juste à côté de 'c' et 'x' ci-dessus) Aller au début de la ligne: Accueil Aller à la fin de la ligne: Fin Déplacer le curseur par mot (et non par caractère): [Maj] + Ctrl + gauche ou droite Aller au début du document: Ctrl + Accueil Aller à la fin du document: Ctrl + Fin etc.

38

"Quelqu'un a-t-il des conseils ou des conseils sur ce qu'il doit faire pour augmenter la vitesse de production sans sacrifier sa qualité?"

Beaucoup, beaucoup de gens aspirent à une qualité "ultime" au détriment de quelque chose qui est (a) simple, (b) fiable et (c) correct.

Le moyen le plus important d’accélérer votre développement est de simplifier ce que vous faites afin que ce soit aussi simple que possible.

La plupart des gens qui ont des problèmes de livraison à temps livrent beaucoup trop. Et les raisons données sont souvent ridicules. Ce ne sont souvent que des exigences perçues, pas des exigences réelles.

J'ai entendu beaucoup de gens me dire ce que le client "attend". C'est une mauvaise politique.

Construisez la chose la plus simple possible. Si le client a besoin de plus, construisez plus. Mais construisez d'abord la chose la plus simple possible.


"Beaucoup, beaucoup de gens aspirent à la qualité" ultime "au détriment de quelque chose qui est (a) simple, (b) fiable et (c) correct." Vous auriez pu en rester là et j'aurais voté pour.
Corymathews

"Simplifiez, simplifiez." ~ Henry David Thoreau

2
Ouais ... cela signifie aussi une abstraction prématurée. Si quelque chose ne va avoir qu'une implémentation, n'en faites pas une interface.
Robert Fraser

3
Une de mes citations préférées est appropriée dans cette situation "faire quelque chose d'aussi simple que possible, mais pas plus simple" ~ paraphrase, Albert Einstein
Nemi

Garder les choses simples est ce que même beaucoup de programmeurs ne comprennent pas correctement: ils tombent dans le "piège de l'optimisation prématurée". Normalement, le programme le plus simple est le plus rapide ou le plus performant.

32

Évitez de polir votre code à la perfection, faites-le simplement fonctionner. C'est ce que l'entreprise attend.

Mais souvent, augmenter la vitesse implique de sacrifier la qualité.


10
Je suggèrerais de "faire fonctionner" et si le temps le permet, je le perfectionne!
Preets

28
-1: Il n'y a aucune raison de sacrifier la qualité. Vous pouvez toujours sacrifier des fonctionnalités.
S.Lott

6
Je l'ai vu arriver à plusieurs reprises. Les développeurs s’arrêtent sur le dernier 1% d’une fonctionnalité donnée, puis tentent de rattraper leur retard et prennent du retard lorsqu’ils tentent de compléter les fonctionnalités restantes. Terminez ce que vous attendez de vous, puis revenez et polissez-le.

3
Souvent, augmenter la qualité signifie augmenter la vitesse. Si vous prenez un peu de temps pour bien faire les choses, vous gagnerez peut-être plus de temps en tests et en débogage.
David Thornley

2
Si vous êtes bloqué par une fonctionnalité, travaillez sur quelque chose de différent.

29

Réutilisation - J'essaie de prendre en compte tous les éléments intelligents de projets précédents afin de pouvoir les utiliser à nouveau dans de futures entreprises. Il vaut toujours la peine de se demander "pourrais-je l'utiliser à nouveau un jour?"


Etat d'esprit parfait pour une programmation plus rapide à long terme, même si au début cela peut prendre plus de temps.

8
+1: Attention cependant, je me suis surpris à généraliser et à résumer quelque chose afin de pouvoir l'utiliser à nouveau un jour de plus ... "peut-être" gagner du temps plus tard.
Steven Evers

2
Avoir un "sac à malices" est la clé. Si cela devient un problème de travail pour vous, il vaudrait la peine de consacrer une partie de votre temps à développer des éléments réutilisables (en supposant que le domaine dans lequel vous travaillez est susceptible de réutilisation de code).

24

Rester simple.

Si vous utilisez TDD, vous devez suivre " red, green, refactor ":

  1. Ecrivez un test qui a échoué (en rouge ). (Souvent, votre code n'a pas encore de fonctionnalité.)
  2. Commettez des crimes de codage horribles pour faire passer vos tests ( vert ). Hardcode si nécessaire.
  3. Refactor , probablement en train de briser les tests pendant un moment, mais en améliorant globalement la conception.

3
Lorsque vous utilisez TDD, vous avez un testeur qui produit un rapport rouge / vert par test pour indiquer s’il réussit.

2
@ Konstantin: L'écriture de code à l'aide de TDD peut prendre 20% de plus, mais elle produit également un meilleur code et, à long terme, lorsque le système se développe, la vitesse de modification reste à peu près la même. TDD vous aide à éviter les dettes techniques qui vous ralentissent.

3
La dactylographie n'a jamais été la partie lente de la programmation. Même si vous devez taper davantage avec TDD, cela ne vous ralentira pas. Cela pourrait même vous accélérer, car écrire un test vous aide d'abord à vous concentrer sur ce qui est nécessaire avant de penser à la façon de le mettre en œuvre.

1
Si la direction ne comprend pas un concept clé, expliquez-le-lui. Par exemple, martinfowler.com/bliki/TechnicalDebt.html

3
@ Konstantin, si vous considérez le "développement" comme l'acte d'écrire la déclaration de code, je serais d'accord avec vous. Toutefois, si vous envisagez le terme "développement" pour inclure le conditionnement, la préparation des notes de fabrication, le déploiement, le test, la création de rapports de défaillance, la révision et la hiérarchisation des défauts, l’attribution des tâches, la recherche, le débogage et la correction, puis recommencez le processus. écrire que le test unitaire dépasse de loin les jours et la perte de confiance des clients.

22

Téléchargez toute la documentation de vos langues / bibliothèques sur votre ordinateur, puis débranchez votre câble réseau / désactivez le Wi-Fi .

Ne pas essayer d'être drôle ici. Cela m'aide vraiment!


Je fais la même chose.

La documentation en ligne et les recherches de dépannage sont de toute façon surestimées.

Installez un pare-feu et configurez-le de manière à bloquer presque tous les accès Web (j'ai des exceptions pour quelques domaines, p.ex. MSDN)
vendredi

J'envisage vraiment de faire cela (le fait de laisser ce commentaire suffisamment
probantes

Et perdre SO? hell no

20

Notez que vous avez trop longtemps lu le débordement de pile. L'excuse "Compilation" ne fonctionne que pendant si longtemps. :)


15
Cela dépend de la rapidité de votre compilateur. Alors peut-être que la "solution" est de trouver un compilateur plus lent et de l'exécuter sur un Pentium 2 avec 128 Mo de mémoire? :-)
Franci Penov

@Franci, peut-être même mettre de l'espace de swap sur une disquette. Ou deux en RAID.

20

Évitez de changer de tâche trop souvent. Les distractions et le changement de tâches peuvent être fatals, même si vous utilisez des outils comme Mylyn pour gérer vos tâches.

Déterminez une granularité (par exemple, 30 minutes) et ne travaillez que sur des tâches liées à la tâche à accomplir. Tout le reste (nouveaux rapports de bogues, courriels concernant d'autres problèmes, questions de procédure non liées) est retardé au moins jusqu'au "prochain point de contrôle". Assurez-vous de désactiver l'affichage des notifications par courrier électronique pour ne pas vous laisser entraîner.

C’est particulièrement efficace si vous avez un ami dans votre équipe qui vous laissera savoir si tout va vraiment mal et requiert votre attention immédiate.


Cela ne fonctionnera pas si votre chef attend des réponses aux courriels dans les 10 minutes.
finnw

En réalité, c'est très pertinent. Dans la mesure du possible, ne vous laissez pas prendre par des personnes égoïstes et restez fidèle à votre tâche initiale. Si vous vous permettez de vous laisser entraîner dans différentes directions, le résultat final est que vous n'obtenez rien au lieu de quelque chose.
AndyUK

14

Faites-le bien, la meilleure façon, la première fois. Si cela signifie que vous devez vous arrêter et y réfléchir pendant un moment avant de commencer, alors agissez. Fonctionne 90% du temps.


2
+1 C'est tellement vrai. Cela ne signifie pas que vous devez être "parfait"; nous ferons tous des erreurs. Mais si nous faisons les choses de la meilleure façon possible la première fois, les conséquences de ces erreurs seront beaucoup moins importantes.

+1 - Il me semble me rappeler avoir lu quelque part que la différence entre les bons programmeurs et les mauvais programmeurs n’est pas rapide. La différence est que les bons programmeurs garderont plus de leur code.
Jason Baker

C'est ma devise, le faire de la bonne façon, la première fois. Ne prenez pas l'habitude de toujours devoir corriger votre code, car vous ne l'avez pas fait correctement, conformément aux spécifications.

"Si vous n'avez pas le temps de bien faire les choses, comment allez-vous avoir le temps de le faire?"
Alex Feinman

Vous aurez peut-être besoin d'expériences du logiciel réel pour pouvoir déterminer quelle est la meilleure façon. Dans ce cas, vous ne pouvez pas le faire correctement la première fois.

14

2
C'est un bon bonus ... mais je ne pense pas que cela aura beaucoup d'impact dans l'ensemble. La saisie de code est probablement la partie la moins chronophage. (Oui, j'ai suivi et lu le lien. Je ne suis tout simplement pas d'accord avec lui.)

Si le facteur limitant de votre codage est la rapidité avec laquelle vous tapez des éléments, vous travaillez probablement au mauvais niveau d'abstraction.
Pete Kirkham

+1 Un excellent lien, un excellent article pour ceux qui le lisent jusqu’à la fin;) Je tapais bien, mais cela m’a inspiré pour passer à la disposition du clavier Programmer Dvorak en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard (mais j’ai changé -_ avec Microsoft Keyboard Layout Creator), et je suis sûr que je vais bientôt taper beaucoup plus vite :) Voir aussi: typematrix.com/dvorak
Roman Boiko


12

Pratique et travail acharné.

Vous devez consacrer du temps et des efforts. À mesure que vous devenez plus à l'aise et confiant avec les outils que vous utilisez, la vitesse et la créativité devraient suivre.

Si vous souhaitez améliorer une compétence particulière, il peut également être utile de concevoir des exercices qui vous permettront de travailler spécifiquement sur cela. Si votre lenteur est en phase de conception, essayez de trouver des problèmes de conception sur lesquels vous pourrez travailler en ligne. Refaire le même exercice vous permettra de le terminer plus rapidement et de pratiquer la vitesse. Personnellement , je aime les exercices de l' algorithme de TopCoder pour la pratique vitesse de programmation pure. Ils ont également des problèmes de conception, mais je ne les ai pas essayés.


La pratique est souvent sous-estimée dans les programmes. Cela aurait dû être l’une des cinq premières réponses.

Sensationnel. Je ne sais pas pourquoi ce n'est pas plus élevé non plus. Je n'ai jamais vraiment essayé cela. Je vais tenter le coup!
David

11

Apprenez-en davantage sur The Zone, apprenez à vous y mettre et à reconnaître que vous n'y êtes pas.

Une fois que je suis "dans la zone", je suis extrêmement productif et le code coule de moi, souvent je peux obtenir un codage de 2 ou 3 jours en une journée. Mais je trouve qu'il est souvent difficile d'arriver à cet endroit, je me retrouve à tergiverser, à me laisser distraire par d'autres choses (Stack Overflow, par exemple).

Citation tirée de ce que vous pouvez faire pour vous mettre à la place


Et sautez le déjeuner si vous êtes dans la zone ... ou restez tard ... MMMmm la Zone. baver

10

Connaissant bien votre IDE et votre framework. Devoir se tourner vers Google pour chaque petite chose prend du temps.


Mais il est également important de savoir quand vous avez besoin de Google et de pouvoir le faire rapidement.

9

1
Veuillez éditer ceci afin que je puisse le modifier, il est actuellement "trop ​​vieux".
kmarsh

1
Fortement dépendant de ce que vous devez utiliser pour bien.

8

Avant de commencer à développer:

  • Déconnectez-vous de votre boîte aux lettres
  • Désactiver tous les clients de messagerie instantanée
  • Demandez poliment à vos pairs de vous laisser le temps de vous concentrer
  • Bien sûr, arrêtez de surfer sur Internet

Chaque fois que vous êtes interrompu, vous ralentissez car il faut du temps à votre esprit pour reprendre ses esprits. J'ai entendu dire que pour chaque interruption, il fallait 5 à 10 minutes à l'esprit humain pour revenir au processus de pensée qu'il avait avant l'interruption. Avec autant de temps par interruption, il ne faut pas perdre beaucoup de temps toute la journée.

Les membres de notre entreprise ont en fait pris l'habitude de bloquer le temps qui leur était consacré, puis se sont déplacés dans une salle de conférence vide pendant quelques heures chaque jour.


7

Apprenez votre IDE de développement. Apprenez les touches de raccourci. Apprenez à moins utiliser la souris. Je trouve que cela me fait gagner beaucoup de temps.


7

Êtes-vous plus lent que vos collègues ou vos estimations sont-elles trop optimistes?


7

Pour produire des logiciels plus rapidement, j’ai trouvé que la meilleure chose à faire était d’apprendre le mieux possible votre API d’exécution. Ne tapez pas la logique de liste quand une extension LINQ fera l'affaire; ne créez pas un groupe d'auditeurs d'événements lorsque la liaison fonctionnera, etc.

En ce qui concerne l'estimation, cela vient avec l'expérience. Vous pouvez utiliser un logiciel d'estimation pour vous aider à déterminer de meilleures estimations.

Personnellement, j’ai trouvé avec les développeurs de niveau junior, prendre quelle que soit leur estimation initiale et le multiplier par 2, puis le doubler. Cela représentera tout l'apprentissage, les réunions, les pertes de temps, etc. Les développeurs de niveau supérieur ont tendance à travailler avec un facteur de 2 par rapport à leurs estimations.

Souvent, la question n'est pas de savoir si votre estimation était fausse. C'est votre estimation qui tient compte de toutes les bonnes choses? Donnez-vous vos estimations et vos échéances en termes d'effort de codage ou de temps calendaire? Pensez à tout le temps que vous passez dans la journée et à la quantité de temps réel, de codage productif par rapport aux réunions, à l’apprentissage, au débogage, etc.


3
"... multipliez-le par 2, puis doublez-le." Puisque tu es intéressé à gagner du temps, j'ai un conseil mathématique que tu pourrais peut-être utiliser ...

LOL - Je sais ce que tu dis. Mais vous serez souvent surpris par ce qui passe inaperçu, au lieu de dire "multipliez par 4".

7

Deux choses peuvent être impliquées, mais je n'ai pas encore vu parmi les réponses qui augmentent la productivité:

  • Utilisez une sorte de scripts de construction et de déploiement. Compiler, déployer, redémarrer un serveur d'applications et ne pas perdre du temps à se concentrer, cela devrait être du genre à un clic.

  • Avoir une sorte de contrôle de version. Avoir à coder sans pouvoir annuler un changement, c'est comme essayer de marcher sur des œufs


7

Quelques idées me viennent à l’esprit:

  1. Obtenez d'autres avis sur vos estimations - Y a-t-il d'autres développeurs à qui vous pourriez demander quelque chose comme: "Hé, pensez-vous que vous pouvez obtenir ce type de fonctionnalité dans ce délai?" L'idée étant que la contribution d'autres personnes peut aider à la précision dans certains cas, car quelqu'un peut noter un tas de choses que vous avez manquées en faisant l'estimation.

  2. Affinez vos compétences en matière d'estimation - Commencez par suivre votre estimation et expliquez pourquoi vous êtes indisponible: d'autres tâches ont-elles pour effet de ne pas respecter les délais? Est-ce que vous sous-estimez constamment à quel point quelque chose est compliqué? Donnez-vous un calendrier complet quand ce n'est pas pratique, par exemple, ce qui est demandé est suffisamment vague pour que la simple mise au point d'un prototype prenne des semaines et qu'il faille ensuite réévaluer ce qu'il reste à faire? Faire cela peut aider le plus à développer cette compétence, de sorte que si vous dites quelque chose va prendre x heures, vous pouvez avoir confiance en cela parce que vous l'avez fait encore et encore, encore et encore. Une autre façon d’énoncer ceci est simplement pratique, pratique, pratique.

Certes, vous avez probablement déjà pris en compte ces éléments, mais j’ai pensé qu’il valait la peine de le mentionner pour ceux qui n’en ont peut-être pas tenu compte.


7
  1. Connaître la technologie à l'intérieur et à l'extérieur
  2. Arrêtez! Pense! Aller!
  3. Architecte pour tout ce qui peut survenir, mais ne mettez en œuvre que ce qui est demandé.
  4. KISS - Keep It Simple Stupid
  5. Si cela devient trop complexe, probablement, ce n'est pas bien pensé. (Retournez aux 2 et 4)
  6. Ne restez pas coincé dans le 5. Il est souvent payant de recommencer à zéro (Retournez aux points 2 et 4)
  7. Retournez à 1.

7

Je pense qu'ils sont le mot clé ici est "opportunité". Ils n'ont pas dit que vous étiez trop lent, mais plutôt que vous n'étiez pas au bon moment.

En gestion de projet, il est important que le responsable puisse estimer avec précision le moment où vos tâches seront complètes. Je suppose que la raison principale pour laquelle vos efforts n'ont pas été jugés opportuns est que vous avez souvent eu des articles qui n'ont pas été livrés à la date prévue et qui ont été livrés beaucoup plus tard que prévu.

Pour améliorer votre rapidité d'exécution, vous voudrez peut-être consacrer plus de temps à comprendre le temps qu'il vous faudra pour terminer un travail en particulier, en fonction de vos compétences, de votre expérience et du domaine. Cela vous permettra de donner de meilleures estimations à votre chef de projet. La clé ici est "mieux" ... vous pouvez livrer à temps plus fréquemment en complétant tout avec un facteur de fudge, mais ce que vous voulez vraiment, c'est obtenir une estimation plus précise.

J'en discuterais avec votre responsable pour voir si tel est le problème. Sinon, vous risquez de finir par programmer deux fois plus vite, de faire des promesses deux fois plus vite et d’être critiqué pour votre ponctualité, car vos estimations auront toujours le même facteur d’erreur.


"... Passez plus de temps à comprendre le temps qu'il vous faudra pour terminer un travail en fonction de vos compétences, de votre expérience et du domaine." -> Oui, cela vous aidera également à réduire la portée et à gagner encore plus de temps.
Jim G.

Cela aidera également votre responsable à bien paraître vis-à-vis de son entourage. Cela permettra également de compléter des supports, tels que le marketing, en phase avec votre projet.
Tom leys

7

Restez stable, restez stable.

Construisez quelque chose qui implémente un petit peu de la fonctionnalité et assurez-vous que cela fonctionne de bout en bout. Ensuite, laissez-le fonctionner lorsque vous ajoutez de nouvelles fonctionnalités. Oui, c'est en partie une pratique de TDD, mais c'est logique même si vous ne faites pas de TDD.

La raison en est que chaque fois que je vois une personne avec 2 semaines de code qui n’a jamais été stable, il faut toujours 2 semaines supplémentaires pour que cela devienne stable.

Si vous restez stable, vous supprimez cette incertitude et vous vous donnez également la possibilité de vous rapprocher, si nécessaire.

Le contre-argument évident est que cela prendra plus de temps que de l'écrire une seule fois, car vous devrez faire un travail supplémentaire pour stabiliser le code non final. Je ne l'achète pas une seconde. Lorsque vous avez un code qui fonctionne , vous changez 5 lignes et quelque chose se casse, vous savez exactement où la rupture doit s'être produite.

Si vous avez 10 000 lignes de code qui n'ont jamais fonctionné et que vous devez trouver une rupture, vous avez une tonne de code à parcourir.

Petits changements incrémentiels sur un système toujours stable FTW. Allez lentement pour aller vite.


7

Pour moi, obtenir une bonne productivité, c'est avoir une idée claire de ce que vous essayez d'atteindre et de la façon dont vous allez y arriver.


1
Mon trajet de 30 minutes à vélo dans la campagne norvégienne me permet également de clarifier les idées et de lancer le processus de création.

6

Presque toutes les réponses ont été dites à mort dans de nombreux endroits ici et ailleurs. Ou du moins je l'ai entendu à mort. Apprenez votre IDE, apprenez à taper plus vite, utilisez des frameworks, utilisez une génération de code, etc. Mais étant le type de programmeur qui pose ces questions et fréquente des sites tels que Stack Overflow, vous connaissez déjà ces choses. . Vouliez-vous simplement ici les répéter ou voulez-vous simplement vous défouler un peu?

Mais si nous pouvions arriver à cet état? Je veux dire maîtriser toutes ces suggestions? Que se passerait-il alors? Bien. J'imagine que les délais seront encore plus courts. Et encore une fois, nous allons revenir à une perception de qualité. Je veux dire, notre métier a définitivement progressé et est devenu de plus en plus productif au fil des décennies. Mais la qualité a-t-elle augmenté pendant cette période (en excluant les toutes premières années de cours)?

Ma réponse est simple: un logiciel de qualité prend du temps ! Vous ne pouvez échanger l’un contre l’autre (qualité / vitesse). Mais oui, nous savons tous que, toutefois, nous ne sommes pas honnêtes sur le degré auquel ce compromis finit souvent par atteindre la vitesse maximale. Et nous sommes encore plus grands menteurs dès le début des projets!

Je dis que vous n'êtes pas en faute ici. Le problème réside dans la perception qu'ont les gens de la durée d'un logiciel de qualité. Nous nous leurrons de croire que nous sommes capables de créer un logiciel de qualité avec les types de chronologie que nos gestionnaires ou même nous estimons. Nous ne fabriquons pas de logiciel de qualité . Nous écrivons des logiciels qui fonctionnent, mais parfois avec des flashs de qualité dans certains coins d’une application.

Alors, que pouvons-nous faire à ce sujet? Nous ne pouvons pas simplement convaincre nos chefs que nous devons doubler ou tripler les investissements dans chacun de nos projets. Je dis donner l'exemple. Créez un logiciel vraiment génial en tant que projet parallèle. Mettez votre temps à l'intérieur et ne faites pas de compromis. Pendant tout ce temps, faites attention à vos progrès. Prenez note des tâches apparemment sans rapport avec lesquelles vous avez dû consacrer un temps inattendu et voyez si vous pouvez le justifier. Comparez cela avec tous les autres projets que vous avez réalisés. Être brutalement honnêteavec vous-même et tous les aspects de cette analyse. Les extras que vous avez réalisés avec votre logiciel de qualité peuvent-ils être négligés dans les "vrais" projets au travail? Mais peut-être que votre tentative a échoué. Quelle était la raison? Vous êtes-vous ennuyé et vous êtes-vous précipité pour obtenir les fonctionnalités de base? Je n’ai pas encore fait quelque chose comme cela moi-même, c’est pourquoi je termine cette pensée avec un doute - mais j’ai l’intention de tenter le coup. Je te tiendrai au courant :).

Enfin, je pense que la plupart (sinon toutes) les évaluations de performance sont déformées et extrêmement manipulatrices. Vous ne pouvez pas limiter la qualité et la vitesse à 100%. Votre patron devrait vous marquer par rapport à une norme définie par l'organisation. La norme de l'organisation sur le compromis entre qualité et rapidité. Imaginons qu'OrangeSoft Inc. attend 33% de qualité et 66% de vitesse. Donc, si vous écrivez du code qui comporte peut-être un tiers des tests unitaires, vous devriez le faire, mais en le rattrapant avec rapidité et délai de livraison réduit, vous devriez obtenir un score proche de 100% sur votre commentaire! (Ce sont des analogies assez approximatives mais vous comprenez le point). Mais au lieu de cela, ce qui se passe, c’est que Bob écrit du code extrêmement rapidement mais qui est notoirement buggé. Ainsi, lors de son évaluation des performances, il marquera 3/5 pour la qualité et 5/5 pour la vitesse. Par contre, Carol écrit le code beaucoup plus lentement mais produit beaucoup moins de bugs. Elle marque 5/5 pour la qualité mais 3/5 pour la vitesse. De toute façon, Bob et Carol sont immobilisés sur leur augmentation. Est-il possible pour un employé d'obtenir un score parfait? Est-ce juste?


5

La technique que j'utilise est le prototypage évolutif

Vous pouvez rechercher plus d’informations sur Google, mais si le besoin est de produire quelque chose rapidement, c’est à peu près tout. De plus, il a l'avantage que lorsque les utilisateurs disent qu'il aime ça, vous avez terminé (... et pouvez commencer à faire la documentation).

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.