Un interviu cu David Walsh

David Walsh este un cunoscut dezvoltator web în vârstă de douăzeci și șase de ani în comunitate. În plus față de blogul său, a contribuit la crearea scenariului și a stilului și este un membru al echipei de bază pentru cadrul Mootools. Astăzi, vom vorbi cu el despre fluxul de lucru de zi cu zi, despre JavaScript și despre dezvoltarea webului în general.

Pentru aceia dintre noi care nu sunt familiarizați cu dvs. sau cu blogul dvs., spuneți-ne puțin despre dvs. și ce faceți pentru a vă găsi.

Numele meu este David Walsh și consider că sunt un programator web flexibil PHP, CSS, HTML, JavaScript (MooTools și jQuery). Imi petrec majoritatea zilelor in genunchi, luptand cu razboiul impotriva browserelor web si a webmasterilor care au venit inaintea mea.

Cum și de ce v-ați implicat pentru dezvoltarea web-ului??

M-am învățat HTML, JavaScript și CSS în timpul anilor de liceu. Nu-mi amintesc de ce m-am îndrăgostit de programarea web, dar pur și simplu nu m-am putut opri de tinkering, tinkering, tinkering. Zece ani mai târziu, eu sunt încă obsedat de programarea web și împingând fiecare limbă web la limitele sale.

În prezent lucrați pentru orice companii de dezvoltare sau sunteți liberi cu normă întreagă acum?

Am o slujbă normală de 8-5 zile, dar mă bucur de cele câteva ore după ce lucrez cel mai mult. În general, îmi dă timp să iau problemele întâlnite pe parcursul zilei și să le transform în postări pe blog. Oportunitățile mele de a experimenta la locul de muncă sunt limitate, astfel încât libertatea de a-mi face plăcere după muncă este reconfortantă.

Pe multe dintre site-urile dvs., menționați Wynq Web Labs. Puteți să ne spuneți mai multe despre Wynq și despre rolul pe care îl aveți în el?

Wynq Web Labs este brațul meu de consultant / independent. Wynq este specializată în a lua site-ul dvs. de vanilie la următorul nivel folosind MooTools sau jQuery. Atât de mult se poate face folosind acele (sau orice) biblioteci javascript că există întotdeauna loc pentru a îmbunătăți un site de bază sau avansat.

Mulți dintre cititorii noștri intră doar în dezvoltarea web, aveți vreo sfat specific pentru cei care speră să reușească în acest domeniu? Ce poate face cineva pentru a-și asigura nivelul de calificare suficient pentru piața actuală de locuri de muncă?

Cel mai bun sfat pe care pot să-l dau este acesta: puneți jos cartea, deschideți editorul de text și codați-vă. Cod, cod, cod. Experimentați, experimentați, experimentați. Tinker, tinker, tinker. Nu există o experiență de învățare mai bună decât șederea, lipsa, fixarea, lipsa, fixarea etc. Nu opriți niciodată eșecul și nu opriți niciodată fixarea. De asemenea, vă recomandăm să citiți site-uri web de dezvoltare web de calitate, precum blogul meu, Nettuts +, Dev-Tips și CSS-Tricks; există multe de învățat de la oamenii care au o bogată experiență.

Să vorbim Javascript acum, este corect să spun că Javascript este limba dvs. de programare preferată?

Da, JavaScript a devenit oficial limbajul meu de programare preferat. Îmi place cât de flexibil poate fi JavaScript și cum se poate, cu cadrul dvs. preferat și câteva linii rapide de cod, să ia un site web de la 4 la 8. Nu există multe alte limbi / platforme acolo decât poate avea o astfel de impact mare cu o perioadă relativ scurtă de timp.

Deși evident că sunteți talentați în toate domeniile de dezvoltare web, cum ați devenit atât de priceput cu limbajul Javascript?

Mi-am luat propriul sfat: experiment, experiment, experiment. Am pornit prin stabilirea unui gol mic pentru mine insuficient, rezolvând problema și atingând acest obiectiv. Apoi a urmat următorul test. De asemenea, am început să urmăresc blogurile centrate pe JavaScript, ca mine, și s-au alăturat camerei IRC MooTools. Nu există nici un substitut pentru pasiune, ambiție și timp pentru a experimenta.

Am văzut cu toții o mulțime de postări, videoclipuri și articole care evidențiază greșelile și defectele în limba respectivă, ce credeți că unele dintre punctele forte ale Javascript sunt?

Ce este minunat în legătură cu JavaScript este faptul că este unul standard pentru scriptingul browserului. Unii oameni se tem că este singurul limbaj de scripting pentru browser și că suntem "blocați" de el. Gândiți-vă la acest lucru: dacă fiecare browser gestionează implementările JavaScript în mod diferit (așa cum fac acum), imaginați-vă că numeroasele limbi din fiecare browser au fost tratate diferit. Ce cosmar!

Îmi place că JavaScript este tastat în mod liber și că puteți modifica prototipurile obiectului nativ. De asemenea, mi-a plăcut că aceste funcții pot fi stocate ca variabile și transmise ca argumente (/ me glares la PHP). Mai presus de toate, îmi place că JavaScript ne oferă instrumentul de a lupta cu site-urile plictisitoare - singura limitare a ceea ce putem face este lipsa imaginației.

Ați postat sute de sfaturi și sfaturi de Javascript pe site-ul dvs., care sunt câteva greșeli comune de Javascript pe care le vedeți adesea începătorii?

Cea mai obișnuită greșeală din JavaScript pe care o văd este că dezvoltatorii (sau webmasterii) copiază un fragment de javascript în pagină, văzând că nu funcționează, și apoi plângând că codul nu este corect. Dezvoltatorii ar trebui să ia câteva momente pentru a studia și înțelege codul - nu numai că se așteaptă ca acesta să funcționeze. Câteva alte greșeli pe care le văd frecvent includ stabilirea pentru "bine, funcționează" în loc să optimizeze și să utilizeze JavaScript pentru a înlocui sarcinile de la server. Supliment: da; înlocuiți: nr.

Dintr-o privire la postările site-ului dvs., ar fi evident pentru oricine sunteți un fan MooTools. Puteți să ne spuneți mai multe despre implicarea dvs. în MooTools?

Am inceput sa fac bloguri despre MooTools pentru ca mi-a placut atat de mult cadrul. Aproximativ un an în urmă, MooTools Core Developer, Aaron Newton, mi-a cerut să ia în considerare contribuția la codul de bază al cadrului și la comunitate. O lună mai târziu, Valerio mi-a cerut să intru în echipa MooTools. Astăzi cea mai mare parte a timpului meu este petrecut comunicând în cadrul echipei, contactând organizațiile despre MooTools, discutând cu membrii comunității MooTools și scriind tutoriale MooTools. Îmi ia o mulțime de timp liber, dar fiind înconjurat de unele dintre cele mai minunate minți JavaScript din lume este o modalitate binevenită de ao petrece.

Pe lângă documentația MooTools, există resurse sau domenii specifice în care dezvoltatorii pot găsi informații suplimentare și / sau răspunsuri la întrebările lor despre bibliotecă?

Absolut! Există multe locuri în care designerii web și dezvoltatorii pot obține ajutor cu MooTools. Cel mai bun loc este camera IRC MooTools pe Freenode: #mootools. Un alt loc excelent pentru a obține ajutor este Grupul Google MooTools. Majoritatea dezvoltatorilor și colaboratorilor MooTools Core au bloguri care abordează probleme de bază și avansate ale MooTools. Este dificil să nu găsiți ajutor!

Există o funcție sau o funcție specifică pe care doriți să o vedeți în MooTools în viitor?

Mulți! Există întotdeauna loc pentru îmbunătățirea fiecărui cadru. Aș dori să văd că MooTools încorporează un manager de dependență, astfel încât dezvoltatorii să poată derula scripturi pe baza nevoilor. De exemplu:

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

Codul de mai sus ar adăuga Drag.Move (și dependențele sale) dacă nu sunt deja incluse în pagină. Știu că Dojo și YUI au implementări în acest sens. Mi-ar plăcea ca MooTools să implementeze acest lucru. Fiind membru al echipei, nu pot aștepta să se întâmple, totuși. :) Aștept cu nerăbdare să colaborez cu unii dintre colegii mei pentru a stabili cum putem crea un astfel de sistem.

Notă: MooTools a lansat Depender, un instrument de creare a unui server care utilizează PHP sau Python: http://github.com/mootools/mootools-depender/

Aveți planuri de a crea propriul cadru Javascript sau preferați să vă concentrați asupra bibliotecilor existente?

