Un'intervista con David Walsh

David Walsh è un noto sviluppatore web di ventisei anni nella comunità. Oltre al suo blog, ha contribuito alla creazione di Script and Style ed è un membro del team principale per il framework Mootools. Oggi parleremo con lui del suo flusso di lavoro quotidiano, di JavaScript e dello sviluppo web in generale.

Per quelli di noi che potrebbero non avere familiarità con te o il tuo blog, raccontaci un po 'di te, e cosa fai per vivere.

Mi chiamo David Walsh e mi considero un flessibile programmatore web PHP, CSS, HTML, JavaScript (MooTools e jQuery). Trascorro la maggior parte dei giorni con codice al ginocchio, combattendo la guerra contro i browser web spazzatura e i webmaster che mi hanno preceduto.

Come e perché sei stato coinvolto nello sviluppo del web?

Mi sono insegnato HTML, JavaScript e CSS durante il mio primo anno di liceo. Non ricordo perché mi sono innamorato della programmazione web, ma semplicemente non potevo impedirmi di armeggiare, armeggiare, armeggiare. Dieci anni dopo sono ancora ossessionato dalla programmazione web e spingo ogni linguaggio web al limite.

Attualmente stai lavorando per società di sviluppo o stai freelance a tempo pieno ora?

Ho un normale lavoro di 8-5 giorni, ma mi piacciono di più le mie poche ore dopo il lavoro. Generalmente mi dà il tempo di affrontare i problemi incontrati durante il giorno e trasformarli in post di blog. Le mie opportunità di sperimentare sul lavoro sono limitate, quindi la libertà di provare mi diverte dopo che il lavoro è rinfrescante.

Su molti dei tuoi siti web menzioni Wynq Web Labs. Puoi dirci di più su Wynq e il ruolo che hai in esso?

Wynq Web Labs è il mio braccio di consulenza / freelance. Wynq è specializzato nel portare il tuo sito web di vanilla al livello successivo usando MooTools o jQuery. Tanto può essere fatto usando quelle (o qualsiasi) librerie javascript che c'è sempre spazio per migliorare un sito web di base o avanzato.

Molti dei nostri lettori stanno entrando nello sviluppo del web, hai qualche consiglio specifico per coloro che sperano di avere successo in questo campo? Cosa si può fare per garantire che il loro livello di abilità sia sufficiente per il mercato del lavoro attuale?

Il miglior consiglio che posso dare è questo: metti giù il libro, apri l'editor di testo e il codice. Codice, codice, codice. Sperimenta, sperimenta, sperimenta. Armeggiare, armeggiare, armeggiare. Non c'è migliore esperienza di apprendimento che sedersi, fallire, riparare, fallire, aggiustare, ecc. Non smettere mai di fallire e non smettere mai di aggiustare. Raccomando anche di leggere siti web di sviluppo Web di qualità come il mio blog, Nettuts +, Dev-Tips e CSS-Tricks; c'è molto da imparare dalle persone che hanno una grande esperienza.

Parliamo di Javascript adesso, è giusto dire che Javascript è il tuo linguaggio di programmazione preferito?

Sì, JavaScript è diventato ufficialmente il mio linguaggio di programmazione preferito. Mi piace quanto può essere flessibile JavaScript e come può, con il tuo framework preferito e alcune linee veloci di codice, prendere un sito web da un 4 a un 8. Non ci sono molte altre lingue / piattaforme là fuori che possono avere un tale grande impatto con un tempo relativamente breve.

Sebbene tu abbia ovviamente talento in tutte le aree dello sviluppo web, come sei diventato così abile con il linguaggio Javascript?

Ho seguito il mio consiglio: sperimentare, sperimentare, sperimentare. Ho iniziato impostando un piccolo obiettivo per me stesso, fallendo, risolvendo il problema e raggiungendo quell'obiettivo. Poi è stato il prossimo test. Ho anche iniziato a seguire blog incentrati su JavaScript come i miei e mi sono unito alla sala IRC di MooTools. Non c'è davvero alcun sostituto per passione, ambizione e tempo per sperimentare.

Abbiamo visto molti post, video e articoli che indicano gli errori e i difetti della lingua, quali sono i punti di forza di Javascript??

