Je programme (de manière obsessionnelle) depuis mes 12 ans. Je connais assez bien le spectre des langages, de l'assemblage au C ++, en passant par Javascript, Haskell, Lisp et Qi. Mais tous mes projets l'ont été par moi-même.
J'ai obtenu mon diplôme en génie chimique, pas en génie informatique ou en génie informatique, mais pour la première fois cet automne, je vais travailler sur un grand projet de programmation avec d'autres personnes, et je ne sais pas comment me préparer. J'ai utilisé Windows toute ma vie, mais ce projet va être très unixy, j'ai donc acheté un Mac récemment dans l'espoir de me familiariser avec l'environnement.
J'ai eu la chance de participer à un hackathon avec des amis l'année dernière - les deux majors CS - et assez excitant, nous avons gagné. Mais j'ai réalisé en travaillant avec eux que leur flux de travail était très différent du mien. Ils ont utilisé Git pour le contrôle de version. Je ne l'avais jamais utilisé à l'époque, mais j'ai depuis appris tout ce que je pouvais à ce sujet. Ils ont également utilisé de nombreux frameworks et bibliothèques. J'ai dû apprendre ce que Rails était à peu près du jour au lendemain pour le hackathon (d'un autre côté, ils ne savaient pas ce qu'étaient la portée lexicale ou les fermetures). Tout notre code fonctionnait bien, mais ils ne comprenaient pas le mien et je ne comprenais pas le leur.
J'entends des références à des choses que les vrais programmeurs font quotidiennement - les tests unitaires, les revues de code, mais je n'ai que le sens le plus vague de ce que c'est. Normalement, je n'ai pas beaucoup de bogues dans mes petits projets, donc je n'ai jamais eu besoin d'un système de suivi des bogues ou de tests pour eux.
Et la dernière chose est qu'il me faut beaucoup de temps pour comprendre le code des autres. Les conventions de dénomination variables (qui varient avec chaque nouvelle langue) sont difficiles (__mzkwpSomRidicAbbrev), et je trouve le couplage lâche difficile. Cela ne veut pas dire que je ne couple pas les choses de manière lâche - je pense que je suis assez bon dans ce domaine pour mon propre travail, mais quand je télécharge quelque chose comme le noyau Linux ou le code source Chromium pour le regarder, je passe des heures à essayer pour comprendre comment tous ces répertoires et fichiers aux noms étranges se connectent. C'est un péché de programmation de réinventer la roue, mais je trouve souvent qu'il est juste plus rapide d'écrire moi-même la fonctionnalité que de passer des heures à disséquer une bibliothèque.
De toute évidence, les gens qui font cela pour gagner leur vie n'ont pas ces problèmes, et je vais devoir y arriver moi-même.
Question: Quelles sont les étapes à suivre pour commencer à "intégrer" avec tout le monde?
Merci!