Crearea propriului cadru JavaScript este pur și simplu nu este în carduri. Sunt înconjurat de dezvoltatori strălucitori din echipa MooTools și respectă munca făcută de echipele jQuery, Dojo și Ext. Mai bine îmi petrec timpul ajutând MooTools să se îmbunătățească decât să încerce să reinventeze roata.

Vorbind despre cadrele Javascript, care sunt gândurile dvs. generale privind impactul acestor cadre asupra dezvoltării web? Ce credeți că va avea viitorul pentru cadrele Javascript??

Cred că cadrele JavaScript sunt entitățile care împing browser-ele cel mai bine pentru a face mai bine, pentru a obține mai repede, pentru a merge mai departe. Faceți un pas înapoi și gândiți-vă la lucrurile pe care le facem acum cu ajutorul interfeței web pe care noi nu o facem acum un an sau doi. Toate acestea datorită JavaScript (și o mulțime de programatori foarte talentați).

Bucurați-vă de progresul incredibil al fiecărui cadru JavaScript. Suntem cu toții pe termen lung și fiecare zi deține posibilitatea unui salt gigantic înainte.

Pe măsură ce timpul trece și tehnologia se îmbunătățește, se pare că CSS a încercat să preia bucăți de funcționalități web pe care le-ar putea aștepta să le vadă din Javascript (adică animații / tranziții CSS). Care sunt gandurile tale despre folosirea CSS pentru a face lucrurile in mod normal rezervate pentru Javascript?

Cred că CSS și JavaScript fură uneori rolurile celorlalți. Dacă se poate face ceva (în mod fiabil) cu CSS, un dezvoltator ar trebui să utilizeze CSS. Problema este că CSS nu se mișcă suficient de repede (sau cel puțin într-un mod standardizat) și singura noastră opțiune este să hackem o soluție cu JavaScript. Culorile rotunjite și opacitatea sunt exemple excelente. Fiecare browser are propriile structuri de cod CSS pentru a obține funcționalitatea dorită, ceea ce face ca hacking-ul CSS să fie ineficient. Cadrele JavaScript iau toate preocupările browserului încrucișat și ne permite să codificăm ceva și să mergem mai departe. Mă îndoiesc că se va schimba în orice moment în curând.

Știți că trebuie să ne întrebăm, MooTools sau jQuery? De ce? Ce credeți că sunt unele dintre avantajele sau dezavantajele fiecărui cadru în raport cu celălalt?

Mă consider calificat la ambele cadre și prefer MooTools. De fapt, învățarea jQuery ma făcut să iubesc MooTools mai mult. Pentru fiecare dintre ei. MooTools se potrivește doar pentru mine. Sunt îndrăgostit de natura OOP a MooTools și această filozofie îmi permite să codific mai repede. De asemenea, găsesc codul MooTools mult mai ușor de citit datorită utilizării de getters, setters și cuvinte de acțiune folosite pentru numele de metode. MooTools îmi permite, de asemenea, să creez propria mea construcție, specializată în oricare proiect pe care lucrez, pentru a minimiza dimensiunea fișierului.

"De fapt, învățarea jQuery ma făcut să iubesc mai mult MooTools."

Dacă nu aprobați modificarea prototipului nativ al obiectului (MooTools și Prototype do), jQuery este cea mai bună alegere. Sintaxa jQuery este în general mai scurtă decât MooTools. jQuery este, de asemenea, cunoscut pentru a avea o curbă mai ușoară de învățare decât alte cadre. Îi felicit și pe jQuery pentru eforturile sale de organizare, promovare și coordonare - Rey Bango și echipa lui fac o treabă bună.

În cele din urmă, este important să știți că nu puteți pierde niciunul dintre cadre. Aș susține că orice dezvoltator JavaScript bun ar trebui să fie expert în ambele. Cel mai bun lucru este că pot lucra împreună în cadrul aceleiași pagini.

Pentru cei care nu știu, puteți explica unele dintre diferențele de bază dintre MooTools și jQuery?

Sigur. MooTools modifică prototipurile unor obiecte JavaScript (Strings, Functions, Arrays etc.) pentru a le face mai flexibile și mai puternice. MooTools implementează, de asemenea, un sistem solid OOP de clasă / moștenire care vă permite să extindeți cu ușurință clasele MooTools. MooTools este, de asemenea, foarte modular, astfel încât trebuie doar să descărcați piesele de care aveți nevoie.