La cosa fantastica di JavaScript è che è lo standard per lo scripting del browser. Alcune persone si lamentano che è l'unico linguaggio di scripting del browser e che siamo "bloccati" con esso. Pensa a questo: se ogni browser gestisce le loro implementazioni JavaScript in modo diverso (come fanno ora), immagina di avere diverse lingue all'interno di ciascun browser gestite in modo diverso. Che incubo!

Mi piace che JavaScript sia tipicamente digitato e che tu possa modificare i prototipi di oggetti nativi. Mi piace anche che le funzioni possano essere memorizzate come variabili e passate come argomenti (/ me guarda su PHP). Soprattutto, mi piace che JavaScript ci fornisca lo strumento per combattere siti noiosi: l'unica limitazione a ciò che possiamo fare è la mancanza di immaginazione.

Hai pubblicato centinaia di consigli e consigli di Javascript sul tuo sito web, quali sono gli errori JavaScript più comuni che vedi spesso i principianti?

L'errore JavaScript più comune che vedo è che gli sviluppatori (oi webmaster) copiano uno snippet di javascript nella pagina, non vedendolo funzionare e successivamente si lamentano che il codice non è corretto. Gli sviluppatori dovrebbero impiegare qualche minuto per studiare e comprendere il codice, non solo aspettarsi che funzioni. Alcuni altri errori che vedo spesso includono il "bene, funziona" invece di ottimizzare e usare JavaScript per sostituire i doveri sul lato server. Supplemento: sì; sostituire: no.

Dai un'occhiata ai post del tuo sito web, sarebbe ovvio a chiunque tu sia un fan di MooTools. Puoi dirci di più sul tuo coinvolgimento con MooTools?

Ho iniziato a scrivere blog su MooTools perché mi piaceva così tanto il framework. Circa un anno fa, lo sviluppatore del MooTools Core Aaron Newton mi ha chiesto di prendere in considerazione la possibilità di contribuire al codebase e alla community del framework. Un mese dopo Valerio mi ha chiesto di unirmi al team di MooTools. Oggi la maggior parte del mio tempo viene impiegata per comunicare all'interno del team, contattare le organizzazioni su MooTools, parlare con i membri della community di MooTools e scrivere tutorial su MooTools. Mi prende molto del mio tempo libero ma essere circondato da alcune delle più brillanti menti JavaScript del mondo è un modo gradito di spenderlo.

Oltre alla documentazione di MooTools, ci sono risorse specifiche o aree in cui gli sviluppatori possono trovare ulteriori informazioni e / o risposte alle loro domande sulla libreria?

Assolutamente! Ci sono molti posti in cui web designer e sviluppatori possono ottenere aiuto con MooTools. Il posto migliore è la sala IRC MooTools su Freenode: #mootools. Un altro ottimo posto per ottenere aiuto è il gruppo Google MooTools. La maggior parte degli sviluppatori e dei contributori principali di MooTools hanno blog che affrontano problemi di base e avanzati di MooTools. È difficile non trovare aiuto!

C'è una caratteristica o funzione specifica che desideri vedere inclusa in MooTools in futuro?

Molti! C'è sempre spazio per migliorare ogni framework. Mi piacerebbe vedere MooTools incorporare un gestore delle dipendenze in modo che gli sviluppatori possano scaricare gli script in base alle esigenze. Per esempio:

 // javascript $ require ('Drag.Move');

Il codice sopra aggiungerebbe Drag.Move supporto (e le sue dipendenze) se non già incluso nella pagina. So che Dojo e YUI hanno implementazioni di questo. Mi piacerebbe che MooTools lo implementasse. Essendo un membro della squadra, non posso semplicemente aspettare che accada però. :) Non vedo l'ora di lavorare con alcuni dei miei colleghi per definire come possiamo creare un tale sistema.

Nota: MooTools ha rilasciato Depender, uno strumento di compilazione lato server che utilizza PHP o Python: http://github.com/mootools/mootools-depender/

Avete in programma di creare il vostro framework Javascript, o preferireste concentrarvi sulle librerie esistenti?

