Disclaimer (leggere prima di saltare per rispondere):
Ho visto una serie di domande simili a quella che vorrei porre, quindi ecco alcune domande simili .
IMHO Non sono né completamente ciò che sto chiedendo, né sono accurati come spero di essere (non intendo spazzare via le risposte alle domande seguenti, né scredito i richiedenti, voglio solo essere un un po 'più approfondito):
Un diploma CS può essere di beneficio a un programmatore più anziano?
Importanza del grado CS quando si applicano per lavori di sviluppo?
Vorrei essere chiaro, non sto chiedendo quanto segue:
- Come insegnarmi a programmare da zero (senza una laurea in CS)
- Come commercializzarmi come un buon sviluppatore di software (senza una laurea in CS)
- Come ottenere un ottimo lavoro pagante come sviluppatore di software (senza una laurea in CS)
Un piccolo contesto:
Ora che ho delle esclusioni di responsabilità, lasciami chiarire la mia domanda, iniziando con una breve storia della mia esperienza come sviluppatore di software.
Prima di tutto, sono stato incredibilmente fortunato. Mi sono state offerte diverse opportunità di lavoro (un paio di pesanti progetti PHP / MySQL back-end e diverse app WP7 in XAML / C #) attraverso le quali ho davvero imparato tutto ciò che so sullo sviluppo del software. Quasi tutti i lavori di sviluppo software che ho avuto erano quelli che non ero legittimamente qualificato ad avere (e l'ho chiarito ai miei datori di lavoro prima che mi assumessero). Non voglio riconoscermi dove non è dovuto, ma direi che l' umiltà perfetta rinuncia alla modestia .
In quasi ogni singolo lavoro di sviluppo che ho avuto, ho superato le aspettative del mio datore di lavoro e ho dimostrato di essere una risorsa preziosa. Ci sono ovviamente delle eccezioni 1 . Ma il mio punto è che sono abbastanza intelligente e sono stato in grado di insegnare a me stesso ciò che dovevo sapere per avere successo nel mio lavoro. Con ogni lavoro che ho svolto, mi sono allungato sempre di più.
Frequento il campus di Seattle all'Università di Washington e attualmente sono al mio quarto anno con due anni rimanenti, lavorando a una laurea in matematica. Durante i vari lavori che ho avuto (vedi il mio curriculum se vuoi quella lista) ho anche frequentato la scuola come studente a tempo pieno.
Come penso che la maggior parte degli sviluppatori sarebbe d'accordo, studiando i tipici corsi di laurea generali, compresi i corsi di programmazione introduttiva ASSOLUTAMENTE PALES rispetto a scrivere codice reale, costruire 2 prodotti reali , lavorare con persone fantastiche e influenzare positivamente la vita degli utenti 3 .
Quindi ... come vanno le cose ... ho trascorso molto più tempo ed energie a lavorare invece di concentrarmi sui miei studi. A volte mi esibivo in modo orribile , ma per la maggior parte riuscivo a rimanere a galla con i miei voti.
Tuttavia, il programma di informatica presso UW è molto , molto , molto , molto competitivo.
Quindi, non è stata una sorpresa per me quando sono stato respinto dal programma. Due volte. Ironia della sorte, la stessa finestra di mezz'ora in cui ho ricevuto il sempre gentile, sebbene scoraggiante avviso di rifiuto via e-mail, ho ricevuto una telefonata da Amazon che mi offre uno stage estivo 4 come SDE.
Mentre mi guardo intorno ad altri "signori della mia età (21), che condividono gli stessi obiettivi di me stesso nello sviluppo del software, mi trovo abbastanza bene su dove sono, cosa sto imparando, chi sono e cosa Posso fare. Naturalmente ci sono molti 21enni molto più brillanti là fuori di me, non intendo dire che mi distinguo in mezzo alla folla, ma solo che mi sento come se non fossi spaventosamente dietro i progressi del mio pari medio .
Sono fiducioso della mia capacità di avere successo nel mondo del software. Ancora più importante, mi sento fiducioso nella mia capacità e desiderio di continuare a crescere, imparare ed essere imbarazzato umilmente quando ne ho davvero bisogno.
Laurea in matematica
Mi ritrovo a seguire una laurea in matematica con l'unico scopo di conseguire una laurea. Ci sono quelli che dicono che dovrei abbandonare e iniziare a lavorare ora (come ho avuto l'opportunità di fare), e ci sono quelli che dicono che dovrei davvero finire la mia laurea. Ho deciso di andare avanti con la mia laurea per ragioni completamente diverse da quelle che entrambi i campi tendono a sollevare, quindi per favore non incoraggiarmi in un modo o nell'altro su quella questione. Considera il problema "chiuso" :)
* RESPIRO PROFONDO * ... scusa se è più lungo di quanto mi aspettassi.
Questo in sostanza, è la mia domanda:
- Come posso determinare oggettivamente quali aree di studio, conoscenze generali e altre competenze avrei acquisito attraverso una laurea in CS di cui potrei o meno mancare ora?
Come faccio a ordinare queste abilità in ordine di importanza?
Qual è il modo migliore (nei prossimi due anni) di integrare la mia istruzione per raggiungere quegli attributi in modo tale da eguagliare o addirittura superare il livello di un corso di laurea in CS da una delle migliori università?
Ecco i passaggi che sto già eseguendo:
- Chiedi alla community di sviluppo (questo post)
- Perseguire tutoraggi con sviluppatori esperti che condividono con me un percorso di carriera simile
- Definire obiettivi di "apprendimento" a breve e lungo termine e programmi successivi che delineano argomenti di studio
- Continuare a scrivere codice e lavorare su progetti di cui sono appassionato
Se sei arrivato così lontano, meriti un biscotto :) Apprezzo che ti porti dietro.
Quindi ... comunità di sviluppo, sviluppatori esperti, compagni di studio che sono nella mia stessa barca, che consiglio avresti?
Inoltre ... tieni presente le mie dichiarazioni di non responsabilità nella parte superiore di questo post su ciò che NON sto chiedendo.
Aggiornare:
Mi rendo conto di non aver fornito parametri molto concreti per ciò che ritengo una "risposta" riuscita alle mie domande. Penso che la domanda sia molto vaga e potrebbe giustificare una serie di risposte "corrette".
Dopo un periodo di tempo ragionevole selezionerò la risposta che si adatta ai seguenti attributi:
- Spiega il perché della loro risposta
- Può parlare da un certo livello di esperienza (sia che si tratti di assumere / interagire o essere qualcuno che ha / è nei miei panni)
- È conciso ma completo, fornisce principi generali preferibilmente accoppiati con esempi specifici
- Infine, considerando la lunghezza che sembra richiedere la corrispondenza di quanto sopra, si prega di renderla una buona risposta ben comunicata che è piacevole da leggere. Altri che potrebbero essere interessati a questo in futuro, spero che siano intrattenuti e istruiti dalla risposta.
Quindi ci sono alcuni parametri per "corretto". Sono molto alti, penso, ma li ho progettati come una sorta di contorno per quello che immagino che la risposta "migliore" sarebbe. Ovviamente, dato il tempo sufficiente, selezionerò la risposta corrispondente più vicina come "risposta".
(1) - Ho lavorato su una versione precedente di questo sito Web, e mentre non ne avevamo un esplicito conversazione a riguardo, ho sentito che non ero in grado di fare molto bene (questo può essere evidenziato dal fatto che da allora hanno completamente cambiato il loro sito Web) (2) - In primo luogo, sì, è un prodotto reale (anche se sto scrivendo questo post in Chrome ...) e prende a calci in culo. In secondo luogo, ero uno sviluppatore del liceo in fase di test, ha scritto la prova codice concettuale per alcune delle nuove funzionalità di IE8 ... così è stato un po 'di tempo fa. (3) - Al momento di questo post sono lo sviluppatore che ha scritto questa app, non lo sono più responsabile della sua base di codice (4) - Il mio stage inizierà nel giugno del 2012 e lavorerò nel Web Store squadra.