Meesterontwikkelaars John Resig

Hij bracht ons jQuery, de meest gebruikte JavaScript-bibliotheek ter wereld. Toen bracht hij ons Processing.js, een JavaScript-poort van de populaire datavisualisatie programmeertaal. Nu is John Resig op een missie om de manier waarop mensen programmeren als de decaan van de computerwetenschappen voor Khan Academy nieuw leven in te blazen. De man stopt nooit (slaapt hij zelfs?) En geeft terug aan de gemeenschap, en nadat ik enige tijd buiten het publieke oog was, heb ik hem ingehaald om erachter te komen wat hij heeft gedaan.


V U hebt een onderbreking uit de schijnwerpers genomen. Waar ben je geweest?

Rond :) Maar serieuzer, ik besloot om meer tijd te besteden aan applicatie- en server-side ontwikkeling - iets waar ik niet veel tijd aan besteedde toen ik fulltime aan jQuery werkte.


V Je bent nog steeds betrokken bij het jQuery-project, maar hebt het dagelijkse kernteamleiderschap overgedragen aan Dave Methvin. Wat heeft dat veroorzaakt?

Ik besteedde minder tijd aan de dagelijkse bugfixing van jQuery en wilde zeker weten dat het project in goede handen zou zijn toen ik aan andere dingen begon te werken. Ze hebben uitstekend werk verricht door de bibliotheek in goede staat te houden. Het is in goede handen!


Q Khan Academy lijkt een beetje een passie voor je te zijn geworden. Wat is jouw rol daar??


