Smashing Podcast Episodio 18 con Mina Markham: come posso imparare a reagire?
Pubblicato: 2022-03-10In questo episodio dello Smashing Podcast, stiamo parlando dell'apprendimento di React. Com'è lavorare con React e come possono iniziare gli sviluppatori esperti? Ho parlato con Mina Markham per scoprirlo.
Mostra note
- Mina Markham su Twitter
- Il sito personale di Mina
Aggiornamento settimanale
- Dai siti statici alle app JAMstack per utenti finali con FaunaDB di Bryan Robinson
- Il tuo sito web sta stressando i visitatori? di Susanna Scacca
- Mirage JS Deep Dive: Capire tempismo, risposta e passthrough (parte 3) di Kelvin Omereshone
- Creazione di un'applicazione Web per il riconoscimento facciale con React di Adeneye David Abiodun
- Internazionalizzazione in Vue con il plug-in Vue I18n di Timi Omoyeni
Trascrizione
Drew McLellan: È un architetto front-end, oratore e organizzatrice di conferenze e amante dei sistemi di design. Il suo lavoro sulla libreria dei brevetti Pantsuit per la campagna presidenziale di Hillary Clinton per l'America ha segnato uno spartiacque per i sistemi di progettazione all'interno del settore ed è apparso in pubblicazioni come Wired, Fast Company e Communication Arts. Come molti di noi, scrive codice per vivere, attualmente come ingegnere senior presso Slack. Quindi sappiamo che è una sviluppatrice di talento e lungimirante, ma sapevi che una volta è stata scambiata per Patrick Swayze? Miei formidabili amici, vi prego di dare il benvenuto a Mina Markham. Ciao Mina. Come stai?
Mina Markham: Sto distruggendo.
Drew: Buono a sapersi. Ora, a volte nello Smashing Podcast, parliamo con le persone dell'argomento per cui sono più conosciute. E a volte è divertente parlare di qualcosa di un po' tangenziale. Ora, potrei parlare con te tutto il giorno di librerie di modelli, sistemi di progettazione, il lavoro straordinario che hai svolto in quella particolare area, e potrei parlarti di argomenti di cui forse hai parlato, eventi, come l'Evento A parte, cose come la direzione artistica. E potremmo ovviamente parlare di CSS finché le mucche non tornano a casa. Ma hai twittato qualche giorno fa e mi sono reso conto che in realtà siamo entrambi sulla stessa barca in quanto siamo entrambi esperti ingegneri del front-end e abbiamo entrambi iniziato a lavorare di recente con React. Quindi, prima di parlare di React, dove saresti arrivato fino a questo punto? Hai lavorato con altre librerie e framework per lo sviluppo di JavaScript?
Mina: No, in realtà ho fatto principalmente JavaScript vanigliato per un po'. E prima, ovviamente, sono entrato in JavaScript. Lascia che lo riformuli. Ho iniziato a lavorare con lo script Java usando jQuery perché per me aveva più senso. Era qualcosa che era molto facile per me analizzare per capire cosa stava succedendo. E poi da lì sono tornato indietro a fare solo vaniglia, JavaScript semplice, ESX e non ero davvero entrato molto nelle guerre del framework. Non avevo, come se non avessi un preferito. Non avevo cani nella lotta. Ero tipo, "Per te, Reagisci, qualunque cosa. Non mi interessa davvero.” Ma i tempi cambiano.
Drew: E in questo modo di lavorare con JavaScript vanilla, perché anche io ho fatto molto di questo. Ho lavorato con vari framework. Ho fatto molto con jQuery in passato. Ho lavorato con YUI, Yahoo User Interface Library. Hai sentito molti dei punti deboli che qualcosa come l'architettura di React cerca di affrontare?
Mina: Non credo di aver mai avuto. Ho passato la maggior parte della mia carriera a creare siti Web rispetto ad app Web e cose del genere. Quindi tutto ciò che ho fatto è stato piuttosto statico fino a un certo punto. Quindi non ho mai avuto a che fare con la gestione dello stato, cose del genere. Quindi i punti dolenti che React tenta di risolvere non li avevo mai applicati al tipo di lavoro che facevo.
Drew: In generale, qual è il tipo di natura dei progetti che hai realizzato finora con React?
Mina: In realtà è stato solo l'unico progetto su cui sto attualmente lavorando e non posso rivelare troppi dettagli perché la società pubblica e tutta quella roba buona.
Drew: Certo.
Mina: Ma essenzialmente quello che sto cercando di fare è usare React per, è un tipo di prodotto molto interattivo in cui ho bisogno che le persone siano in grado di inserire e salvare i dati in un certo stato e quindi manipolarli e generare qualcos'altro con detti dati. E questo è solo qualcosa che non è una semplice manipolazione DOM a quel punto. È davvero molto più complesso, la gestione front-end dei dati e la gestione dello stato di detti dati. Quindi non c'era davvero altra alternativa che usare una sorta di libreria che tenti di risolvere quel problema. Sapevo che non sarei stato in grado di andare oltre con un semplice JavaScript. Ho pensato forse di gestire qualcosa sul lato server, ma di nuovo, a causa della natura molto interattiva di ciò con cui sto lavorando, deve essere nel client. E quindi utilizziamo già React at Slack per varie altre cose. E quindi ho pensato: "Ok, dovremmo solo andare avanti e adottare la stessa cosa che stanno usando il resto della società madre e andare da lì".
Drew: Una delle cose che mi sembra sempre un punto dolente con le persone che raccolgono React è fare i conti con la catena degli attrezzi necessaria per far funzionare le cose, Webpack è un ovvio elefante nella stanza. Hai dovuto fare molta configurazione della catena degli strumenti o come me se avessi il lusso dei compagni di squadra che lo facevano per te?
Mina: Oh, adoro il team dell'infrastruttura di Slack per i dati. Il team dell'infrastruttura front-end di Slack ha gestito tutto questo. Non dovevo pensarci. È stato fantastico. Perché ho provato a imparare React in passato. Di solito il modo in cui imparo meglio è lavorare e implementare effettivamente le cose. E usiamo React per costruire molto hillaryclinton.com nel 2016. Quindi non è che non abbia mai lavorato con persone che lo usano. È solo che il mio lavoro non ha mai avuto bisogno di me per essere coinvolto. Ma quella base di codice era molto complessa e molto sofisticata, e stavano succedendo così tante cose che c'è una tale barriera all'ingresso per provare a imparare qualcosa lì dentro se non sapessi già come funzionano React e Redux e tutto il resto, cosa che io no. Quindi non ero molto efficace nell'apprendere in quell'ambiente.
Mina: Fortunatamente, qui ho persone a cui piace portare via un po' di più le parti complesse di esso. Non devo assolutamente preoccuparmi della configurazione di Webpack. È stato impostato. È stato provato e testato e pronto per l'uso. Sono su una barca simile in cui utilizziamo anche Redux oltre a React, che non mi ero reso conto fossero due cose diverse. Non sapevo quale parte gestisse quale. Cadendo in una base di codice del genere, è stato un po' disorientante perché non mi rendevo conto che erano tutti la stessa cosa. Ho avuto persone che erano sviluppatori esperti di React che mi dicevano: "Oh, stiamo usando anche Redux, il che rende un po' più difficile per te imparare davvero cosa può fare React se inizi da zero". E non ho mai saputo cosa intendessero con questo perché non sapevo di cosa stessero parlando.
Mina: Per rispondere alla tua domanda originale, ho ancora un po' più di barriera all'ingresso, perché non si tratta solo di imparare React. Devo imparare React e anche come usare il negozio Redux. Quindi queste due cose allo stesso tempo possono essere un po' troppo.
Drew: Sì, ho trovato esattamente la stessa cosa che entra in una base di codice esistente del mio primo progetto React che utilizza Redux. E penso che, come è la natura di qualsiasi di questo tipo di tecnologie quando sono giovani, iterano molto rapidamente, e qual è la migliore pratica a un certo punto, 6 mesi dopo è andata avanti e c'è un modo diverso di fare le cose. E quando hai una base di codice che copre molti anni, a volte puoi avere diversi stili di implementazione delle cose. Non sempre mantiene la sincronizzazione. E ovviamente, se stai seguendo un tutorial o qualsiasi altra cosa da imparare, stai leggendo libri, stai usando risorse, saranno nella versione più moderna di come fare le cose. E questo non è necessariamente inutile per ciò che vedi quando guardi un prodotto maturo esistente. È qualcosa che avevi sperimentato o sei riuscito a mantenere la tua base di codice davvero aggiornata?
Mina: Penso che sia qualcosa che ho sicuramente sperimentato. Quando ho cercato di imparare a fare React da solo, ho guardato vari tutorial e cose del genere. E ho notato, o almeno le persone che hanno lavorato con me mi hanno detto che alcune delle cose che facciamo o sono in qualche modo anti-pattern o non proprio come funzionano le cose ora, perché questa base di codice è leggermente, beh maturo noi parente, ma ha qualche anno. E quindi ci sono alcuni modi in cui credo siano più facili da fare rispetto al modo in cui li stiamo facendo attualmente perché questo è stato scritto anni fa. Quindi è un po' un tapis roulant cercare di stare al passo con i tempi attuali e assicurarsi di voler fare le cose nel modo migliore, ma anche non voglio rompere una base di codice consolidata perché voglio giocare con le cose.
Drew: Ovviamente, una delle cose con React che le persone come te e io ci stiamo arrivando, può sembrare un po' stridente come tutta questa faccenda con JSX. Stai usando JSX nel tuo progetto?
Mina: Lo siamo. Sto usando JSX.
Drew: Hai fatto pace con quello?
Mina: Sono caduto come un piccolo pezzo di me muore ogni volta che apro uno di quei file. È ancora un sacrilegio mettere il mio HTML nel file JavaScript. So che è una specie di rivoluzionario e il punto centrale, ma mi sembra solo di scrivere il mio markup in un file JavaScript. Ho fatto pace con questo, ma ogni volta che lo faccio, sono tipo, "..." Le preoccupazioni per la separazione, è una cosa. Lo vorrei indietro, per favore.
Drew: È un punto valido, vero? Il mio background quando stavo iniziando a lavorare più seriamente con JavaScript, e questo è stato probabilmente quando ero tornato in Yahoo, le cose erano molto basate sul modello delle pagine HTML renderizzate dal server e quindi adottando un approccio di miglioramento progressivo, sovrapponendo JavaScript in cima per migliorare l'interfaccia. E se lo stato di qualcosa nell'interfaccia doveva cambiare, il tuo codice doveva conoscere tutte le parti dell'interfaccia che doveva aggiornare, il che ovviamente ti porta a un approccio strettamente accoppiato con queste grandi viste monolitiche in cui il codice che scrivi ha bisogno di sapere tutto l'altro codice che lo circonda. E immagino che non si presti davvero a un approccio a componenti che avresti quando lavori con una libreria di modelli o un sistema di progettazione, che è più adatto alla tua area di particolare competenza. Immagino che React si presti di più a quell'approccio, vero?
Mina: Penso di sì, specialmente con la possibilità di accoppiare il CSS molto specifico a un componente JSX o React. E così in questo modo è molto più facile separare o prendere solo ciò di cui hai bisogno per la libreria e lasciare il resto, mentre una libreria di modelli o un sistema di progettazione che tenta di fare qualcosa di più monolitico con un solo file CSS di grande stile o qualcosa del genere , lo rende molto difficile. Devi prenderlo tutto o niente. Quindi apprezzo il fatto che React ci permetta di fare un modo di sviluppo più individualizzato e più componentizzato, anche se vorrei ancora che ci fosse un modo per me di separare veramente il mio livello di presentazione e il mio livello di contenuto dal mio livello di interattività. Ma forse sono solo io che sono un po' vecchia scuola in questo senso.
Drew: Sento decisamente il dolore lì. L'idea è che, vieni e correggimi se sbaglio, la mia comprensione è che invece di separare le tecnologie, CSS, JavaScript e HTML, sta separando la funzionalità. Quindi tutto ciò che è un componente esiste tutto insieme-
Mina: Sì.
Drew: ... che credo sia utile se quel componente non è più necessario. Puoi semplicemente eliminarlo ed è sparito e non lascia un'impronta intorno alla tua app. Tuttavia, non è sempre il caso dei CSS. Come stai lavorando con i CSS con React? Hai guardato cose come componenti in stile o qualcosa del genere?
Mina: No, non l'abbiamo fatto. Ho sentito parlare di componenti in stile, ma non li ho mai studiati a fondo per essere assolutamente onesti. Quindi il modo in cui stiamo lavorando con CSS con React è scrivere Less, e abbiamo solo un file Less allegato a ogni singolo componente che viene importato in quel componente. E poi viene legato tramite Webpack e servito al cliente.
Drew: Stai usando un sistema come BEM o qualcosa del genere per trasformare lo spazio dei nomi?
Mina: Sì. Stiamo usando BEM per lo spazio dei nomi, anche se l'aderenza ad esso varia in modo diverso a seconda di chi scrive cosa. Ma proviamo a utilizzare un modello di spaziatura dei nomi BEM per rendere un po' più chiaro quale sia lo scopo di ogni singola classe e componente.
Drew: E sembra funzionare con successo per te?
Mina: Penso di sì. A volte ha lo stesso vecchio problema di non so come dare un nome a qualcosa. Dopo un po' le cose quotidiane sono sempre e saranno sempre una cosa difficile per il maestro. Quindi questo è l'unico problema che ho con cui occasionalmente non ho idea di come dovrei chiamare un componente particolare.
Drew: Sicuramente. È una battaglia continua, vero, come dare un nome alle cose?
Mina: Sì.
Drew: Quando lavoro su una nuova funzionalità o qualcosa del genere finisco sempre per dare a un componente, a tutte le classi ea tutto il nome che la funzionalità ha al momento. E poi, quando arrivi al lancio, è stato ribattezzato qualcos'altro. Quindi hai riferimenti al vecchio nome nel codice e l'interfaccia ha il nuovo nome. E …
Mina: Cerco di nominare sempre le cose in base alla funzione o allo scopo rispetto a cose che sono un po' più effimere, perché è meno probabile che lo scopo effettivo di questo componente cambi. Ho dimenticato di dirlo, ma oltre a utilizzare BEM, immagino che usiamo BEMIT se ne hai familiarità. È fondamentalmente l'ITCSS più BEM, entrambi creati da Harry Roberts. Quindi uso la notazione ungherese per denotare se qualcosa è o meno un componente, rispetto a un oggetto di layout, rispetto a un modello più ampio composto da più componenti. E poi da lì usiamo la convenzione BEM per indicare come l'elemento blocco e tutto il resto.
Drew: E hai dovuto fare molto refactoring ed eliminare componenti e cose nella tua base di codice e hai dovuto affrontare il problema del fatto che i CSS venissero lasciati indietro?
Mina: Sì. Quindi la parte non React del mio lavoro, di mantenere slack.com è solo un mucchio di file Less che vengono compilati per CSS. E ti garantisco che c'è molto codice zombi lì dentro, perché abbiamo sicuramente iterato molto al di sopra delle cose nel tempo in cui sono stato lì. E non abbiamo sempre il tempo di tornare indietro e fare la pulizia rispetto a quando riprogettiamo una pagina o qualcosa del genere. Quindi è in ritardo per un audit, lo dirò.
Drew: Questo è qualcosa che abbiamo appena esaminato nel nostro progetto React, guardando come ci avviciniamo ai CSS. Al momento, abbiamo alcuni grandi file CSS globali per l'intera app e otteniamo questa situazione in cui la dimensione del nostro pacchetto sta solo crescendo, crescendo, crescendo e non si riduce mai, anche se le cose si fanno RIMOSSO. Quindi abbiamo esaminato cose come i componenti stilizzati, anche Tailwind è un'altra opzione che stiamo seriamente considerando. Hai guardato molto al vento in coda?
Mina: Non l'ho guardato molto. Sono stato curioso al riguardo, ma ancora una volta, non ho mai avuto il tempo di approfondire per vedere se è qualcosa che voglio provare a portare nella nostra base di codice.
Drew: In realtà sono rimasto piuttosto sorpreso, perché come te, sono un po' vecchio stile su come fare queste cose. Mi piace una bella separazione delle preoccupazioni. E mi piace scrivere i miei CSS in CSS, e ovviamente l'approccio con Tailwind è che hai tutti questi nomi di classi, che sembrano un po' come gli stili inline che stai applicando. E se ti sembra sporco.
Mina: Sì.
Drew: E mi sono offerto volontario all'interno del team, ognuno di noi ha preso una tecnologia per indagare se fosse adatto ai nostri problemi, e mi sono offerto volontario per guardare Tailwind perché ero assolutamente certo che l'avrei odiato.
Mina: No, no.
Drew: Ma si scopre che in realtà penso che risolva molti problemi. Sono rimasto abbastanza colpito.
Mina: Sì. Sono arrivato a un modo di pensare simile, perché in passato preferirei di gran lunga che una classe comprendesse tutti gli stili di cui avevo bisogno per un particolare componente e non facesse una classe per proprietà, come credo che Tailwind faccia o lingue simili. Per ragioni simili, mi è sembrato molto simile a: "Beh, a questo punto sto solo eseguendo CSS inline. Perché dovrei farlo?" Ma mentre sviluppavo sempre di più, all'interno del nostro sistema di progettazione Slack, ho creato un sacco di quelle che chiamo classi di utilità che fanno cose come aggiungere un po' di margine con un pattern. Ho notato che sempre di più sto usando quelle classi oltre alle classi componenti. Quindi sono tipo "Ok, forse dovrei rivisitare tutto questo per fare un CSS come una dichiarazione alla volta". Non so se andrei così lontano, ma vale sicuramente la pena considerare.
Drew: L'informatica sembra ribaltarsi in termini di tendenze tra thin client e soluzioni di fat client. Abbiamo iniziato con i mainframe con i terminali, e poi l'era dei PC con Windows e Office e tutti questi tipi di grandi applicazioni. E stavano tutti diventando molto lenti, e poi è arrivato il web, e quello era solo un browser e tutto il lavoro veniva svolto sul server. Ed è stato di nuovo tutto veloce e scattante. E ora siamo tornati a rimettere tutto quel lavoro nel browser con tutto ciò che veniva fatto con JavaScript, cose come React e l'approccio JAMstack dove siamo tornati a una sorta di client grasso. A volte mi preoccupo che stiamo chiedendo troppo al browser. È un errore? Stiamo chiedendo troppo al browser che prova a fare tutte queste cose in React?
Mina: Voglio dire di sì con l'avvertenza che, ancora una volta, la mia esperienza è molto contenuta in siti Web per lo più statici. Non faccio molto sviluppo del prodotto. Quindi forse in quel regno, questo ha più senso. Ma dal mio punto di vista, mi sembra che usiamo un sacco di volte un'accetta quando abbiamo solo bisogno di un coltello da burro. Non so perché dobbiamo mettere tutto questo nel browser, mettere così tanto lavoro e tanta pressione sul cliente. Sento che potremmo farlo in modo molto più semplice. Una delle cose che mi ha sempre reso un po' titubante nell'usare React, o dico titubante, ma quello che intendo quando mi ha fatto arrabbiare visceralmente e mi sono opposto attivamente, era quando andavo su un sito Web e letteralmente nulla rendeva perché lì c'era un errore o qualcosa del genere, tipo "Davvero? L'intera pagina è interrotta perché una funzione si è interrotta?"
Mina: Mi ha infastidito il fatto che molte volte fosse un approccio tutto o niente. Uno dei discorsi che ho tenuto all'AEA in passato e in altri luoghi in passato riguardava come includere il miglioramento progressivo e non solo il tuo sviluppo, ma anche la direzione artistica e il design dei siti. E vorrei sottolineare specificamente esempi di siti Web che non hanno apportato miglioramenti progressivi o alcun tipo di degradazione aggraziata. Era come se avessi JavaScript in esecuzione nel browser o non ottenessi assolutamente nulla. E sarebbe come un semplice sito che rappresenta informazioni sulla storia del web design, che è stato uno dei siti di cui si è parlato, la storia del web design dal 1990 ad oggi. Era un bellissimo sito web con molte linee temporali, animazioni di cose. Ma avrebbe anche potuto essere reso staticamente con un semplice elenco. Ci sono stati dei passaggi tra il non mostrare nulla e il mostrare quell'esperienza meravigliosamente migliorata che penso sia andata persa a causa del modo in cui ci stiamo avvicinando allo sviluppo web moderno ora.
Drew: Quindi diresti che ci sono assolutamente alcune categorie di progetti che si adattano a una soluzione come React e alcuni in cui non dovrebbero essere usati e dovresti usare metodi più tradizionali?
Mina: Penso che se il tuo sito in particolare è per lo più statico, stava solo fornendo informazioni, immagino di non capire perché hai bisogno di un progetto come React per rendere qualcosa che non ha molta interazione oltre alla semplice manipolazione DOM . Immagino di non vedere quale vantaggio tu ne tragga. Ancora una volta, potrei non lavorare sui progetti appropriati. Potrei non aver solo visto o trovato quel caso d'uso, ma ho difficoltà a vedere se è solo un sito principalmente statico, che presenta contenuti, non molta interazione, non molta interazione oltre al DOM manipolato e alle animazioni. Non vedo come avere una libreria React ti aiuti a raggiungere questo obiettivo.
Drew: È interessante perché non sono male a parlarne perché in realtà non l'ho usato, ma vedo molti progetti Gatsby e Gatsby è un generatore di siti statici che utilizza un front-end React al suo interno. E vedo tutti gli esempi dei temi e delle cose che hanno a disposizione sono tutti siti basati sui contenuti, o blog, e un sito di ricette, e un portfolio, e questo genere di cose. E c'è qualcosa che penso in realtà che questo non sia necessariamente adatto a qualcosa come React. Perché questo non viene reso staticamente e quindi migliorato progressivamente?
Mina: Sì.
Drew: Non è un software.
Mina: Sì. In realtà non ho nemmeno usato Gatsby. Ne ho sentito parlare molto bene, ma questo è probabilmente uno degli esempi in cui mi viene in mente di pensare: “Okay, immagino di non vedere perché quello strumento è necessario per fare quel particolare lavoro. " Ancora una volta, non lo so. Forse è solo perché più persone si sentono a proprio agio a scrivere in React quando scrivono qualcosa di nuovo, e sta solo fornendo uno strumento che incontra le persone dove si trovano. Ho sentito grandi cose sui generatori di siti statici che usano React per le persone che li hanno usati e li adorano, ma non è un caso d'uso in cui sarei stato immediatamente tipo "Oh, ha senso".
Drew: Sembra che ci sia sempre stata questa battaglia tra ciò che chiameremmo un sito Web e ciò che potresti chiamare un'app Web. E il divario tra i due sembra diventare sempre più ampio, sempre più ampio, mentre un approccio di miglioramento progressivo cerca di colmare il divario prendendo qualcosa di statico e aggiungendo JavaScript e aggiungendo interattività. Sembra che cose come React siano ideali per il software che stai eseguendo nel browser. Saresti d'accordo con quello?
Mina: Sono decisamente d'accordo con questo perché sembra che sia stato costruito per quel tipo di ambiente; è stato creato per l'esecuzione di software. È stato creato da Facebook per Facebook. Quindi è stato costruito per un prodotto. È stato creato per eseguire qualsiasi cosa tu chiami un'app Web nel browser e non necessariamente per il tipo di lavoro che, come ho detto, sono abituato a fare. Quindi penso che in questi scenari, abbia sicuramente molto senso usarlo se stai costruendo un software più complesso e sofisticato che dovrebbe essere eseguito all'interno di un browser. Ma se stai costruendo un sito di marketing o altro, immagino che farei ancora fatica a capire perché sarà necessario lì.
Drew: Quindi stiamo dando alle persone il permesso di costruire comunque siti web decenti con rendering statico?
Mina: Mi piacerebbe vedere di più che accada. Mi sento come se si fosse perso e in qualche modo avesse perso il suo, se mai fosse stato bello o altro. Sento che abbiamo perso quella parte dello sviluppo web. È così divertente: tu ed io abbiamo detto che siamo una specie di vecchia scuola, e ne rido perché in realtà mi occupo di sviluppo web da, quanti, sei anni ormai? Come sono la vecchia scuola? Non è passato molto tempo per me. Eppure in qualche modo faccio parte della vecchia guardia a cui non piacciono le cose nuove e luccicanti. Non capisco.
Drew: Quindi in effetti React è esistito per tutto il tempo in cui sei stato uno sviluppatore web.
Mina: Forse ho solo un'anima vecchia. Non lo so.
Drew: Penso che probabilmente sia così. Non ho esaminato personalmente, ci sono approcci resi dal lato del servizio che puoi adottare con le app React. Ne hai sperimentato qualcuno?
Mina: Non li ho sperimentati. Li ho esaminati brevemente per il progetto su cui sto attualmente lavorando, perché sento che ci sono parti dell'operazione che funzionerebbero meglio su un server rispetto ai client. Ma penso che a causa delle mie conoscenze limitate e del fatto che la base di codice è un po' più complicata di quanto io possa capire, non sono stato in grado di capire come far funzionare quella parte. Mi piacerebbe capirlo alla fine, ma ho passato una giornata a scavare. Ero tipo "Sai una cosa? Non sto scherzando, devo esserlo. Quindi mi limiterò a fare marcia indietro e prendere una strada diversa".
Drew: Sì. Penso che ci siamo stati tutti.
Mina: Sì. Ho percorso un sentiero. Ero tipo, "Oh, questo è oscuro e spaventoso. Facciamo retromarcia. Facciamo retromarcia".
Drew: Allontanati dal codice.
Mina: Sì.
Drew: Quindi finora sei stato molto diplomatico ed educato riguardo a React. Sento che c'è un po' di tensione che ribolle un po' sotto la superficie. Dai. Raccontaci cosa provi veramente.
Mina: Sono stata educata e diplomatica, soprattutto perché la base di fan di Reacts può essere un po' cattiva a volte, e preferirei che non venissero per me. Quindi, per favore, React è fantastico. È meraviglioso. Usalo per quello per cui vuoi usarlo. Scherzo, ma anche quel tweet che hai menzionato all'inizio di questo podcast in cui penso che quello che hai detto sia che non lo odio. Non lo amo, ma non lo odio. Anche quella affermazione, ho avuto persone, non c'era vetriolo, ma era più che loro erano pronti a saltare in difesa e dire: "Beh, lo adoro perché X, Y, Z". Sono tipo, “Non ho detto che fosse brutto. Ho appena detto che sono meh per l'intera faccenda. Ma a quanto pare essere meh non va bene. Devo amarlo.
Mina: Quindi è per questo che probabilmente sono stata un po' più diplomatica di quanto sarei normalmente, solo perché non voglio che la gente pensi che sto parlando male, perché non lo sono. Ha un posto in più sviluppo web. Serve una funzione. Fa bene il suo lavoro. La gente lo adora. Semplicemente non è uno strumento che abbia mai avuto o voluto usare fino ad ora.
Drew: Sì. Le cose possono diventare molto tribali, vero, con le persone che sentono di dover prendere una parte o l'altra, e tu sei assolutamente per qualcosa o assolutamente contrario a qualcosa? E non sono sicuro che serva a un buon scopo, e non penso che ci faccia davvero avanzare come industria e come comunità per farlo.
Mina: Sì. È davvero strano. È affascinante da guardare solo da un punto di vista sociologico, ma spesso è davvero strano da osservare. È come se non mi fosse permesso essere, come ho detto, neutrale su certe cose. Devo avere un'opinione forte, che è che non penso sano. Qual è il termine "Opinioni forti, detenute in modo approssimativo?" Questo è il modo in cui mi occupo delle cose. Mi sento fortemente per certe cose, ma non è che tu non possa farmi cambiare idea. Laddove mi sento come alcune persone, la loro identità viene avvolta in alcuni aspetti di essa, che se non sei per qualunque cosa hanno scelto di identificarsi, è un affronto personale contro solo, non mi interessa questo particolare argomento, o strumento, o altro.
Drew: Sì. Non so se sia aggravato dal fatto che tendiamo tutti a specializzarci molto di più in parti particolari dello stack. E so che ci sono persone che sono sviluppatori React. Si definirebbero uno sviluppatore React perché è quello in cui lavorano. E non scriverebbero necessariamente uno script Java vanilla o non userebbero Vue o altro. React è il loro mondo. Quindi immagino che sembri quasi un attacco alla loro intera carriera dire: "Non mi piace React". Bene, sono davvero coinvolti nel farti piacere React o qualunque sia la tecnologia.
Mina: Ammetto di essere una di quelle persone in passato. In realtà, probabilmente si trattava principalmente di SASS, credo. Facevo molto parte del team di SASS come preprocessore e tutti gli altri preprocessori sono spazzatura. Non voglio parlare di loro. Non voglio trattare con loro. E ho capito che era un modo molto ristretto di guardare le cose. Utilizzare lo strumento appropriato per il lavoro. Qualunque cosa ti renda più produttivo, questo è lo strumento giusto. Non importa cosa sia.
Drew: Ci sono tecnologie con cui lavoriamo che non hanno quel tipo di atmosfera tribale? C'è qualcosa che le persone sono felici di usare o non usano? Non riesco a pensare a niente.
Mina: Wow. Nessuno ha opinioni sul markup, in realtà.
Disegnato: No.
Mina: Sento che nessuno ha opinioni sull'HTML reale e solo sul markup, proprio come "È lì". Lo usano. Ma le persone hanno opinioni forti sui CSS e su come siano terribili o meravigliosi, e le guerre del preprocessore che in realtà non accadono più molto, e poi, naturalmente, tutto il tribalismo all'interno delle varie librerie JavaScript.
Drew: Quindi diresti che il tuo viaggio finora con React è ancora solo: “È uno strumento. Fa il suo dovere?"
Mina: È passato da una curiosità a un'antipatia attiva e viscerale a causa di quanto fosse prevalente e di come non fosse necessario, pensavo che quella prevalenza fosse per me. Ora sono con meh, il che di nuovo non significa che lo odio. Significa solo...
Drew: Penso che sia un buon posto dove stare. Penso che probabilmente siamo tutti più forti come tecnologi se comprendiamo il valore di una particolare tecnologia per il suo scopo. Possiamo valutare cosa è buono per quale circostanza e scegliere lo strumento giusto per il lavoro.
Mina: Sì. Ed è a questo punto che sono arrivato a questo punto della mia carriera in cui non mi sono davvero investito in nessun linguaggio particolare, o tecnologia o altro, perché è come "Qualunque strumento sia più appropriato per quello che sei cercando di fare, quindi usa quello. Ho imparato che c'è un posto per ogni cosa; c'è un tempo e un luogo per fare tutto. E fino a poco tempo fa, non c'era tempo o luogo reale per me per usare questo bibliotecario di React, e ora c'è.
Drew: Penso che sia un buon posto dove stare. Quindi ho imparato tutto su React ultimamente come fai tu nel lavoro diurno. C'è qualcos'altro di cui stai imparando ultimamente?
Mina: In realtà ho imparato ironicamente, che è un altro linguaggio che ha avuto origine su Facebook, ho sviluppato molto Hack, principalmente perché è quello che uso in Slack, nel mio lavoro quotidiano. Learning Hack mi ha aperto la strada per sentirmi più a mio agio nell'usare React perché seguono schemi molto simili, tranne che uno è lato server e l'altro no. Quindi, insieme a solo in generale, ho imparato di più sul back-end e su come funziona per vari motivi. E negli ultimi due anni mi sono allungato e sono uscito sempre di più dalla mia zona a mio agio. Progettare sistemi, biblioteche, questo è davvero il mio mondo, e mi sento molto bene e a mio agio in quel mondo. Ma ne sto uscendo e sto facendo molta più logica lato server, sviluppo di API e modellazione dei dati e tutto il resto. Ho fatto molto anche su questo nell'ultimo anno.
Drew: Trovo che più comprendo l'intero stack di cose di back-end in cose di front-end, ognuna aiuta la mia conoscenza dell'altra. Trovo di scrivere un codice front-end migliore avendo scritto codice back-end e comprendendo-
Mina: Sì. Penso di sentirmi allo stesso modo. Ora che ho un'idea migliore, come abbiamo detto, dell'intero stack di come arriviamo dai dati al cliente finale. Trovo che sto pensando all'intera pipeline, indipendentemente dalla parte in cui sto effettivamente lavorando. Sto pensando a quale sia il modo migliore per strutturare questa API in modo che quando arrivo al modello, non devo manipolare così tanto i dati che ricevo da quella parte. Sicuramente mi ha reso nel complesso un ingegnere migliore, ne ho voglia
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she's @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.