Ich programmiere (obsessiv) seit meinem 12. Lebensjahr. Ich kenne mich in allen Sprachen aus, von Assembler über C ++ und Javascript bis hin zu Haskell, Lisp und Qi. Aber alle meine Projekte waren von mir.
Ich habe meinen Abschluss in Chemieingenieurwesen gemacht, nicht in Wirtschaftsingenieurwesen oder Computertechnik, aber diesen Herbst arbeite ich zum ersten Mal mit anderen Leuten an einem großen Programmierprojekt, und ich habe keine Ahnung, wie ich mich vorbereiten soll. Ich benutze Windows mein ganzes Leben lang, aber dieses Projekt wird sehr unix-artig sein, deshalb habe ich kürzlich einen Mac gekauft, um mich mit der Umgebung vertraut zu machen.
Ich hatte das Glück, im vergangenen Jahr mit ein paar Freunden an einem Hackathon teilzunehmen - beide CS-Majors - und aufregender Weise haben wir gewonnen. Als ich mit ihnen zusammenarbeitete, wurde mir jedoch klar, dass sich ihr Arbeitsablauf sehr von meinem unterschied. Sie verwendeten Git für die Versionskontrolle. Ich hatte es damals noch nie benutzt, aber seitdem habe ich alles gelernt, was ich kann. Sie verwendeten auch viele Frameworks und Bibliotheken. Ich musste lernen, was Rails so ziemlich über Nacht für den Hackathon war (andererseits wussten sie nicht, was lexikalisches Scoping oder Closures sind). Unser gesamter Code hat gut funktioniert, aber sie haben meinen nicht verstanden, und ich habe ihren nicht verstanden.
Ich höre Hinweise auf Dinge, die echte Programmierer tagtäglich tun - Unit-Tests, Code-Reviews, aber ich habe nur einen sehr vagen Eindruck davon, was das ist. Normalerweise habe ich in meinen kleinen Projekten nicht viele Fehler, daher habe ich nie ein Fehlerverfolgungssystem oder Tests für diese benötigt.
Und das Letzte ist, dass ich lange brauche, um den Code anderer Leute zu verstehen. Variable Namenskonventionen (die mit jeder neuen Sprache variieren) sind schwierig (__mzkwpSomRidicAbbrev), und ich finde die lose Kopplung schwierig. Das soll nicht heißen, dass ich Dinge nicht locker kopple - ich denke, ich bin ziemlich gut darin für meine eigene Arbeit, aber wenn ich etwas wie den Linux-Kernel oder den Chromium-Quellcode herunterlade, um es mir anzusehen, verbringe ich Stunden damit, es zu versuchen um herauszufinden, wie all diese seltsam benannten Verzeichnisse und Dateien miteinander verbunden sind. Es ist eine Programmiersünde, das Rad neu zu erfinden, aber ich finde es oftmals einfacher, die Funktionalität selbst zu schreiben, als Stunden damit zu verbringen, eine Bibliothek zu sezieren.
Offensichtlich haben Leute, die dies für ihren Lebensunterhalt tun, diese Probleme nicht, und ich muss selbst auf diesen Punkt kommen.
Frage: Welche Schritte kann ich unternehmen, um mich in alle anderen zu "integrieren"?
Vielen Dank!