Technologie Gadgets, SEO Tipps, Geld Verdienen mit WEB!

Stefan Zweifel sul suo viaggio come sviluppatore di Laravel…

Stefan Zweifel sul suo viaggio come sviluppatore di Laravel...

Da Zurigo, in Svizzera, DreamHost è in conversazione con lo sviluppatore di Laravel Stefan Zweifel. Stefan è uno sviluppatore web presso un’agenzia/società di software a Zurigo, Svizzera. avendo iniziato la sua carriera da programmatore sperimentando il codice mentre giocava a World of Warcraft, Stefan Zweifel è ora uno sviluppatore influente nel settore laravel. Stefan ha trascorso molto tempo lavorando su strumenti interni per aiutare il team di marketing e vendite, correggere bug o aggiungere funzionalità alla loro piattaforma di e-commerce, sviluppare widget JavaScript che i nostri clienti possono Utilizzare o progettare e codificare pagine di destinazione delle campagne per i clienti.

Shahzeb: Ciao Stefan, grazie per aver dedicato del tempo per questa intervista. Prima di iniziare, puoi raccontarci qualcosa di te in modo che i nostri lettori possano conoscerti meglio?

Stefano: Grazie per avermi ospitato, Shahzeb. Sono Stefano. Vivo a Zurigo, in Svizzera, dove lavoro anche per una piccola agenzia/azienda di software come sviluppatore full stack. Progetto e realizzo semplici siti Web HTML, interfacce utente e widget più o meno complessi con Vue.js e aiuto a creare e mantenere backend monolitico servizi scritti in PHP con Laravel. (Non da solo, ovviamente. Ho un ottimo collega che completa il team di sviluppo.)

Scrivo codice anche nel tempo libero. Negli ultimi anni ho pubblicato un paio di interessanti progetti collaterali.

laravel-stats è una CLI che ti fornisce un riepilogo delle dimensioni e della struttura della tua applicazione Laravel.

screenly, che è un’applicazione web, consente agli utenti di creare screenshot, PDF e altro da siti web o dal proprio HTML.

O cose più di basso livello come le mie azioni GitHub “git-auto-commit” e “changelog-updater”.

Adoro scrivere codice che risolva i miei problemi immediati.

Quando non sono seduto al computer, faccio sport, faccio escursioni sulle bellissime Alpi svizzere o cucino cibo per amici e familiari.

Shahzeb: Puoi condividere il tuo viaggio con Laravel? Hai qualche esperienza della tua carriera che trovi interessante e che vorresti condividere con il nostro pubblico?

Stefano: La prima volta che ho sentito parlare di Laravel è stato nel dicembre 2013. Mi sono imbattuto nel sito web “PHP nel modo giusto” e ho visto che il framework CodeIgniter era elencato sotto “framework legacy” mentre Laravel no.

Ho utilizzato CodeIgniter in passato per un progetto personale e ho appena terminato la migrazione di un’applicazione da un framework personalizzato a CodeIgniter. (All’epoca ero in azienda solo per 4 mesi.)

Ho inviato un’e-mail al mio collega sviluppatore e ho suggerito di dare un’occhiata più da vicino a questo framework Laravel e di provarlo in un prossimo progetto.

Abbiamo utilizzato Laravel v4 per il nostro prossimo progetto e siamo rimasti stupefatti dalla velocità con cui siamo riusciti a creare questa applicazione.

Un anno dopo abbiamo deciso di iniziare a riscrivere la nostra grande applicazione principale, che genera la maggior parte delle entrate dell’azienda, in Laravel. È stato un progetto enorme. L’app aveva molte funzionalità e all’epoca aveva già 5 anni. Abbiamo mantenuto in esecuzione la vecchia applicazione CodeIgniter e migrato funzionalità per funzionalità su Laravel. Ci sono voluti forse dai 12 ai 15 mesi per farlo; Ma ne è valsa la pena. L’app è diventata molto più stabile, abbiamo aggiunto un’ampia suite di test e abbiamo potuto aggiungere nuove funzionalità e scalare l’app molto più facilmente.

Anche se nella comunità dei programmatori vengono lanciate riscritture complete, direi che è stata la decisione giusta da prendere. All’epoca non c’era molto sviluppo attorno a CodeIgniter ed era sempre più difficile aggiungere nuove funzionalità all’app esistente.
È stata probabilmente una delle migliori esperienze di apprendimento professionale che ho avuto finora.

Shahzeb: Quali sono state le sfide principali che hai dovuto affrontare all’inizio della tua carriera e come le hai affrontate?

Stefano: La sfida più grande per me è stata trovare un lavoro di programmazione in cui mi adattassi. Mi sono diplomato come specialista IT generale e ho faticato a trovare un’azienda che accettasse qualcuno che non ha praticamente alcuna esperienza professionale nella programmazione. (Ancora un problema comune per le persone che entrano in questo settore!)

Durante il mio apprendistato abbiamo seguito un paio di corsi di programmazione, ma erano tutti piuttosto astratti. (Ricordo di aver scritto il codice Java per guidare un immaginario rover su Marte a sinistra, a destra e in avanti). Durante il tirocinio ho lavorato con altri apprendisti in un piccolo studio di sviluppo e ho creato piccoli siti web per clienti in PHP, HTML e CSS. Questo mi ha dato un po’ di esperienza, ma non quella che le aziende cercavano esattamente in un CV.

Ho quindi trascorso le mie 5 settimane di pausa estiva per creare una semplice app CodeIgniter per registrare la quantità di gas che ho riempito per la mia auto e quanti soldi mi sono costati. L’app ha calcolato anche il consumo medio ogni 100 chilometri. Era fondamentalmente un foglio di calcolo glorificato.

Ho quindi inviato un paio di applicazioni alle aziende che hanno assunto sviluppatori PHP e ho mostrato loro l’app che avevo creato.

Quindi ho ricevuto e accettato un’offerta basata su quell’app e sulla mia volontà di imparare cose nuove. Lavoro ancora in quell’azienda oggi e sono grato che abbiano visto il potenziale in me.

Dopo quel periodo, ciò che mi ha aiutato a diventare uno sviluppatore migliore è stato leggere la documentazione, guardare tutorial video (Laracast ha avuto una grande influenza su di me) e costruendo piccoli progetti collaterali per applicare ciò che ho imparato.

La maggior parte di quei progetti paralleli erano in realtà solo per me e non un tentativo di avviare un’attività secondaria, come molti tentano di fare oggi. Esistevano esclusivamente per i miei scopi di apprendimento.

Shahzeb: Hai creato uno strumento PHP davvero impressionante come schermatamente e pacchetto PHP simile laravel-stats. Come ti sono venute queste idee?

Stefano: La maggior parte delle mie idee nascono da piccoli problemi che riscontro nel mio lavoro quotidiano. è nato Screeneenly, poiché avevamo bisogno di un servizio che acquisisse screenshot regolari di tutti i siti Web nel nostro portafoglio. Ho detto al team che avrei dato un’occhiata a questo e durante un fine settimana l’ho costruito in modo schermato.
L’app originale è ancora disponibile e utilizzata da centinaia di utenti ogni mese. Ha avuto una grande spinta un paio di anni fa, quando Nextcloud ha iniziato a pubblicizzarlo per uno dei loro plugin.

Nel 2020, però, ho rilasciato una nuova versione principale come prodotto a pagamento. Ho riversato tutta la mia conoscenza accumulata sulle API e sui progetti Laravel in questa nuova versione. È stata ancora una volta un’esperienza di apprendimento divertente.

Fondamentalmente l’app avvia un browser Google Chrome, accede a un URL e acquisisce uno screenshot. L’app utilizza un potente codice open source per far funzionare tutto questo. Pacchetto Browsershot di Puppeteer e Spatie per citare i più importanti. (Mi baso sulle spalle di molte centinaia se non migliaia qui) Recentemente, ho anche reso open source le funzionalità principali della nuova versione in un pacchetto: sidecar-browsershot .
Il pacchetto consente agli utenti di eseguire Browsershot/Google Chrome su AWS Lambda. In questo modo, non è necessario che sul tuo server locale sia installato Google Chrome.

è nato laravel-stats questo tweet di David Heinemeier Hansson nel 2015. Ha mostrato un interessante riepilogo delle dimensioni dell’app Basecamp 3, scritta in Ruby. Ho pensato: “Ehi, non sarebbe bello se esistesse un comando del genere per Laravel?”. Un paio di settimane dopo ho rilasciato la prima versione di quel pacchetto. Installo questo pacchetto in ogni progetto su cui lavoro e lo utilizzo più volte alla settimana.

Un altro esempio valido e più recente è il mio aggiornamento del log delle modifiche Azione GitHub.

Mi sono stancato di aggiornare manualmente il CHANGELOG dei miei progetti ogni volta che rilasciavo una nuova versione. Ero determinato che ci dovesse essere un modo per automatizzare tutto questo.

Ho passato molte sere a leggere tutto sui parser Markdown e sugli alberi di sintassi astratti (AST) e dopo molte ore di lotta senza riuscire a creare qualcosa con i pacchetti JavaScript disponibili, ho scritto la mia piccola CLI in PHP. L’Azione è stata ora adottata da Spatie, Laravel e molte altre organizzazioni piccole e grandi. Mi rende molto orgoglioso che i miei piccoli strumenti siano ora utilizzati in così tanti progetti e probabilmente fa risparmiare loro molte ore noiose nella gestione dei file CHANGELOG.

Shahzeb: Hai valutazioni complessive complete su Github. Qual è il flusso di lavoro di sviluppo che ti aiuta a lavorare in modo fluido ed efficiente?

Stefano: Ogni volta che inizio un nuovo progetto inizio con carta e penna. Anche nell’era dell’iPad, penso che sia ancora uno dei migliori strumenti di prototipazione. Se si tratta di un’app con un’interfaccia utente, abbozzo un layout approssimativo del design. Spesso scrivo anche pseudo codice su come penso che il codice dovrebbe funzionare.
Un’altra parte Importante quando inizio un nuovo progetto per me è risolvere prima il problema più difficile. Ad esempio, non mi interessa la struttura del database o i metodi di autenticazione utilizzati. Per prima cosa voglio risolvere il problema “core” dell’applicazione. Ad esempio, di recente ho creato un progetto in cui un utente può inviare testo e trasformarlo in un podcast MP3. I primi problemi che ho risolto sono stati:

  • Come posso trasformare il testo in arrivo in audio? (Quali servizi cloud di terze parti posso utilizzare?)
  • Come posso unire più file MP3 in un unico file con PHP? (L’app genera un feed RSS del podcast. Ogni testo deve essere il proprio episodio del podcast.)

Di solito scrivo codice molto brutto in un percorso /wip o nel comando Artisan per risolvere questi problemi fondamentali.

Solo allora inizio a estrarre il codice, a rifinirlo e a costruire il resto dell’app attorno ad esso.

Da lì in poi non ho un flusso di lavoro perfetto. Arricchisco il README con punti elenco di ciò che devo documentare, scrivo test e preparo un post sul blog per presentare il progetto o la funzionalità.

Ciò che mi aiuta a concentrarmi è ascoltare la musica. O musica calma e atmosferica senza testi o musica dei videogiochi del passato. Per esempio questa playlist di YouTube con la musica del gioco Warcraft III viene eseguito regolarmente in loop.

Shahzeb: Hai una vasta conoscenza dello sviluppo di Laravel. Cosa ti ha motivato a diventare uno sviluppatore web Laravel? Chi sono stati i tuoi mentori e ispirazioni in questo viaggio?

Stefano: Direi che mi sono imbattuto in questo ruolo di diventare uno sviluppatore Laravel e non l’ho scelto attivamente. Come accennato, in precedenza ho lavorato con PHP o CodeIgniter. Ma dopo aver letto il Documentazione Laravel per la prima volta sapevo che quella era la strada da seguire. Comandi Artisan, migrazioni di database, modelli Eloquent, Blade. Tutto aveva molto senso per me e ha reso di nuovo divertente la programmazione delle app.

All’epoca non avevo un mentore con cui avevo contatti regolari. Vorrei chiamare Jeffrey Way un mentore però. Attraverso Laracasts ho imparato tantissimo su Laravel, PHP e sulla programmazione in generale. Ad oggi ho un’attività regolare nel mio task manager per controllare Laracasts e guardare un video su un argomento che non conosco o di cui non conosco molto. Come direbbe Jeffrey: “Non smettere mai di imparare!”.

Anche Twitter ha avuto una grande influenza su di me. Ho iniziato a seguire Taylor Otwell e altri prominente sviluppatori della comunità Laravel e ho osservato da lontano come scrivono il codice.

Leggere il loro codice influenza il modo in cui struttura e scrivo il codice oggi.

Shahzeb: Quali strumenti usi durante lo sviluppo di Laravel? Qual è il tuo flusso di lavoro?

Stefano: Per molti anni ho scritto codice esclusivamente in Sublime Text. Nel 2020, finalmente, ho ceduto PhpStorm un tentativo e non mi sono mai guardato indietro (a volte mi chiedo come avrei potuto scrivere codice PHP prima).