Creare il mio framework JavaScript semplicemente non è nelle carte. Sono circondato da brillanti sviluppatori nel team di MooTools e rispetto il lavoro svolto dai team jQuery, Dojo ed Ext. Preferirei passare il mio tempo ad aiutare MooTools a migliorare piuttosto che provare a reinventare la ruota.

A proposito di framework Javascript, quali sono le tue opinioni generali sull'impatto che questi framework hanno avuto sullo sviluppo web? Cosa pensi che il futuro tenga per i framework Javascript?

Penso che i framework JavaScript siano le entità che più spingono i browser a fare meglio, a diventare più veloci, ad andare avanti. Fai un passo indietro e pensa a ciò che stiamo facendo ora con l'interfaccia utente web che non stavamo facendo un anno o due fa. Tutto questo grazie a JavaScript (e un gruppo di programmatori di grande talento).

Attendo con ansia progressi incredibili da ciascuno dei framework JavaScript. Siamo tutti impegnati a lungo termine e ogni giorno c'è la possibilità di un enorme balzo in avanti.

Con il passare del tempo e la tecnologia migliora, sembra che i CSS abbiano tentato di prendere in consegna elementi di funzionalità web che ci si aspetterebbe di vedere da Javascript (cioè animazioni / transizioni CSS). Quali sono i tuoi pensieri sull'uso del CSS per fare cose normalmente riservate per Javascript?

Penso che CSS e JavaScript rubino a volte i rispettivi ruoli. Se qualcosa può essere fatto (in modo affidabile) con i CSS, uno sviluppatore dovrebbe usare i CSS. Il problema è che i CSS non si muovono abbastanza velocemente (o almeno in un modo standardizzato) e la nostra unica opzione è quella di hackerare una soluzione con JavaScript. Gli angoli arrotondati e l'opacità sono ottimi esempi. Ogni browser ha una propria struttura di codice CSS per ottenere la funzionalità desiderata che rende inefficiente l'hacking CSS. I framework JavaScript eliminano tutte le preoccupazioni del cross-browser e ci permettono di codificare qualcosa e andare avanti. Dubito che cambierà presto.

Sai che dovevamo chiedere, MooTools o jQuery? Perché? Quali ritieni siano alcuni dei vantaggi o degli svantaggi che ogni quadro ha rispetto all'altro?

Mi considero abile in entrambi i framework e preferisco MooTools. In effetti, l'apprendimento di jQuery mi ha fatto amare più MooTools. A ciascuno il suo. MooTools si adatta solo "per me". Sono innamorato della natura OOP di MooTools e questa filosofia mi consente di programmare più velocemente. Trovo inoltre che il codice di MooTools sia più leggibile grazie all'utilizzo di getter, setter e parole di azione utilizzate per i nomi dei metodi. MooTools mi consente anche di creare la mia build, specializzata in qualsiasi progetto a cui sto lavorando, per ridurre al minimo le dimensioni del file.

"In effetti, l'apprendimento di jQuery mi ha fatto amare più MooTools."

Se non approvi la modifica del prototipo di oggetto nativo (MooTools e Prototype do), jQuery è la scelta migliore. La sintassi di jQuery è generalmente più breve di MooTools '. jQuery è anche noto per avere una curva di apprendimento più semplice rispetto ad altri framework. Raccomando anche jQuery per i suoi sforzi di organizzazione, promozione e coordinamento: Rey Bango e la sua squadra fanno un ottimo lavoro.

Ciò che alla fine è importante sapere è che non puoi perdere con nessuna delle due strutture. Direi che qualsiasi sviluppatore JavaScript valido dovrebbe essere competente in entrambi. La cosa migliore è che possono lavorare insieme all'interno della stessa pagina.

Per coloro che potrebbero non essere a conoscenza, puoi spiegare alcune delle principali differenze tra MooTools e jQuery?

Sicuro. MooTools modifica i prototipi di alcuni degli oggetti JavaScript nativi (stringhe, funzioni, matrici, ecc.) Per renderli più flessibili e potenti. MooTools implementa anche un solido sistema OOP Class / Inheritance che ti consente di estendere facilmente le classi di MooTools. MooTools è anche molto modulare, quindi è sufficiente scaricare i pezzi necessari.

