Master Developers John Resig

Ci ha portato jQuery, la libreria JavaScript più utilizzata sul pianeta. Poi ci ha portato Processing.js, una porta JavaScript del popolare linguaggio di programmazione della visualizzazione dei dati. Ora, John Resig è in missione per rinnovare il modo in cui le persone imparano a programmare come Preside di Informatica per Khan Academy. L'uomo non si ferma mai (non ha nemmeno dormito?) Restituendo alla comunità, e dopo essere stato fuori dagli occhi del pubblico per un po 'di tempo, l'ho raggiunto per scoprire cosa stava facendo.


D Hai preso una pausa dalle luci della ribalta. Dove sei stato?

Intorno :) Ma più seriamente, ho deciso di dedicare più tempo allo sviluppo di applicazioni e server-side - qualcosa su cui non ho dedicato molto tempo a quando lavoravo a jQuery a tempo pieno.


D Sei ancora coinvolto nel progetto jQuery, ma hai affidato a Dave Methvin la leadership del team di base giorno per giorno. Cosa lo ha spinto?

Stavo passando meno tempo a correggere i bug giorno per giorno di jQuery e volevo assicurarmi che il progetto sarebbe stato in buone mani mentre cominciavo a lavorare su altre cose. Stanno facendo un ottimo lavoro nel mantenere la biblioteca in ottima forma. È in buone mani!


Q Khan Academy sembra essere diventata una passione per te. Qual è il tuo ruolo lì?


