Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment devenir un programmeur "correct".

    1 janvier 2019 à 22:59:31

    Bonjour à tous. J'espère que ce sujet à sa place dans cette section (je ne savais pas trop ou poster)

    Je suis en reconversion pro dans un domaine qui nécessite un bagage conséquent en informatique et programmation.

    Aujourd'hui, j'apprends la programmation en autodidacte grâce à des livres, et en m'aidant d'internet. J'en apprends tous les jours un peu plus, et suis heureux de constater ma progression.

    Mais voilà, quelque chose me préoccupe. Si l'exercice régulier est évidemment formateur, il ne préserve pas des mauvaises habitudes qu'on prends quand on apprend tous seul.

    J'aurais aimé savoir si vous connaissez des conseils pour éviter les principaux écueils dans ce genre de situation. Quelles seraient, selon vous, les mauvaises habitudes à ne surtout pas prendre, quand on programme en autodidacte, avec l'ambition de devenir un professionnel (négliger certains savoirs fondamentaux, certaines pratiques...etc, tout ce qui vous vient à l'esprit).

    Merci à tous et à bientôt.

    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2019 à 8:24:00

      problème épineux, un truc qu'on oubli souvent pour nos projet personnel c'est la doc, quand on programme un truc, on devrait TOUJOURS faire une doc et commenter notre code.

      ensuite il faut voir différents langages, il y a de nombreux domaines et chacun à c'est langages, en embarqué ce sera plutôt du C et web du javascript pour de l'applicatif, C++/python, bref il faut savoir ou on veux aller pour pas se tromper, mais ne pas négliger les autres.

      • Partager sur Facebook
      • Partager sur Twitter

      la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

      Mon GitHub

        3 janvier 2019 à 16:51:55

        Salut. Merci pour ta réponse.

        Faire de la doc sur chaque fonction, et commenter par des "#", je le fais déjà, par habitude (ça m'aide beaucoup moi aussi).

        On m'a aussi conseillé plusieurs langages de programmation. Mais pour l'instant je reste sur python pour découvrir toutes les fonctionnalités de base d'un langage. Suite à ça je pense qu'il sera plus facile et rapide découvrir d'autres langages.

        Je me demandais s'il y avait des notions théoriques fondamentales à ne surtout pas négliger, comme le fonctionnement du materiel, l'algorithmique, l'optimisation et la sécurisation du code... etc.

        • Partager sur Facebook
        • Partager sur Twitter
          4 janvier 2019 à 8:04:24

          alors oui, certaines choses sont a ne pas oublier la sécurité et robustesse d'un programme sont à ne pas négliger :D. Bien souvent pour l'optimisation pure, ce n'est pas toi qui gère, par contre pour la complexité, ce sera a toi d'éviter de faire un truc trop complexe :D (complexité algorithmique).

          Ensuite tout dépende de ton domaine, en web, le fonctionnement du matériel n'est vrai pas indispensable, alors qu'en embarqué il vaut mieux savoir comment tout fonctionne.

          Mais effectivement voire plusieurs langages est une bonne chose pour pouvoir aborder plusieurs paradigme fonctionnel vs objets, séquentiel vs évènementiel, ...

          • Partager sur Facebook
          • Partager sur Twitter

          la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

          Mon GitHub

            7 janvier 2019 à 14:03:33

            D'accord, je te remercie pour tes réponses.

            À ton avis, quel axe de travail je devrais emprunter en premier pour produire un code propre et de qualité professionnelle. Est ce qu'il faut que je m'instruise de notions d’algorithmique, ou la sécurité / optimisation du code passe avant? Pour la clarté, je vais essayer de faire un effort. Si je comprends mon propre code, c'est déjà un début haha :-)

            Pour l'optimisation, même si je ne m'en occupe pas (qui s'en occupe, au fait?), il serait bon que j'ai des notions, ne serais que pour comprendre comment ça fonctionne (genre: est ce que mets une boucle for, ou while? Quel type de langage j'utilise pour quelle finalité?...etc, Ça me serait très utile).

            Ensuite, vu que je travaille essentiellement à partir de livre ou de tutoriels vidéos, si tu as des ouvrages ou des liens permettant d’acquérir de bonnes bases dans ce que nous venons d'évoquer (je dis bien, les bases, c'est suffisant pour l'instant).

            Voilà, encore merci pour ton aide.

            A bientôt :-)

            • Partager sur Facebook
            • Partager sur Twitter
              7 janvier 2019 à 15:15:59

              pour les axes, c'est assez difficile de te donner une réponse absolu, car comme tu le sais il y as nombre de langages pour autant d'utilisation, utiliser le C en web, c'est une mauvaise idée, utilisé du PHP pour faire un logiciel en ligne de commande aussi, donc il faut vraiment savoir ce que tu veux faire pour pouvoir choisir.

              Si tu veux faire de l'embarqué, robotique ou domotique, je te conseillerais Arduino et le C.

              Pour les notion à prioriser je te dirais que plutôt que de devenir expert dans un truc il vaut mieux être moyen partout, après tu pourras choisir ce qu'il faut approfondir, je te dirais que le meilleur axe et de te donner un objectif et ensuite de chercher comment l'atteindre.

              par exemple en cherchant un bon moyen de résoudre le problème du voyageur de commerce, tu va pouvoir découvrir l'algorithmique  générique, en voulant faire  un logiciel de chat over TCP tu va découvrir le protocole internet et le chiffrement. Tout ce qu'il faut c'est être méga curieux, et ne pas avoir peur de te perdre sur des articles scientifique (même simples), ou ils parlent de truc que tu connais pas forcement.

              Par contre pour l'optimisation ne t'en préoccupe pas pour le moment car c'est souvent pas indispensable (au début tout du moins), et au besoins ton compilateur connait bien son travail.

              Pour les ouvrages ou liens je n'en ais pas vraiment, je sais juste que des "coding rules" sont plutôt pratique ça permet de prendre de bonnes habitudes.

              Perso j'ai commencé (et je continue sur le C), j'ai étudier les makefiles car vraiment indispensable dans la gestion d'un projet. Et pour apprendre je cherche à répondre au questions des gens sur OC, de même je me fais quelques projets (mini jeux, robots, domotique, …)

              • Partager sur Facebook
              • Partager sur Twitter

              la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

              Mon GitHub

                7 janvier 2019 à 17:47:51

                ox223252 a écrit:

                utiliser le C en web, c'est une mauvaise idée, utilisé du PHP pour faire un logiciel en ligne de commande aussi, donc il faut vraiment savoir ce que tu veux faire pour pouvoir choisir.

                Hum, je suis pas sûr que l'exemple soit pertinent, j'ai vu des mecs faire des choses sympa en PHP CLI :p

                • Partager sur Facebook
                • Partager sur Twitter
                Fatalement vôtre
                  7 janvier 2019 à 19:54:32

                  Cro-Magnon a écrit:

                  Ensuite, vu que je travaille essentiellement à partir de livre ou de tutoriels vidéos

                  Méfiance avec les tutos vidéos, on voit pas mal de gens qui suivent des tutos vidéos sur le forum Python, et en général leur code est moche, ils comprennent pas trop ce qu'ils font, et ils progressent très lentement.

                  La vidéo, j'ai pas l'impression que ce soit un bon support pour apprendre à programmer. En plus beaucoup de tutos vidéo sont faits par des gens qui ne sont pas eux-même très compétents.

                  Pour Python, des cours comme celui de G. Swinnen sont très corrects.

                  Si tu veux du plus haut niveau, tu as des cours comme SICP et HtDP. Ce sont de bons cours, par contre ils peuvent être rebutants pour plusieurs raisons : en anglais, langage pas très connu (Scheme, un dialecte de Lisp), longs et pas faciles. Mais à mon avis c'est ce genre de cours qui fait progresser vraiment.

                  -
                  Edité par LoupSolitaire 7 janvier 2019 à 19:54:46

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Blond, bouclé, toujours le sourire aux lèvres...

                    8 janvier 2019 à 0:03:46

                    Salut à vous. Merci pour vos réponses.

                    De vos messages, je retire l'excellent conseil de progresser par la pratique.

                    A propos des sources d'information, je te rassure Loup solitaire. Le livre de G. Swinnen est mon livre de chevet (beaucoup plus que les videos que je n'utilise que pour préciser certains concepts). J'aime beaucoup ses exercices appliqués. Je prends beaucoup de temps pour les faire.

                    Malgré tout, j'aime bien l'idée que je ne passe pas à coté de quelques choses. Je suis passé à la Bibliothèque universitaire de mon coin, prendre quelques bouquins d'algorithmique. Je suivrai le plus simple et le plus appliqué. C'est de cette manière que j'aime apprendre. Si vous avez des ouvrages à me conseiller sur telle ou telle notion importante, j'aimerais que son esprit se rapproche de celui de Swinnen.

                    Si vous avez d'autres idées pour renforcer mon apprentissage avec des concepts importants, je suis preneur. Je retiens pour l'instant:

                    - La documentation du code

                    - Voir différents langages (C, JavaScript, Java, PHP pour les principaux), en lien avec les différents paradigmes de programmation

                    - robustesse et lisibilité du code.

                    - travail par projets diversifiés (voir "makefiles" pour la gestion de projets)

                    - essayer d'avoir des notions en tous ce qui touche à la programmation

                    - se méfier des tutos vidéos. Préférer les livres.

                    Bonsoir à tous. Et merci bien :-)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 janvier 2019 à 8:48:53

                      En plus de tout cela, je te conseillerai de voir :

                      - Architecture logicielle.

                      - Design pattern.

                      Une bonne architecture peut faire économiser des centaines d'heures (voir des années sur le long terme et sur des projets conséquents). C'est malheureusement la chose que 90% des développeurs maîtrise le moins et s'en foutent... C'est comme demander à un maçon de construire une maison sans plan. Il va devoir démolir et reconstruire BEAUCOUP de chose quand, au fur et à mesure, il s’apercevra que les choses ne s'assemblent pas bien.

                      Les design pattern, c'est juste une "bonne conduite" pour certains types de problèmes. En général on aborde ça en M1/M2 dans les écoles de programmations. Je pense surtout aux plus connus comme "Singleton", "Object pool" ou "Factory". Mais ça vaut le coup d'un peu tout regarder pour avoir une idée globale, et c'est toujours intéressant de comparer à comment on l'aurait implémenté sois-même.

                      -
                      Edité par WorstDevEver 8 janvier 2019 à 8:51:44

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

                      Comment devenir un programmeur "correct".

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown