Ho programmato (ossessivamente) da quando avevo 12 anni. Sono abbastanza ben informato su tutto lo spettro dei linguaggi là fuori, dall'assemblaggio, al C ++, a Javascript, a Haskell, Lisp e Qi. Ma tutti i miei progetti sono stati fatti da solo.
Mi sono laureato in ingegneria chimica, non in ingegneria informatica o informatica, ma per la prima volta in autunno lavorerò su un grande progetto di programmazione con altre persone e non ho idea di come prepararmi. Ho usato Windows per tutta la mia vita, ma questo progetto sarà molto unix-y, quindi di recente ho acquistato un Mac nella speranza di familiarizzare con l'ambiente.
Ho avuto la fortuna di partecipare a un hackathon con alcuni amici l'anno scorso - entrambi i maggiori CS - e abbastanza eccitante, abbiamo vinto. Ma quando ho lavorato con loro mi sono reso conto 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 al riguardo. Hanno anche usato molti framework e librerie. Ho dovuto imparare cosa fosse Rails da un giorno all'altro per l'hackathon (d'altra parte, non sapevano cosa fossero gli scopi o le chiusure lessicali). Tutto il nostro codice ha funzionato bene, ma non hanno capito il mio e io non ho capito il loro.
Sento riferimenti a cose che i veri programmatori fanno quotidianamente: unit test, revisioni del codice, ma ho solo il vago senso di cosa siano. Normalmente non ho molti bug nei miei piccoli progetti, quindi non ho mai avuto bisogno di un sistema di tracciamento dei bug o di test per loro.
E l'ultima cosa è che mi ci vuole molto tempo per capire il codice di altre persone. Le convenzioni di denominazione variabili (che variano con ogni nuova lingua) sono difficili (__mzkwpSomRidicAbbrev) e trovo difficile l'accoppiamento lento. Questo non vuol dire che non accoppi vagamente cose - penso di essere abbastanza bravo per il mio lavoro, ma quando scarico qualcosa come il kernel Linux o il codice sorgente di Chromium per guardarlo, passo ore a provare per capire come si collegano tutte queste directory e file dal nome strano. È un peccato di programmazione reinventare la ruota, ma spesso trovo che sia più veloce scrivere da solo la funzionalità piuttosto che passare ore a dissezionare alcune librerie.
Ovviamente, le persone che lo fanno per vivere non hanno questi problemi, e dovrò arrivare a quel punto da solo.
Domanda: quali sono alcuni passaggi che posso prendere per iniziare a "integrarmi" con tutti gli altri?
Grazie!