jQuery potenzia gli elementi all'interno dell'oggetto jQuery ed è per questo che vedi frequentemente “$ (This)” - "Questo" non è sfruttato senza $ (). Tutti i plugin sono aggiunti alla funzione $. Essenzialmente jQuery è una potente funzione ($) con molte altre funzioni in essa contenute ($ .each, ad esempio). La sintassi di jQuery è generalmente più breve della sintassi di MooTools e gli stessi metodi vengono utilizzati per ottenere e impostare stili, attributi, ecc..

Ci penso in questo modo: MooTools prende gli oggetti nativi e li mette in scena. jQuery fornisce loro una "riserva" di potere. Aaron Newton ha scritto una bella recensione sulla differenza e la similitudine tra i due framework: http://jqueryvsmootools.com. Consiglio vivamente agli sviluppatori JavaScript di prendere tempo per leggere il post di Aaron e provare i due framework.

Sembra che ogni framework Javascript abbia una buona parte di plugin e script personalizzati. Disponi di plug-in o script di framework personalizzati che desideri condividere con noi?

Troppi da contare! Sono molto orgoglioso dei miei plugin MooTools: inclusi ScrollSpy, ContextMenu, Dotter, jQuery Events, LazyLoad e ScrollSide. Puoi controllare tutti i miei plugin MooTools sul mio sito web o su MooTools Forge. Ho anche alcuni plugin jQuery disponibili sul mio sito web. Le demo per i miei plugin sono disponibili su http://davidwalsh.name/demos.

Con quali altri linguaggi di programmazione o scripting stai giocando in questi giorni?

Uno dei miei professori universitari disse una volta: "Ogni sviluppatore degno di questo nome imparerà un linguaggio di programmazione all'anno" e in genere cerco di seguire questo principio. Le mie lingue principali sono PHP / MySQL e HTML / CSS / JavaScript. Mentre Git non è un linguaggio, sicuramente può essere una sfida, quindi è quello su cui attualmente mi sto concentrando. Spero di immergermi presto in Ruby e Python. Purtroppo non sembra esserci mai abbastanza tempo per imparare tutto ciò che voglio!

Sei stato coinvolto, insieme a Chris Coyier, nello sviluppo e nella produzione del famoso "Modello di sito web della band". Quali sono stati alcuni degli ostacoli o delle difficoltà coinvolti in questo progetto? Quali sono alcune delle caratteristiche di cui sei più orgoglioso?

Band Website Template si è riunito in modo incredibilmente fluido grazie all'ottimo design di Chris e alle competenze CSS. La creazione di un solido programma di installazione è stata probabilmente la parte più difficile del modello per me. BWT richiede alcune conoscenze di webdev, ma volevamo rendere l'installazione semplice per i consumatori più esperti del Web. Una volta che il programma di installazione è stato creato, il resto è stato facile. Sono orgoglioso del gestore Gig, per quanto sia semplice. Sono anche orgoglioso di quanto bene sia stato ricevuto e della mancanza di e-mail di supporto che otteniamo - abbiamo sicuramente ottenuto qualcosa di giusto!

Script & Style, una popolare scheda di collegamento per sviluppatori e designer, è stata creata anche da te e Chris Coyier. Collaborate spesso? Chris ha menzionato che ha comportato un lavoro di sviluppo personalizzato e complicato da parte tua, su cosa stava lavorando su S & S?

Io e Chris collaboriamo un bel po '. A volte è su grandi progetti come Script & Style e Band Website Template e altre volte sta scrivendo post di blog paralleli. Spesso scriverò il tutorial di MooTools che rispecchia il suo tutorial su jQuery.

Script & Style è stata sicuramente una sfida. Mi è stato chiesto di modificare alcune delle funzionalità predefinite dei feed RSS di WordPress. Di recente abbiamo anche aggiunto degli screenshot della pagina web dell'articolo, che richiedeva alcuni caching delle immagini e la codifica dell'API dello screenshot. Nonostante le sfide, il sito è stato molto gratificante e non vedo l'ora di svilupparlo ulteriormente.

Qual è la domanda più importante che si pone al primo incontro con un cliente per discutere di un nuovo progetto di sito?