Oltre a PhpStorm, cerco di utilizzare strumenti semplici, veloci e facili da usare. iTerm per il mio terminale, Firefox come browser di riferimento e cameriere per aver servito i miei progetti a livello locale. Per un breve periodo di tempo ho utilizzato Docker per il mio ambiente di sviluppo locale, ma l’ho abbandonato perché i problemi di prestazioni interrompevano regolarmente il mio “flusso”.

Invecchiando, la mia regola numero uno è diventata quella di utilizzare strumenti semplici e veloci per portare a termine il lavoro. (So ​​che sembra strano detto da un ragazzo che è passato da Sublime Text a PhpStorm, ma abbi pazienza.)

Ad esempio, per installare diverse versioni di database utilizzo “DBngin” (creato dalle persone che hanno realizzato “TablePlus”). È un’app molto semplice che ha un pulsante “+” per aggiungere un nuovo database e un pulsante “Avvia” e “Stop” per ciascun tipo di database. Fa il suo lavoro e basta. Nessuna funzionalità soffice di cui il 90% dei suoi utenti non ha bisogno. Mi auguro anche che, come comunità, troviamo presto un modo migliore per scrivere multipiattaforma senza fare affidamento su Electron. Ho un paio di app che devo utilizzare regolarmente, dove vorrei che fossero native e non un pacchetto di app da 500 MB fornito con il proprio browser.

Shahzeb: Quale tipo di web hosting preferiresti? Secondo te, quali sono i vantaggi di ospitare un sito su un fornitore di soluzioni gestite piuttosto che su un hosting condiviso convenzionale?

Stefano: Ho utilizzato l’hosting condiviso quando ho iniziato in questo settore 14 anni fa. All’epoca non avevo i fondi per l’hosting gestito e l’hosting condiviso funzionava bene per i miei progetti personali.

Ma più imparavo sulla programmazione e più diventavano potenti le mie applicazioni, raggiungevo rapidamente i limiti dell’hosting condiviso.

Il primo problema era l’impossibilità di accedere alla shell o a strumenti come git o redis . Il secondo problema era raggiungere i limiti prestazionali degli hoster. Ricordo che una volta impostai un sistema di code HTTP che regolarmente metteva in ginocchio il server di hosting condiviso.

Anche l’hosting gestito è diventato molto più economico negli ultimi anni. Al giorno d’oggi scegliere l’hosting gestito rispetto all’hosting condiviso è un gioco da ragazzi.

Risparmiare un paio di dollari al mese non vale la pena, se devi aggirare tutte queste restrizioni che gli hosting condivisi ti impongono.

Shahzeb: Quanto pensi sia importante gestire l’hosting per gli sviluppatori Laravel, quali valori apporta al loro sviluppo e in che modo ciò influisce sul loro flusso di lavoro?

Stefano: Le soluzioni di hosting gestito sono fantastiche in quanto consentono a noi sviluppatori di dedicare più tempo a lavorare sulle nostre app. Non è necessario perdere tempo a configurare MySQL e mantenerlo in esecuzione o capire perché il server web si è bloccato.

E’ sempre una buona cosa.

Shahzeb: Cosa ne pensi delle soluzioni di hosting gestito come DreamHost che forniscono uno stack PHP ottimizzato e offrono il framework Laravel in un clic con funzionalità per distribuire le proprie app Web?

Stefano: Penso che se ci sono più strumenti disponibili che rendono la programmazione Laravel o PHP accessibile a più utenti, meglio è. Quindi sì, penso che DreamHost faccia un ottimo lavoro.

Chi non desidera distribuire la propria nuova, brillante app in produzione e renderla più semplice per gli utenti?

Shahzeb: Chi dovremmo intervistare dopo e perché?

Stefano: Difficile scegliere un solo nome qui. io suggerirei Tony Messias . Non è una voce così forte nella comunità di Laravel ma produce regolarmente ottimi pacchetti, articoli e video.

Mi piace anche il fatto che abbia un occhio attento sulla community di Ruby on Rails. Porta regolarmente pacchetti da Ruby a PHP e quindi apporta nuovi concetti e modelli alla comunità PHP e Laravel.

Shahzeb: Stefan, sono sicuro che molte persone hanno preso appunti. Sono anche sicuro che adorerebbero vedere una foto della tua postazione di lavoro se desideri condividerne una!

Stefano: Questo è il mio piccolo angolo ufficio in casa, dove trascorro parte del mio tempo libero lavorando su progetti di codice.

Shahzeb: Grazie ancora, Stefan Zweifel!