Ho lavorato su diversi progetti. Ho creato il framework che usiamo per gli esercizi di costruzione (disponibile su Github https://github.com/khan/khan-exercises), ho contribuito a creare l'applicazione per iPad Khan Academy, ho creato la piattaforma Computer Science e sto lavorando all'internazionalizzazione del sito, rendendolo disponibile in molte lingue alle persone di tutto il mondo.


Q Come pensi che Khan Academy stia facendo la differenza, in particolare quando si tratta del curriculum di informatica che stai costruendo? Chi è il targeting e in che modo stai raggiungendo quel pubblico?

Ho deciso di dedicare più tempo allo sviluppo di applicazioni e server.

Sono davvero entusiasta del lavoro che stiamo svolgendo alla Khan Academy. Abbiamo lavorato per trovare modi di insegnare le basi della programmazione a quelli che non hai mai programmato prima. Inoltre stiamo trovando modi per integrare l'educazione informatica con il nostro curriculum matematico e scientifico esistente, legando insieme tutti i pezzi.

Questo ha molto senso e fornisce un modo coesivo di apprendimento che altre piattaforme di programmazione non hanno. Comprendere l'algrebra è un prerequisito importante per comprendere le variabili, ad esempio. Capire la trigonometria è importante per fare lavori grafici. La combinazione di tutto questo ha molto senso. Almeno in questo momento, miriamo principalmente al nostro pubblico K-12 esistente. Finora abbiamo avuto circa 2,9 milioni di utenti della piattaforma da quando l'abbiamo lanciata nell'agosto 2012.


D Dove vedi il bilanciamento tra il sistema di istruzione tradizionale e Khan Academy (cioè come possono lavorare insieme per una migliore istruzione)?

Sono davvero entusiasta del lavoro che stiamo svolgendo alla Khan Academy.

Almeno al momento, Khan Academy si rivolge principalmente a materiale più orientato verso le persone di età inferiore (pre-college). Molti studenti usano il materiale come supplemento al loro lavoro esistente o anche come parte di una classe (a seconda della scuola). Abbiamo visto alcuni grandi risultati da parte delle scuole che usano Khan Academy come parte del loro curriculum, facendo in modo che gli studenti usino il materiale in classe e consumando sia i video che gli esercizi al loro ritmo. In questo modo, Khan Academy è in realtà molto diversa da molte altre soluzioni educative (non si concentra sui corsi universitari, ad esempio) e sta riempendo una nicchia di grande valore.


Q Il curriculum CS iniziale che stai sviluppando è incentrato sull'insegnamento dei principi di programmazione utilizzando il linguaggio JavaScript (che sembra ovvio). Dove pensi di portarlo in futuro?

Utilizziamo JavaScript e Processing.js e un ambiente di programmazione in tempo reale per offrire agli studenti un modo semplice per iniziare e interagire con il codice. Recentemente abbiamo trovato modi per convincere gli studenti a collaborare a vicenda. Quando abbiamo lanciato, abbiamo incluso la possibilità per gli studenti di "forgiare" il codice degli altri. Abbiamo aggiunto in qualche modo la possibilità di rendere queste forche facilmente individuabili, il che ha portato a un certo numero di studenti che si costruiscono a vicenda. È affascinante vederlo in atto!


D Ricordo che hai detto che stai facendo un bel po 'di lavoro sull'internazionalizzazione. È per Khan? È stato stimolante / gratificante? Quali sono gli ostacoli che hai incontrato?

Ho lavorato su i18n per due progetti: uno è un progetto parallelo e l'altro è il sito Khan Academy. È stato abbastanza impegnativo; abbiamo un sito grande con molti pezzi di contenuti originali che devono essere tradotti. Mettere tutti i pezzi in movimento organizzati e dati una parvenza di ordine è decisamente abbastanza complicato. Per fortuna, ci sono molti strumenti che aiutano già con questa roba (per esempio stiamo usando la libreria Jed.js per fare lavori di pluralizzazione sul lato client).


Q jQuery è diventata la libreria JavaScript più utilizzata su Internet. Come ci si sente?

Abbastanza bello! È così bello vedere così tante persone trarre beneficio dall'usarlo. È incredibile che, anche con i nuovi browser e le nuove API, non siamo ancora al punto di avere un'esperienza di sviluppo cross-browser del tutto ineguagliata. Si sta avvicinando e jQuery ci aiuta assolutamente, ma non vedo l'ora che sia disponibile un'API di sviluppo veramente unificata e di facile utilizzo.


Q Sto per farti la stessa domanda che ho chiesto a Dave. Ultimamente c'è stato un po 'di sniping su jQuery fino al punto in cui alcuni membri della community guardano gli sviluppatori che usano la libreria. Qual è la tua opinione su questo?

Oh, c'è sempre un cecchino. Penso che ci sia una tendenza per le persone a vedere il codice scritto male come rappresentante di tutto il codice scritto con una libreria o una lingua, e ovviamente non è così.

Un problema particolarmente delicato è che, dal momento che l'utilizzo di jQuery è così onnipresente, significa che quasi tutti lo usano in qualche modo, comprese persone che non sanno come programmare e basta copiare e incollare il codice insieme senza preoccuparsi di come funziona. Il modo migliore per combattere questo è cercare di fornire materiali didattici migliori a coloro che vogliono diventare programmatori migliori, come il nuovo jQuery Learning Center


Q Lo sviluppo di JavaScript si è evoluto un bel po 'da quando hai rilasciato jQuery per la prima volta. Quali sono le cose che vorresti aver avuto quando hai iniziato il progetto?

Oh, l'API Selectors, assolutamente (l'API Selectors è ciò che ci dà querySelectorAll e ci permette di interrogare per i nodi DOM usando selettori CSS). Divertente, il fatto che jQuery abbia reso popolare l'uso dei selettori CSS per trovare i nodi DOM è ciò che ha incoraggiato la sua standardizzazione per cominciare. È una situazione di pollo e uova :)


Q Lungo queste linee, quali sono le tendenze nello sviluppo front-end che stai vedendo e consiglierei agli sviluppatori di tenere d'occhio?

Come qualcuno che scrive molto JavaScript, ho passato più tempo con Node.js e PhantomJS. Questi ambienti ti danno la possibilità di scrivere JavaScript sul lato server e fare ogni sorta di script e creazione di applicazioni. È davvero divertente poter scrivere JavaScript e farlo funzionare sia sul client che sul server (ad esempio, essere in grado di condividere la logica per un gioco client-server).


Abbiamo visto alcuni grandi risultati delle scuole che usano Khan Academy come parte del loro curriculum.

D Sei stato abbastanza esplicito riguardo ai cambiamenti nello spazio del browser. Qual è la tua opinione sullo stato attuale dei browser e sulla competizione tra loro?