jQuery împuternicește elementele din cadrul obiectului jQuery, de aceea vedeți frecvent „$ (Aceasta)“ - "acest" nu este pimped out fără $ (). Toate pluginurile sunt adăugate la funcția $. În esență jQuery este o funcție puternică ($) cu multe alte funcții coapte în ea (de exemplu, $, de exemplu). Sintaxa jQuery este în general mai scurtă decât sintaxa MooTools și aceleași metode sunt folosite pentru a obține și a seta stiluri, atribute etc..

Mă gândesc la asta în felul următor: MooTools ia obiecte native și le pune pe sterioduri. jQuery îi oferă o coajă de putere "$". Aaron Newton a scris o mare scriere despre diferența și similitudinea dintre cele două cadre: http://jqueryvsmootools.com. Îmi recomand foarte mult ca dezvoltatorii JavaScript să ia ceva timp pentru a citi postarea lui Aaron și pentru a încerca cele două cadre pentru ei înșiși.

Se pare că fiecare cadru Javascript vine cu o parte echitabilă de pluginuri și scripturi personalizate. Aveți toate pluginurile sau scripturile personalizate pe care doriți să le distribuiți?

Prea multe să conteze! Sunt cel mai mandru de pluginurile mele MooTools: inclusiv ScrollSpy, ContextMenu, Dotter, Evenimente jQuery, LazyLoad și ScrollSide. Puteți verifica toate pluginurile mele MooTools pe site-ul meu sau pe MooTools Forge. Am, de asemenea, destul de puține pluginuri jQuery disponibile pe site-ul meu. Demo-urile pentru pluginurile mele sunt disponibile la http://davidwalsh.name/demos.

Ce alte limbi de programare sau scripting jucați în aceste zile?

Unul dintre profesorii mei de colegiu a spus odată: "Orice dezvoltator care merită sărurile sale va învăța un limbaj de programare pe an" și, în general, încerc să respect acest principiu. Limbile mele principale sunt PHP / MySQL și HTML / CSS / JavaScript. În timp ce Git nu este o limbă, este sigur că poate fi o provocare, așa că mă concentrez în prezent. Sper să se scufunde în Ruby și Python în scurt timp. Din păcate, nu pare să existe suficient timp pentru a învăța tot ce vreau!

Ați fost implicat, împreună cu Chris Coyier, în dezvoltarea și producția popularului "site web". Care au fost unele dintre obstacolele sau dificultățile implicate în acest proiect? Care sunt unele dintre caracteristicile pe care esti cel mai mandru?

Band Website Template s-au adunat impreuna incredibil de mult datorita designului excelent al lui Chris si a CSS-ului. Crearea unui instalator solid a fost probabil cea mai dificilă parte a șablonului pentru mine. BWT necesită cunoștințe webdev, dar am vrut să facem instalarea simplă pentru cei mai mulți consumatori care nu au o experiență web. Odată ce programul de instalare a fost creat, restul a fost ușor. Sunt mândru de managerul Gig, la fel de simplu ca este. De asemenea, sunt mândru de cât de bine a fost primită și de lipsa de e-mailuri de asistență pe care le primim - cu siguranță am obținut ceva corect!

Script & Style, un link popular pentru dezvoltatorii web și designeri, a fost creat și de dvs. și de Chris Coyier. Voi doi colaborați des? Chris a menționat că a implicat o muncă de dezvoltare personalizată și dificilă de la dvs., ce lucra la S & S?

Chris și cu mine colaborăm destul de puțin. Uneori este vorba despre proiecte mari, cum ar fi Script & Style și Band Website Template, iar alteori se scrie mesaje blog paralele. Adesea voi scrie tutorialul MooTools care să reflecte tutorialul lui jQuery.

Script & Style a fost cu siguranta o provocare. Mi sa cerut sa hack unele dintre functiile implicite ale fluxurilor RSS WordPress. De asemenea, am adăugat recent capturi de ecran ale paginii web a articolului - care a necesitat codarea imaginilor pentru cache-ul imaginilor și codarea API pentru screenshot-uri. În ciuda provocărilor, site-ul a fost foarte recompensator și aștept cu nerăbdare să îl dezvolt.

Care este cea mai importantă întrebare pe care o cereți atunci când vă întâlniți întâi cu un client pentru a discuta un nou proiect de site?

