Ho iniziato a programmare (in modo ossessivo) da quando avevo 12 anni. Sono abbastanza esperto nello spettro delle lingue là fuori, dall'assemblaggio, al C ++, a Javascript, a Haskell, Lisp e Qi. Ma tutti i miei progetti sono stati da solo.
Mi sono laureato in ingegneria chimica, non in CS o ingegneria informatica, ma per la prima volta in autunno lavorerò su un grande progetto di programmazione con altre persone e non ho idea di come prepararlo. Ho usato Windows per tutta la vita, ma questo progetto sarà molto unix-y, quindi ho acquistato un Mac recentemente nella speranza di familiarizzare con l'ambiente.
Ho avuto la fortuna di partecipare ad un hackathon con alcuni amici lo scorso anno - entrambi CS major - ed è stato abbastanza emozionante, abbiamo vinto. Ma mi sono reso conto, lavorando con loro, che il loro flusso di lavoro era molto diverso dal mio. Hanno usato Git per il controllo della versione. Non l'avevo mai usato in quel momento, ma da allora ho imparato tutto ciò che posso. Hanno anche usato molti framework e librerie. Ho dovuto imparare cosa Rails era praticamente durante la notte per l'hackathon (d'altra parte, non sapevano cosa fossero lo scope lessicale o le chiusure). Tutto il nostro codice ha funzionato bene, ma non hanno capito il mio, e non ho capito il loro.
Ho sentito riferimenti a cose che i veri programmatori fanno ogni giorno - test di unità, revisioni di codice, ma ho solo il vago senso di ciò che sono. Normalmente non ho molti bug nei miei piccoli progetti, quindi non ho mai avuto bisogno di un sistema di tracciamento dei bug o dei test per loro.
E l'ultima cosa è che mi ci vuole molto tempo per capire il codice degli altri. Le convenzioni di denominazione variabile (che variano con ogni nuova lingua) sono difficili (__mzkwpSomRidicAbbrev), e trovo difficile l'accoppiamento libero. Questo non vuol dire che non accoppiosamente le cose - penso di essere abbastanza bravo per il mio lavoro, ma quando scarico qualcosa come il kernel di Linux o il codice sorgente di Chromium per guardarlo, passo ore a provare per capire come si collegano tutte queste directory e file con nomi diversi. È un peccato programmare reinventare la ruota, ma spesso trovo che sia più veloce scrivere la funzionalità da solo, piuttosto che passare ore a sezionare qualche libreria.
Ovviamente, le persone che fanno questo per vivere non hanno questi problemi, e ho bisogno di arrivare a quel punto io stesso.
Domanda: quali sono alcuni passaggi che posso intraprendere per iniziare a "integrarmi" con tutti gli altri?
Grazie!