Penso che la cosa più grande che accada ai browser negli ultimi anni è il passaggio a un ciclo di rilascio rapido, sostenuto dal team di Chrome e poi ripreso dal team di Firefox. Le versioni che escono ogni tre mesi anziché ogni anno (o ogni altro anno) cambiano completamente il modo in cui le nuove funzionalità vengono introdotte e utilizzate dagli sviluppatori. Qualsiasi browser che desideri rimanere competitivo dovrà tenere il passo con questo faticoso programma di sviluppo; altrimenti, rimarranno sicuramente indietro.


Q Karen McGrane ha recentemente affermato in una conferenza che il 31% degli utenti americani di Internet utilizza solo il cellulare per l'accesso a Internet. Quali sono i tuoi pensieri sullo stato attuale dei browser per dispositivi mobili, soprattutto quando si tratta di fornire materiale didattico per Khan?

Aumentare l'accesso per più persone (e con un buon browser!) È davvero una vittoria per tutti. Non abbiamo preso di mira questo esplicitamente alla Khan Academy, ma c'è un fantastico progetto chiamato KA Lite che sta tentando di farlo accadere.


D Diversi anni fa, abbiamo parlato del concetto di includere direttamente le librerie JavaScript nel browser per migliorare le prestazioni (simile alle cache con primer). Pensi ancora che sia qualcosa da considerare?

Continuo a pensare che sia possibile, ma è difficile dire quanti benefici ci sarebbero nel farlo. Se il codice era già precompilato in bytecode e stava solo aspettando in memoria, allora immagino che ci sarebbero stati dei bei speed-up. Detto questo, scommetto che gli aumenti di velocità sarebbero inferiori a quelli forniti dai miglioramenti delle prestazioni del DOM in generale.


Q Il tuo libro, Secrets of the JavaScript Ninja, è finalmente uscito dopo quattro anni! Parlaci di quel viaggio e se pensi che il libro sia ancora pertinente per quattro anni.

Certamente è stato un viaggio! Ho scritto la maggior parte dei contenuti nel 2008-2010 e il mio co-autore, Bear Bibeault, ci ha lavorato per il periodo 2011-2012. Penso che sia ancora eccezionalmente rilevante per lo sviluppo moderno.

La prima metà del libro tratta le migliori pratiche e alcuni degli aspetti più complicati del moderno sviluppo di JavaScript. La seconda metà copre il DOM e tutto ciò che è necessario sapere per scrivere codice cross-browser. Questi due argomenti sono ancora una parte sempre presente nello sviluppo di JavaScript e dovrebbero aiutare tutti gli sviluppatori di livello intermedio ad avanzato.


Q Scriveresti mai un libro di nuovo?

Probabilmente no! Almeno non un libro stampato tradizionale. Sono desideroso di fare più blog e articoli. Se mai scriverò un altro libro, sarà sicuramente auto-pubblicato e probabilmente in formato solo ebook.


D Ora vivi a New York. Stai riscontrando differenze nella comunità degli sviluppatori tra Boston e New York?

Sto amando New York. Ho incontrato una vasta gamma di sviluppatori qui, e sono rimasto sorpreso da quanto sia forte la community qui con tonnellate di meetup, conferenze, hack-a-thons e altri eventi in corso. Mentre sono qui da poco tempo, sembra che la community stia solo diventando più forte.


Le versioni che escono ogni tre mesi invece di ogni anno cambiano completamente il modo in cui le nuove funzionalità vengono introdotte e utilizzate dagli sviluppatori.

Q A livello personale, hai intrapreso un nuovo hobby. Vuoi parlarci di questo?

Cosa certa! Ho passato più tempo ad esplorare l'arte e sono rimasto affascinato da una forma d'arte in particolare: la stampa giapponese su legno. Questa era una forma d'arte in Giappone che fu popolare dagli inizi del 1700 fino alla fine del 1800 (e continuando fino ai giorni nostri, anche se come una nicchia).

Le stampe raffigurano l'incredibile mondo di samurai, warlods, dei, bellezze e natura. Sono estremamente vivaci e sembrano sorprendentemente moderni. Ho usato le mie capacità di programmazione e ho sviluppato uno strumento per i ricercatori che aggrega le stampe di numerosi musei in tutto il mondo e li rende ricercabili per le immagini: http://ukiyo-e.org/ Ho ottenuto un risposta molto positiva da un certo numero di studiosi, che è stata la più gratificante.