Sceglieresti un bootcamp di codifica o una laurea in informatica? Perché?

Le persone che stanno rispondendo a questa domanda sono per lo più istruttori di bootcamp o persone che hanno frequentato i bootcamp. Tuttavia, ho intenzione di rispondere alla tua domanda da un punto di vista del datore di lavoro. (Sono il co-fondatore e l'ex CTO di FiscalNote che è una società di AI che si occupa di analisi del governo)

Quando sto cercando di assumere un nuovo ingegnere, sto cercando qualcuno che abbia almeno o equivalente a una laurea in informatica. (il bootcamp di codifica non conta come una laurea in CS).

Queste sono le mie ragioni per cui NON prenderei in considerazione uno sviluppatore di bootcamp:

  1. Una persona con una laurea in informatica capisce i fondamenti dell'informatica. Algoritmi, concorrenza, allocazione efficiente della memoria, stack/heap, complessità big-O/time, strutture dati avanzate ecc. Queste competenze sono estremamente importanti quando si va oltre il framework (rails, node, ecc...) che questi bootcamp ti insegnano. Ti faccio un esempio semplice ma plausibile. Diciamo che avete 1 miliardo di oggetti utente, ognuno con un'età (di tipo intero positivo). Ora immaginate di dover ordinare questa lista per età abbastanza frequentemente nella vostra applicazione. (supponiamo che stiate ordinando a livello di applicazione (non a livello di DB) e supponiamo anche che abbiate una buona quantità di RAM, quindi la memoria non è un problema). Qualcuno con un background Rails bootcamp chiamerebbe semplicemente il metodo ruby.sort (perché è quello che gli è stato insegnato). Ora non è una cattiva scelta, il metodo ruby.sort usa il quick sort che è un algoritmo O(nlogn) nel caso medio. Tuttavia, stiamo ordinando 1 miliardo di utenti e sta crescendo velocemente! Abbiamo bisogno di un algoritmo migliore. Qualcuno con un background di CS capirebbe questo e scriverebbe la propria soluzione. In questo caso, poiché l'età ha un limite superiore (supponiamo che le persone non possano vivere oltre i 150 anni), si ha un vincolo in cui l'età è un numero intero tra 0 e 150. Conoscendo queste informazioni extra, possiamo progettare un algoritmo che sia O(n) time come il counting sort, bucket sort o radix sort. Questi algoritmi sono molto più efficienti in termini di velocità. Ora cosa succede se anche la memoria è un vincolo? Cosa si fa? Sono abbastanza sicuro di non poter contare su qualcuno senza un background di CS per tentare di risolvere questo problema o anche solo per rendersi conto che è un problema!
  2. I campi di addestramento non insegnano le basi del CS, insegnano come usare i frameworks, e ciò che è popolare in questo momento. QUESTO È PERICOLOSO se avete un'azienda tecnologica in rapida crescita. Immaginate di iniziare usando Ruby on Rails, e di assumere sviluppatori di bootcamp ruby on rails. Tre anni dopo, Rails decide di terminare la sua vita, fermare lo sviluppo attivo e interrompere la manutenzione (in pratica si spegne, anche se è molto improbabile). Oppure, immaginate, decidete di dover cambiare tecnologia lungo la strada a causa della ragione X o della ragione Y (è successo alla mia azienda FiscalNote, abbiamo iniziato con Rails, e stiamo passando a Node.js). È necessario avere ingegneri che capiscano come funzionano le cose nel background dei framework e dei linguaggi di programmazione per fare una transizione senza problemi. Gli ingegneri devono essere malleabili quando si tratta di tecnologia. La tecnologia cambia rapidamente, e se i vostri ingegneri non sono in grado di cambiare con essa, la vostra azienda non sopravviverà a lungo.
  3. A seconda del tipo di azienda che siete, potreste non preoccuparvi o addirittura sapere la differenza tra un ingegnere con un background CS e un ingegnere con solo un background dev bootcamp. Quindi, c'è un'enorme differenza di calibro ingegneristico tra le aziende che hanno bisogno di un team tecnico e un'azienda di ingegneri/tecnologia. Molto probabilmente, gli sviluppatori dev bootcamp hanno una possibilità molto piccola di ottenere posizioni di ingegneria a Google/Facebook/Microsoft o startup tecnologiche in rapida crescita come Slack, Stripe e Uber. Queste aziende molto probabilmente non assumeranno nessuno sviluppatore bootcamp ma piuttosto il meglio dei migliori studenti di CS. Le aziende che assumono i bootcamp di solito non sono aziende tecnologiche ma piuttosto aziende locali o aziende che non conoscono veramente la tecnologia. Per esempio, forse un ristorante messicano locale vuole un'app costruita. Non gli interessa se il loro programmatore non ha una laurea in CS, gli interessa solo che l'app sia costruita e funzionante in modo da poter vendere i loro tacos online. Tuttavia, ci sono alcune eccezioni in cui lavorano in aziende tecnologiche.
  4. Il debugging è difficile e la maggior parte delle volte il debugging richiede una conoscenza più profonda della CS e dei linguaggi di programmazione così come forse delle cose a livello di OS. Il debugging è molto più facile quando si capiscono questi concetti fondamentali di CS. Il debugging è un inferno se sai solo come usare il framework ma non capisci perché le cose vengono fatte dal framework.
  5. Sto cominciando a vedere una tendenza in cui una buona quantità di startup tecnologiche, quando si imbattono in uno sviluppatore proveniente da un bootcamp, alzano gli occhi al cielo, *sottovoce, e passano sul candidato. Mi dispiace per quei bootcampers che leggono questa risposta, ma questa è la triste verità. A noi startup tecnologiche piace parlare tra di noi di pratiche e strategie di assunzione e questo è stato un argomento comune che è venuto fuori.

Non sto cercando di colpire gli sviluppatori dei bootcamp in ogni caso, sto solo affermando che potrebbero non essere la migliore assunzione per un'azienda tecnologica/ingegneristica pesante. Incoraggio le persone a passare al campo tecnico perché voglio che più persone abbiano carriere tecniche. Ma dal mio punto di vista, spendere un sacco di soldi per prendere la strada facile (dico facile perché si arriva a saltare quelle orribili classi di algoritmi al college) di dev bootcamp non ti fa bene. Ti perdi le parti più importanti di CS. Sì, puoi andare al bootcamp e imparare subito ad essere pratico. Ma questo non è diverso dall'imparare MS Excel e non capire la programmazione e gli algoritmi che ci sono dietro.

Ci簷 che vi consiglio 癡 di assistere a un paio di lezioni di CS all'universit pi羅 vicina a voi (la maggior parte delle universit permette di partecipare) o prendere un paio di lezioni online gratuite da Stanford ecc. Non credo proprio che dovresti spendere i tuoi soldi duramente guadagnati ($10K - $15K) per un bootcamp di sviluppo.