Ik heb aan een aantal verschillende projecten gewerkt. Ik heb het raamwerk gemaakt dat we gebruiken voor bouwoefeningen (beschikbaar op Github https://github.com/khan/khan-exercises), hielp bij het bouwen van de Khan Academy iPad-applicatie, maakte het Computer Science-platform en werk nu aan internationalisering van de site, waardoor het beschikbaar is in vele talen voor mensen over de hele wereld.


V Hoe denk je dat Khan Academy een verschil maakt, met name als het gaat om het computer science curriculum dat je aan het bouwen bent? Voor wie is het gericht en hoe bereik je dat publiek?

Ik besloot om meer tijd te besteden aan het ontwikkelen van applicaties en servers.

Ik ben erg enthousiast over het werk dat we doen op Khan Academy. We hebben gewerkt aan het vinden van manieren om de basisprincipes van programmeren aan te leren die nog nooit zijn geprogrammeerd. Daarnaast vinden we manieren om het computerwetenschapsonderwijs te integreren met ons bestaande wiskunde- en wetenschapscurriculum - waarbij alle onderdelen samen worden verbonden.

Dit is logisch en biedt een samenhangende manier van leren die andere programmeerplatforms niet hebben. Het begrijpen van algrebra is een belangrijke voorwaarde om variabelen te begrijpen, bijvoorbeeld. Het begrijpen van trigonometrie is belangrijk voor grafische werkzaamheden. Het is logisch om dit alles samen te combineren. Nu richten we ons in de eerste plaats op ons bestaande K-12 publiek. Tot nu toe hebben we ongeveer 2,9 miljoen gebruikers van het platform sinds we het in augustus 2012 hebben gelanceerd.


V Waar zie je de balans worden geslagen tussen het traditionele onderwijssysteem en Khan Academy (dat wil zeggen hoe kunnen ze samenwerken aan beter onderwijs)?

Ik ben erg enthousiast over het werk dat we doen op Khan Academy.

De Khan Academy richt zich op dit moment in de eerste plaats op materiaal dat meer is gericht op mensen van een jongere leeftijd (pre-college). Veel studenten gebruiken het materiaal als aanvulling op hun bestaande werk of zelfs als onderdeel van een klas (afhankelijk van de school). We hebben geweldige resultaten gezien van scholen die Khan Academy gebruiken als onderdeel van hun curriculum, waardoor studenten het materiaal in de klas gebruiken en zowel de video's als oefeningen in hun eigen tempo consumeren. Op deze manier is Khan Academy eigenlijk heel anders dan veel van de andere onderwijsoplossingen die er zijn (bijvoorbeeld niet gericht op college-cursussen) en vult een ongelooflijk waardevolle niche.


V Het eerste CS-curriculum dat je aan het bouwen bent, is gericht op het onderwijzen van programmeerprincipes met behulp van de JavaScript-taal (wat vanzelfsprekend lijkt). Waar wil je het in de toekomst mee naartoe nemen??

We gebruiken JavaScript en Processing.js en een real-time programmeeromgeving om studenten een eenvoudige manier te geven om aan de slag te gaan en de code te gebruiken. We hebben onlangs manieren gevonden om studenten te laten samenwerken aan elkaars werk. Toen we begonnen, bevatten we de mogelijkheid voor studenten om elkaars code te 'vorksen'. We hebben op een aantal manieren toegevoegd dat deze vorken gemakkelijk vindbaar zijn, wat heeft geresulteerd in een aantal studenten die afhaken van elkaars werk. Het is fascinerend om het te zien aan de gang!


V Ik herinner me dat je zei dat je behoorlijk wat werk doet rond internationalisering. Is dat voor Khan? Is het een uitdaging / beloning geweest? Wat zijn de hindernissen die je bent tegengekomen??

Ik heb gewerkt aan i18n voor twee projecten: de ene is een bijproject en de andere is de Khan Academy-site. Het was een hele uitdaging; we hebben een grote site met veel originele inhoud die vertaald moet worden. Het krijgen van alle bewegende stukken georganiseerd en gegeven enige schijn van orde is absoluut vrij lastig. Gelukkig zijn er veel tools die al helpen met dit soort dingen (we gebruiken bijvoorbeeld de Jed.js-bibliotheek om wat meerzijdig werk te doen aan de clientzijde).


Q jQuery is de meest gebruikte JavaScript-bibliotheek op internet geworden. Hoe voelt dat?

Best gaaf! Het is zo geweldig om te zien dat zoveel mensen baat hebben bij het gebruik ervan. Het is verbazingwekkend dat we, zelfs met nieuwe browsers en API's, nog steeds niet de volledige ervaring van een cross-browser ontwikkeling hebben. Het komt steeds dichterbij, en jQuery helpt daar absoluut mee, maar ik kijk uit naar de dag waarop we een echt uniforme, eenvoudig te gebruiken ontwikkel-API hebben.


V Ik ga je dezelfde vraag stellen die ik Dave vroeg. Er is de laatste tijd een beetje geknipt bij jQuery tot een punt waar sommigen in de community neerkijken op ontwikkelaars die de bibliotheek gebruiken. Wat is jouw mening hierover??

Oh, er is altijd een sluipschutter. Ik denk dat mensen geneigd zijn om slecht geschreven code te zien als representatief voor alle code geschreven met een bibliotheek of taal, en dat is duidelijk niet zo.

Een bijzonder lastige kwestie is dat sinds het gebruik van jQuery zo alomtegenwoordig is, dit betekent dat bijna iedereen het op de een of andere manier gebruikt - inclusief mensen die helemaal niet weten hoe ze moeten programmeren en gewoon de code kopiëren en plakken, zonder er om te geven hoe het werkt. De beste manier om dit te bestrijden is om te proberen en beter educatief materiaal aan te bieden aan diegenen die betere programmeurs willen worden, zoals het nieuwe jQuery Learning Center


Q JavaScript-ontwikkeling is behoorlijk geëvolueerd sinds je jQuery voor het eerst hebt uitgebracht. Wat zijn de dingen die je zou willen dat je zou hebben gehad toen je voor het eerst het project begon?

Oh, de Selectors API, absoluut (de Selectors API is wat ons geeft querySelectorAll en stelt ons in staat om te zoeken naar DOM-knooppunten met CSS-selectors). Het is amusant dat het feit dat jQuery het gebruik van CSS-selectors heeft gepopulariseerd om DOM-knooppunten te vinden, in de eerste plaats de standaardisatie heeft aangemoedigd. Het is een kip-en-ei-situatie :)


Q Wat deze trends betreft, wat zijn de trends in de front-end-ontwikkeling die u ziet en raden ontwikkelaars aan in de gaten te houden?

Als iemand die veel JavaScript schrijft, heb ik meer tijd doorgebracht met Node.js en PhantomJS. Deze omgevingen bieden u de mogelijkheid om JavaScript aan de serverzijde te schrijven en allerlei soorten scripts en authoring van applicaties uit te voeren. Het is erg leuk om JavaScript te kunnen schrijven en zowel op de client als op de server te laten werken (bijvoorbeeld om logica te kunnen delen voor een client-serverspel).


We hebben geweldige resultaten gezien van scholen die Khan Academy gebruiken als onderdeel van hun curriculum.

V Je hebt redelijk open gezeten over de verschuivingen in de browserruimte. Wat is uw mening over de huidige staat van browsers en de concurrentie tussen hen?

