Salut à tous,
Une petite question de management de projet aujourd'hui. Je code beaucoup ces derniers temps, dans quelques langages différents, sur des projets de différents types, seul ou en équipe. Mais j'ai l'impression de mal coder, ou du moins pas efficacement.
Mon problème n'est pas au niveau de la qualité (il y a encore du travail pour je code comme une rock-star, mais je sais comment améliorer ça), mais du temps passé pour écrire une pauvre petite fonctionnalité. Alors que certains écrivent un fichier complet de code, compilent, testent, et publient parce-que tout fonctionne comme voulu, j'en suis plutôt au stade d'écrire un petit bout de code, de tester, de corriger les erreurs de syntaxe, puis de me rendre compte que ça ne fonctionne absolument pas comme prévu. J'en suis au point d'écrire des tests unitaires pour 2 lignes de code !
Je cherche donc des techniques de "micro-management personnel" pour écrire du premier coup du code de qualité. Les diagrammes UML et les méthodes de management de projet à l'échelle d'une équipe ne m'intéressent pas dans ce cas. J'en utilise déjà pour certains projets en équipe, ou pour de gros projets persos, mais ai toujours ce problème de manque d'efficacité.
Comment faites-vous pour coder efficacement ?
La meilleure façon de coder
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
Il n'y a pas 36 manières … coder, coder, coder. C'est avec la pratique et l'expérience que l'efficacité viens. Ensuite le langage permet d'aller plus ou moins vite et l'utilisation de framework de se passer de réinventer la roue.
Il y a pas mal de bouquin (souvent en anglais) qui te donne les bonne pratique de codage, cependant il y en a 1 qui a été traduit en français et qui te donne de bonnes indications avec des exemples pour coder correctement, c'est «Coder Proprement». En cherchant bien tu peux le trouver sur le net.
Il y a pas mal de bouquin (souvent en anglais) qui te donne les bonne pratique de codage, cependant il y en a 1 qui a été traduit en français et qui te donne de bonnes indications avec des exemples pour coder correctement, c'est «Coder Proprement». En cherchant bien tu peux le trouver sur le net.
- Dunatotatos
- Membre
- Messages : 425
- Inscription : 11 mai 2016, 20:56
- Status : Hors-ligne
Merci pour la recommandation ! J'ai fait acquisition de ce livre, et, pour le moment, il me plaît bien. À voir si j'améliore mes compétences dans le domaine.
J'ai aussi récemment tenté l'utilisation d'un IDE (au lieu du bon vieux couple Vim/compilo), et j'ai l'impression que c'est assez utile pour corriger les fautes de frappe (essentiellement erreurs de syntaxe et mauvais non de variables). L'idéal serait un plugin pour corriger ces fautes de frappe. Je suis sûr que ça existe, mais n'ai pas encore cherché.
J'ai aussi récemment tenté l'utilisation d'un IDE (au lieu du bon vieux couple Vim/compilo), et j'ai l'impression que c'est assez utile pour corriger les fautes de frappe (essentiellement erreurs de syntaxe et mauvais non de variables). L'idéal serait un plugin pour corriger ces fautes de frappe. Je suis sûr que ça existe, mais n'ai pas encore cherché.
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
La première moitié du bouquin est assez classique dans ses recommandations, c'est la deuxième partie qui donne tout son intérêt au bouquin en mettant en pratique la première partie avec le code de JUnit comme exemple.
Si la lecture en anglais ne te fait pas peur il y a Pragmatic Programmer qui a une bonne réputation ou le plus ancien Code Complete. Sinon on m'a parlé récemment de Programming Pearls.
Pour l'IDE lequel a tu pris ? Essaye IntelliJ qui est vraiment un cran au dessus de Eclipse a mon avis. La version Comunity (gratuite) est suffisante pour tout faire, la version Ultimate (payante) apporte une meilleurs intégrations de divers framwork et quelques outils supplémentaire (client SQL, …). Ils ont décliné cet environnement pour pas mal de langage, donc a toi de choisir.
Si la lecture en anglais ne te fait pas peur il y a Pragmatic Programmer qui a une bonne réputation ou le plus ancien Code Complete. Sinon on m'a parlé récemment de Programming Pearls.
Pour l'IDE lequel a tu pris ? Essaye IntelliJ qui est vraiment un cran au dessus de Eclipse a mon avis. La version Comunity (gratuite) est suffisante pour tout faire, la version Ultimate (payante) apporte une meilleurs intégrations de divers framwork et quelques outils supplémentaire (client SQL, …). Ils ont décliné cet environnement pour pas mal de langage, donc a toi de choisir.
- kitmale
- Membre actif
- Messages : 733
- Inscription : 25 avr. 2016, 09:39
- Status : Hors-ligne
Je l'ai, "Clean Code", et en effet il est très pédagogique. A croire que seuls les anglo-saxons savent écrire des livres didactiques.Dunatotatos a écrit :Merci pour la recommandation ! J'ai fait acquisition de ce livre, et, pour le moment, il me plaît bien. À voir si j'améliore mes compétences dans le domaine.
J'ai aussi récemment tenté l'utilisation d'un IDE (au lieu du bon vieux couple Vim/compilo), et j'ai l'impression que c'est assez utile pour corriger les fautes de frappe (essentiellement erreurs de syntaxe et mauvais non de variables). L'idéal serait un plugin pour corriger ces fautes de frappe. Je suis sûr que ça existe, mais n'ai pas encore cherché.
http://player.lg1043.com/CHLGFM
"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
Avec ta question j'ai refait une petit recherche pour étoffer ma biblio et il y en a 2 qui ont l'air d'être des classiques :
Autant le premier se trouve encore, même sa traduction en Français, autant le second est bien plus délicat à trouver à un prix raisonnable (je l'ai trouvé a plusieurs centaines d'€ ) quand il n'est pas en rupture … heureusement que le net a une bonne mémoire et que l'on peut le trouver «par harsard»
- Design patterns. Catalogue des modèles de conception réutilisables,du «gang of four», ancien (1994), mais reconnu comme la référence.
- Tête la première - Designs Patterns, rédigé pour remettre a jour les notion (vieillissante) du précédent livre. La première édition date de 2004 et il y a eu une mise à jour en 2010.
Autant le premier se trouve encore, même sa traduction en Français, autant le second est bien plus délicat à trouver à un prix raisonnable (je l'ai trouvé a plusieurs centaines d'€ ) quand il n'est pas en rupture … heureusement que le net a une bonne mémoire et que l'on peut le trouver «par harsard»
- piratebab
- Site Admin
- Messages : 4946
- Inscription : 24 avr. 2016, 18:41
- Localisation : sud ouest
- Status : Hors-ligne
Je te donnerai un simple conseil que j'essaie d'appliquer au quotidien, et pas que pour le codage.
avant de te lancer, prends un papier, un crayon, et défini clairement ton besoin.
Le simple fait d'écrire clairement le besoin optimise énormément la définition de la solution.
On a trop souvent la tendance à partir bille en tete sur une solution, qui ne répond pas forcément au besoin.
Évidement, ça n’empêche pas de faire des fautes de frappe!
avant de te lancer, prends un papier, un crayon, et défini clairement ton besoin.
Le simple fait d'écrire clairement le besoin optimise énormément la définition de la solution.
On a trop souvent la tendance à partir bille en tete sur une solution, qui ne répond pas forcément au besoin.
Évidement, ça n’empêche pas de faire des fautes de frappe!
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
En effet le papier crayon est un bon début, mais si possible parler avec un pair aide encore plus avec ses remarques. Hésite pas non plus a aller a des club en soirée comme les JUG/MUG/xUG … l'échange et le partage d'expérience est un très bon moyen de s'améliorer.
- kitmale
- Membre actif
- Messages : 733
- Inscription : 25 avr. 2016, 09:39
- Status : Hors-ligne
Meme si l'on est un newbie comme moi?"Hésite pas non plus a aller a des club en soirée comme les JUG/MUG/xUG … l'échange et le partage d'expérience un très bon moyen de s'améliorer.
http://player.lg1043.com/CHLGFM
"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
"Do not fear to be eccentric in opinion, for every opinion now accepted was once eccentric. Bertrand Russell
- Dunatotatos
- Membre
- Messages : 425
- Inscription : 11 mai 2016, 20:56
- Status : Hors-ligne
Je n'ai pas vraiment donné de nouvelles par ici pendant quelques temps. Désolé, surcharge de travail & vacances...
J'ai effectivement essayé IntelliJ (en particulier quand j'ai fait un peu d'Android, l'IDE recommandé par Google est basé là-dessus). Il m'a bien aidé, mais il a le désavantage de ne pas être disponible partout facilement (installation obligatoire).
Cet IDE m'a surtout permis de remarquer que la tâche la plus consommatrice de temps lorsque je code est de débugguer les erreurs de syntaxe. Alors j'ai trouvé ceci : https://github.com/amix/vimrc un ensemble de plugins et de fichiers de config pour vim qui permettent de vérifier la syntaxe lors de l'enregistrement du fichier, de replier du code selon l'indentation, et tout un tas de choses que je ne maîtrise pas encore. Vim devient un véritable IDE.
Et je gagne effectivement un temps monstrueux !
L'étape suivante est l'écriture des tests unitaires avant l'écriture du code. J'ai déjà commencé pour les projets que je démarre maintenant, mais j'hésite à ré-écrire mes projets précédents les plus importants (qui sont en production et n'ont pas de tests unitaires, et ne permettent même pas d'en avoir -_-)
J'envie toujours les codeurs qui font en une heure ce que je fais en 2 jours, mais j'imagine que l'expérience est nécessaire (et pas suffisante).
J'ai effectivement essayé IntelliJ (en particulier quand j'ai fait un peu d'Android, l'IDE recommandé par Google est basé là-dessus). Il m'a bien aidé, mais il a le désavantage de ne pas être disponible partout facilement (installation obligatoire).
Cet IDE m'a surtout permis de remarquer que la tâche la plus consommatrice de temps lorsque je code est de débugguer les erreurs de syntaxe. Alors j'ai trouvé ceci : https://github.com/amix/vimrc un ensemble de plugins et de fichiers de config pour vim qui permettent de vérifier la syntaxe lors de l'enregistrement du fichier, de replier du code selon l'indentation, et tout un tas de choses que je ne maîtrise pas encore. Vim devient un véritable IDE.
Et je gagne effectivement un temps monstrueux !
L'étape suivante est l'écriture des tests unitaires avant l'écriture du code. J'ai déjà commencé pour les projets que je démarre maintenant, mais j'hésite à ré-écrire mes projets précédents les plus importants (qui sont en production et n'ont pas de tests unitaires, et ne permettent même pas d'en avoir -_-)
J'envie toujours les codeurs qui font en une heure ce que je fais en 2 jours, mais j'imagine que l'expérience est nécessaire (et pas suffisante).
- piratebab
- Site Admin
- Messages : 4946
- Inscription : 24 avr. 2016, 18:41
- Localisation : sud ouest
- Status : Hors-ligne
Le volume n'est pas toujours synonyme de qualité!
Regarde les méthode de coge"driven by test".
Tu commences par écrire les tests (ce qui correspond en fait à ce que doit réalisé ton code tel que décrit dans le cahier des charges), et il ne te reste plus ensuite qu'a faire un code qui passe les tests :)
Regarde les méthode de coge"driven by test".
Tu commences par écrire les tests (ce qui correspond en fait à ce que doit réalisé ton code tel que décrit dans le cahier des charges), et il ne te reste plus ensuite qu'a faire un code qui passe les tests :)
- Dunatotatos
- Membre
- Messages : 425
- Inscription : 11 mai 2016, 20:56
- Status : Hors-ligne
Pour les intéressés, j'ai grandement amélioré la qualité de mon code avec syntastic (un plugin pour Vim). En particulier, j'écris beaucoup de Python, et deux outils incroyables m'ont fait réaliser à quel point j'étais mauvais: pyflakes et pylint. Ils sont en plus faciles à intégrer dans syntastic, mais pylint est un peu lent et rend Vim lent sur de gros fichiers plein d'avertissements. (Typiquement, il vaut mieux le désactiver sur les fichiers contenant les tests unitaires.)
Pylint obligeant à coder en PEP8 (voire un peu plus strict), pas mal de recruteurs sont en plus intéressés par une telle habitude d'utilisation.
Pylint obligeant à coder en PEP8 (voire un peu plus strict), pas mal de recruteurs sont en plus intéressés par une telle habitude d'utilisation.
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
En effet sur les «gros» IDE (IntelliJ, Eclipse, …) ces outils sont intégré de bases et nous remettent dans le droit chemin assez régulièrement. Après il ne faut pas se dire que l'on code mal, mais juste d'une manière non optimal/recommandé. Ces outils permettent de ne pas être trop perdu quand on tombe sur le code d'un autre, il pousse à une homogénéisation du style d'écriture.
- vohu
- Membre
- Messages : 455
- Inscription : 16 avr. 2016, 12:02
- Localisation : Strasbourg
- Status : Hors-ligne
J'ai dernièrement essayé visual studio code. Il est vraiment sympa pour ça aussi.Dunatotatos a écrit : ↑11 avr. 2017, 10:10 Pour les intéressés, j'ai grandement amélioré la qualité de mon code avec syntastic (un plugin pour Vim). En particulier, j'écris beaucoup de Python, et deux outils incroyables m'ont fait réaliser à quel point j'étais mauvais: pyflakes et pylint. Ils sont en plus faciles à intégrer dans syntastic, mais pylint est un peu lent et rend Vim lent sur de gros fichiers plein d'avertissements. (Typiquement, il vaut mieux le désactiver sur les fichiers contenant les tests unitaires.)
Pylint obligeant à coder en PEP8 (voire un peu plus strict), pas mal de recruteurs sont en plus intéressés par une telle habitude d'utilisation.
- vohu
- Membre
- Messages : 455
- Inscription : 16 avr. 2016, 12:02
- Localisation : Strasbourg
- Status : Hors-ligne
oui, MS fait de grosses avancées vers l'open source. Ils sont même en train de porter le de .net en open source (.net core).
Pour visual studio code : https://code.visualstudio.com/
Et ils ont aussi fait un port de SQLServer pour linux (mais toujours sous licence proprio cette fois)
Pour visual studio code : https://code.visualstudio.com/
Et ils ont aussi fait un port de SQLServer pour linux (mais toujours sous licence proprio cette fois)
- vohu
- Membre
- Messages : 455
- Inscription : 16 avr. 2016, 12:02
- Localisation : Strasbourg
- Status : Hors-ligne
Après je pense que rien ne vaut un vim ou un emacs (sans faire le débat). mais, ils ont une prise en main pas évidente.
Nano est bien pratique pour changer un fichier conf ou taper quelques lignes. (on peut d'ailleurs le paramétrer pour la coloration syntaxique, la taille des indentations, la numérotation des lignes, et sans doute bien plus.
Très souvent j'utilise geany si je veux quelque chose d'un peu plus élaboré en graphique
Ensuite, les visual studio, eclipse, netbeans, intellij, pycharm consomment énormément de mémoire et de processeur pour fonctionner. Ca devient intéressant lorsqu'on travaille avec beaucoup de librairies ou des frameworks car l'autocompletion permet d'éviter bien souvent de consulter la doc, de corriger la syntaxe et beaucoup d'erreurs avant d'executer le programme.
Nano est bien pratique pour changer un fichier conf ou taper quelques lignes. (on peut d'ailleurs le paramétrer pour la coloration syntaxique, la taille des indentations, la numérotation des lignes, et sans doute bien plus.
Très souvent j'utilise geany si je veux quelque chose d'un peu plus élaboré en graphique
Ensuite, les visual studio, eclipse, netbeans, intellij, pycharm consomment énormément de mémoire et de processeur pour fonctionner. Ca devient intéressant lorsqu'on travaille avec beaucoup de librairies ou des frameworks car l'autocompletion permet d'éviter bien souvent de consulter la doc, de corriger la syntaxe et beaucoup d'erreurs avant d'executer le programme.