Buget. Bugetul vă spune aproape tot ce trebuie să știți despre un client. Dacă vor respecta munca pe care o faceți. Dacă vor avea o întreținere ridicată. Dacă obiectivele lor cu site-ul Web vor fi în conformitate cu obiectivele dvs. pentru proiect. Ține minte că nu te aleg doar pe tine ... îi alegi și pe ei.

Considerați că este util să lucrați cu alți dezvoltatori talentați pe un proiect sau preferați să vă faceți munca singură?

O întrebare excelentă. În general depinde de proiect. Uneori este bine să păstrăm doar un bucătar în bucătărie, de obicei încerc să lucrez cu o bandă de dezvoltatori talentați. Cele mai multe minți unice, calificate pe care le puteți arunca la problemă, cu atât mai bine șansele dvs. de a depăși așteptările.

Care sunt câteva dintre site-urile dvs. preferate pentru a ține pasul cu tendințele dezvoltării web și cele mai bune practici?

În mod ciudat, am doar câteva site-uri pe care le-am urmărit pe lângă Nettuts +. Sunt întotdeauna sigură să văd ce se întâmplă cu Chris Coyier și să vă bucurați de lecturile postului A List Apart. În majoritatea cazurilor, am verificat posturile care intră în Script & Style. Caut inspirație prin aceste postări: modalități de îmbunătățire a codului sau de al porni într-un alt cadru JavaScript. De asemenea, îmi țin urechea pe strada de pe Twitter pentru a vedea ce articole sunt încântați de oameni.

. La capătul opus al spectrului, puteți să ne dați câteva exemple de trăsături pe care un mare dezvoltator le-ar putea avea?

Un mare dezvoltator este cineva care este un bun rezolvator de probleme si exploreaza fiecare cale pentru a atinge un scop. Un mare dezvoltator învață din greșelile sale din trecut și face tot posibilul pentru a evita repetarea acestora. În cele din urmă, un mare dezvoltator de web este o persoană care ține pasul cu toate tehnologiile și petrece timp suplimentar pentru a înțelege și a experimenta cu ei.

Ce fel de proiecte lucrați în aceste zile? Orice sneak peeks sau lucruri pe care le puteți împărtăși cu noi?

Pe lângă încercarea de a publica mai multe mesaje MooTools și jQuery pe blogul meu, am câteva proiecte secundare. Un proiect se numește OPTMZR, care este un site web care vă va oferi numeroase instrumente pentru a vă optimiza JavaScript, CSS, HTML, imagini și multe altele. Celălalt proiect la care lucram este un site web pentru nunta mea viitoare. Voi adăuga câteva tehnici dulci MooTools pe care le voi face blog după ce site-ul este terminat.

Din moment ce faceți atât de mult scris, orice planuri ale unei cărți scrisă de David Walsh în viitor?

Mi sa cerut să scriu cărți MooTools în trecut, dar tot ce am auzit este că eo tona de lucru cu foarte puțină întoarcere. Mi-ar plăcea să văd numele meu în imprimat, dar simt că timpul meu este cel mai bine servit blogging zilnic și ajutând oamenii de pe IRC. Sperăm că într-o zi voi putea publica cartea de blog David Walsh, care va cuprinde toate postările mele de-a lungul anilor.

Aveți site-uri web sau proiecte pe care doriți să le conectați fără rușine la peste 50.000 de abonați?

Chiar îmi recomand oamenilor să-mi verific blog-ul - am multe tutoriale de jQuery și MooTools și demo-uri care vă vor oferi o mai bună înțelegere a celor două cadre. Simți-mă liber să mă urmezi pe Twitter: @davidwalshblog. De asemenea, vă recomandăm să vizitați Script & Style - Chris Coyier și eu moderhez și aprobez câteva articole notabile HTML / Javascript / CSS scrise de experți din industrie. Și nu uitați să vizitați MooTools Forge - sute de pluginuri MooTools de calitate de la designeri și dezvoltatori ca tine! MooTools FTW!

Scrie un tutorial Plus

Știați că puteți câștiga până la 600 USD pentru a scrie un tutorial PLUS și / sau pentru noi? Căutăm tutoriale detaliate și bine scrise despre HTML, CSS, PHP și JavaScript. Dacă sunteți în măsură, contactați Jeffrey la [email protected].

Rețineți că o compensație reală va depinde de calitatea tutorialului final și a scenariului.

  • Urmați-ne pe Twitter sau abonați la Nettuts + RSS Feed pentru cele mai bune tutoriale de dezvoltare web de pe web.
Cod