Ik denk dat het grootste probleem dat browsers de afgelopen jaren hebben overkomen, de overgang naar een snelle release-cyclus is, voorgestaan ​​door het Chrome-team en vervolgens overgenomen door het Firefox-team. Het hebben van releases die elke drie maanden verschijnen in plaats van elk jaar (of elk ander jaar) verandert volledig hoe nieuwe functies door ontwikkelaars worden geïntroduceerd en gebruikt. Elke browser die competitief wil blijven, moet dit halsbrekende ontwikkelingsschema bijhouden; anders zullen ze zeker achterblijven.


Q Karen McGrane heeft onlangs op een conferentie verklaard dat 31% van de Amerikaanse internetgebruikers alleen mobiel gebruiken voor internettoegang. Wat vindt u van de huidige staat van mobiele browsers, vooral als het gaat om het leveren van educatief materiaal voor Khan?

Het vergroten van toegang voor meer mensen (en met een goede browser!) Is echt een overwinning voor iedereen. We hebben dit niet expliciet gericht op de Khan Academy, maar er is een geweldig project genaamd KA Lite dat dit probeert te realiseren.


V Meerdere jaren geleden hadden we het over het concept om direct JavaScript-bibliotheken in de browser op te nemen om de prestaties te verbeteren (vergelijkbaar met geprimede caches). Denk je nog steeds dat dat iets is om over na te denken??

Ik denk nog steeds dat het mogelijk is, maar het is moeilijk te zeggen hoeveel profijt er zou zijn van dat te doen. Als de code al was vooraf gecompileerd in bytecode en gewoon in de herinnering wachtte, dan zou ik me voorstellen dat er een paar aardige versnellingen zouden zijn. Dat gezegd hebbende, ik wed dat de versnellingen minder zullen zijn dan die door prestatieverbeteringen aan de DOM in het algemeen.


Q Je boek, Secrets of the JavaScript Ninja, is eindelijk uit na vier jaar! Vertel ons over die reis en als je denkt dat het boek nog steeds vier jaar later relevant is.

Het is zeker een reis geweest! Ik schreef het grootste deel van de inhoud over 2008-2010 en mijn co-auteur, Bear Bibeault, heeft eraan gewerkt in 2011-2012. Ik denk dat het nog steeds uitzonderlijk relevant is voor de moderne ontwikkeling.

De eerste helft van het boek behandelt best practices en enkele van de moeilijkere aspecten van moderne JavaScript-ontwikkeling. De tweede helft behandelt de DOM en alles wat u moet weten om een ​​code voor verschillende browsers te kunnen schrijven. Deze twee onderwerpen zijn nog steeds een altijd aanwezig onderdeel van JavaScript-ontwikkeling en zouden iedereen van gemiddelde tot gevorderde ontwikkelaars moeten helpen.


Vraag: Zou je ooit nog een boek schrijven??

Waarschijnlijk niet! Althans niet een traditioneel gedrukt boek. Ik wil graag meer bloggen en artikelen schrijven. Als ik ooit nog een boek schrijf, zal het absoluut zelf-gepubliceerd zijn en waarschijnlijk alleen in e-boek.


V Je woont nu in New York. Ziet u verschillen in de ontwikkelaarsgemeenschap tussen Boston en NYC??

Ik hou van New York. Ik heb hier een breed scala aan ontwikkelaars ontmoet en ik was verbaasd over hoe sterk de community hier is met tonnen meetups, lezingen, hack-a-thons en andere evenementen die gaande zijn. Hoewel ik hier nog maar kort ben geweest, voelt het alsof de community alleen maar sterker wordt.


Het hebben van releases die elke drie maanden verschijnen in plaats van elk jaar, verandert volledig hoe nieuwe functies door ontwikkelaars worden geïntroduceerd en gebruikt.

V Persoonlijk heb je een nieuwe hobby opgepakt. Wil je ons daarover vertellen??

Natuurlijk! Ik heb meer tijd besteed aan het verkennen van kunst en ben gefascineerd geraakt door één kunstvorm in het bijzonder: Japanese Woodblock Printing. Dit was een kunstvorm in Japan die werd gepopulariseerd van de vroege 1700 tot de late jaren 1800 (en doorgaan tot de dag van vandaag, hoewel als een niche).

De prenten beelden de ongelooflijke wereld van samoerai, warlods, goden, schoonheden en de natuur af. Ze zijn buitengewoon levendig en zien er verrassend modern uit. Ik heb mijn programmeervaardigheden gebruikt om te gebruiken en heb een hulpmiddel ontwikkeld voor onderzoekers die afdrukken van een aantal musea over de hele wereld samenvoegen en deze afbeeldingen doorzoekbaar maakt: http://ukiyo-e.org/ Ik heb een zeer positieve reactie van een aantal geleerden, wat zeer de moeite waard was.