Budget. Budget ti dice quasi tutto ciò che devi sapere su un cliente. Se rispetteranno il lavoro che fai. Se stanno per essere alta manutenzione. Se i loro obiettivi con il sito web saranno in linea con i tuoi obiettivi per il progetto. Ricorda che non ti stanno solo scegliendo ... li stai scegliendo anche tu.

Trovi utile collaborare con altri sviluppatori di talento in un progetto o preferisci fare il tuo lavoro da solo?

Una domanda eccellente. Generalmente dipende dal progetto. A volte è bello tenere un solo chef in cucina, di solito cerco di lavorare con una talentuosa band di sviluppatori. Le menti più uniche e abili che puoi risolvere al problema aumentano le tue possibilità di superare le aspettative.

Quali sono alcuni dei tuoi siti Web preferiti per stare al passo con le tendenze e le migliori pratiche di sviluppo web?

Stranamente ho solo alcuni siti web di base che seguo oltre a Nettuts +. Sono sempre sicuro di vedere cosa sta facendo Chris Coyier e piace leggere i post di A List Apart. Solitamente controllo i post in Script & Style. Cerco l'ispirazione attraverso quei post: modi per migliorare il loro codice o portarlo su un altro framework JavaScript. Mantengo anche l'orecchio sulla strada di Twitter per vedere quali articoli sono entusiasti.

. Dall'altra parte dello spettro, puoi darci alcuni esempi di caratteristiche che un grande sviluppatore potrebbe possedere?

Un grande sviluppatore è qualcuno che è un buon risolutore di problemi ed esplora ogni strada per raggiungere un obiettivo. Un grande sviluppatore impara dai suoi errori passati e fa tutto il possibile per evitare di ripeterli. Infine, un grande sviluppatore web è una persona che tiene il passo con tutte le tecnologie e dedica più tempo a capire e sperimentare con loro.

Che tipo di progetti stai lavorando in questi giorni? Ogni anteprima o cose che puoi condividere con noi?

Oltre a provare a pubblicare altri post MooTools e jQuery sul mio blog, ho alcuni progetti collaterali. Un progetto si chiama OPTMZR che è un sito web che offrirà numerosi strumenti per ottimizzare JavaScript, CSS, HTML, immagini e altro. L'altro progetto a cui sto lavorando è un sito web per il mio prossimo matrimonio. Aggiungerò alcune tecniche dolci di MooTools che farò sul blog una volta terminato il sito.

Dal momento che fai così tanto scrivere, qualsiasi progetto di un libro scritto da David Walsh in futuro?

Mi è stato chiesto di scrivere libri di MooTools in passato, ma tutto ciò che ho sentito è che è un sacco di lavoro con un ritorno molto basso. Mi piacerebbe vedere il mio nome stampato, ma ritengo che il mio tempo sia il migliore per i blog e aiutare le persone su IRC. Spero che un giorno possa pubblicare il blog di David Walsh che dovrebbe includere tutti i miei post nel corso degli anni.

Avete siti web o progetti che vorreste spudoratamente collegare ad oltre 50.000 abbonati?

Consiglio vivamente di dare un'occhiata al mio blog: ho un sacco di fantastici tutorial su jQuery e MooTools e demo che ti daranno una migliore comprensione dei due framework. Sentiti libero di seguirmi su Twitter: @davidwalshblog. Raccomando anche di visitare Script & Style - Chris Coyier e io moderiamo e approviamo alcuni articoli di alto livello HTML / Javascript / CSS scritti da esperti del settore. E non dimenticare di visitare MooTools Forge - centinaia di plugin MooTools di qualità da designer e sviluppatori come te! MooTools FTW!

Scrivi un tutorial Plus

Sapevi che puoi guadagnare fino a $ 600 per scrivere un tutorial PLUS e / o screencast per noi? Stiamo cercando tutorial dettagliati e ben scritti su HTML, CSS, PHP e JavaScript. Se sei dell'abilità, contatta Jeffrey a [email protected].

Si prega di notare che il risarcimento effettivo dipenderà dalla qualità del tutorial finale e screencast.

  • Seguici su Twitter o iscriviti al feed Nettuts + RSS per i migliori tutorial di sviluppo web sul web.