<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Luca Pagliaro on Medium]]></title>
        <description><![CDATA[Stories by Luca Pagliaro on Medium]]></description>
        <link>https://medium.com/@ilasw?source=rss-ac08f38310f3------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*yX-oLaPmCkxCE5zBA89A3w.jpeg</url>
            <title>Stories by Luca Pagliaro on Medium</title>
            <link>https://medium.com/@ilasw?source=rss-ac08f38310f3------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 17:05:50 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ilasw/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Risolvere i problemi durante lo sviluppo: i cinque migliori metodi.]]></title>
            <link>https://ilasw.medium.com/i-cinque-metodi-che-uso-per-risolvere-ogni-problema-nello-sviluppo-cd9adb8c1eb?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/cd9adb8c1eb</guid>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[tecnologia]]></category>
            <category><![CDATA[programmazione]]></category>
            <category><![CDATA[italiano]]></category>
            <category><![CDATA[pomodoro-technique]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Tue, 03 Nov 2020 21:55:43 GMT</pubDate>
            <atom:updated>2020-12-11T20:07:22.387Z</atom:updated>
            <content:encoded><![CDATA[<p>Ogni sviluppatore sa benissimo cosa significa trovarsi davanti un problema e non avere idea di come poterlo superare.</p><p>Molte volte non riusciamo a trovare una soluzione ad un problema per via di una conoscenza limitata della materia, altre invece capita di trovarsi davanti ad un problema prettamente logico dovuto ad una cattiva strutturazione del codice. Questo genere di errori ci porta ad investigare su dove risiede l’errore che fa saltare tutta la nostra logica. Qui entra in gioco una vera e propria sfida con il noi del passato: qualche tempo fa abbiamo sbagliato a scrivere una parte del programma ed abbiamo fallito, oggi gareggeremo con noi stessi per capire se siamo riusciremo ad ottenere un risultato migliore.</p><p>Per rendere la sfida più semplice sono tecniche che possono aiutare uno sviluppatore a risolvere i problemi di ogni progetto. <br>Oggi ho cercato di riassumere le mie personali migliori cinque:</p><h3>1 — Semina soluzioni, raccogli intuizioni</h3><p>Un’idea tanto stravagante quanto interessante è quella che ipotizza l’esistenza di un Google interno. È come se dentro ognuno di noi sia presente un motore di ricerca che si attiva quando abbiamo bisogno di un’intuizione. Che sia il ritrovare il mazzo di chiavi o trovare un nome per la nostra nuova startup basta lasciar lavorare il nostro Google interiore per poi avere, quando meno ce l’aspettiamo, un flash con una soluzione geniale!</p><blockquote>Il concetto di Google Interiore l’ho appreso <a href="https://www.youtube.com/watch?v=OIxs78wGKTo">da questo video di Robin Good</a> in cui spiega come ha avuto l’intuizione geniale per il suo nome</blockquote><p>Ovviamente il nostro G.I. ha bisogno di un combustibile che gli dia energia ed il modo migliore per fornirgliene di qualità è quello di leggere, lasciarsi contaminare e cercare di guardare il mondo da prospettive diverse.</p><p><strong><em>Alimentare il nostro motore, e farlo in molti ambiti diversi, è come spargere nel campo della nostra mente semi di possibili soluzioni.</em></strong> Non tutto ciò che impareremo ci servirà nella vita, ma sempre meglio avere qualche cartuccia in più che ritrovarsi a corto di munizioni, non trovate?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lN1N2_IsdVM4CrZI" /><figcaption>Photo by <a href="https://unsplash.com/@jediahowen?utm_source=medium&amp;utm_medium=referral">Jed Owen</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Consiglio a tutti di iniziare a prendere l’abitudine di leggere quotidianamente sugli argomenti del proprio lavoro.</p><p>Per esempio personalmente, ogni giorno, leggo decine di articoli su programmazione, miglioramento personale e sul fare impresa. <br>Sulla tematica programmazione mi piace leggere articoli su tematiche anche differenti dai linguaggi e framework che utilizzo giornalmente. <br>Imparare su tematiche non strettamente facenti parte della mia confort zone mi permette, oltre a tenermi costantemente aggiornato ed allenato, di conoscere altre tecnologie da poter approfondire o usare in un futuro in cui possa servire.</p><p>Così facendo fornirai alla mente spunti nuovi per creare collegamenti sia futuri che per soluzioni che sono rimaste “in attesa” di essere smistate dal motore interno.</p><h3>2 — Rubber duck, il debugger</h3><p>Si dice che <strong><em>il modo migliore per imparare</em></strong> qualcosa <strong><em>sia</em></strong> quella di doverla <strong><em>spiegare ad un’altra persona</em></strong>. Cosa succederebbe se si portasse questa teoria nel mondo della programmazione? Facile, otterremmo una papera di gomma!<br>Su questa tanto semplice ma geniale intuizione deve essere nato il metodo <strong><em>Rubber Duck.</em></strong></p><p>Il metodo di debug funziona così: in qualche modo dobbiamo entrare in possesso di un’anatra di gomma e tenerla a portata di mano per le sessioni di debug. Alla prima occasione utile, quando avrai un problema, non servirà fare altro che spiegare all’anatra il problema da risolvere e come si è deciso di implementare la soluzione e successivamente spiegare l’implementazione mentre lo si legge riga per riga.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*q_zMqt3ektR8Ap3M.jpg" /></figure><p>Provando a leggere il codice ad un certo punto ti renderai conto che quello che quello che ti serviva scrivere non coincide con il codice prodotto e l’errore verrà fuori per magia! L’anatra quindi potrà essere serena e felice nella consapevolezza di averti aiutato.</p><p>Ovviamente anche un collega potrebbe essere in grado di sostituire l’anatra, tuttavia questo non sempre è possibile. Inoltre si sa…le anatre son animali comprensivi e non riveleranno mai a nessuno il vostro errore ;)</p><h3>3 — Prenditi una pausa</h3><p>Risolvere un bug che abbiamo prodotto è come gareggiare con se stessi, risolvere un errore significa migliorare sia la codebase che la nostra capacità di scrittura del codice.</p><p>Non sempre però al contrario, se non dovessimo riuscire a risolvere un errore, deve significare che questo è troppo grande per noi. Semplicemente in quel momento potremmo essere stanchi, demotivati, o poco concentrati.</p><p><strong><em>Stanchezza, stress e pensieri extra lavorativi sono sempre dietro l’angolo, e se non riusciamo a separarci da queste preoccupazioni forse è il caso di separarci dallo scrivere codice.</em></strong><em> </em><strong><em>Prenditi una pausa.</em></strong></p><p>Se il problema è risolvibile, come una stanchezza momentanea dovuta al poco sonno è inutile continuare a sbattersi davanti ad un problema che ora dopo ora sembra diventare sempre più complesso da risolvere. Spegni semplicemente il pc e vai a riposare.</p><p>Al contrario se il problema ha una natura persistente nel tempo il miglior consiglio che posso darti è smettere di programmare per un po’. <br>Sappiamo tutti che scrivere codice che non compila o che è pieno di errori non fa altro che aumentare il livello di stress.</p><p>Personalmente mi è capitato in passato di perdere la voglia di sviluppare ed ho semplicemente smesso di farlo per circa 6 mesi. In quel periodo credo di aver fatto il miglior salto di qualità della mia vita. Certo ero giovane ed ancora la programmazione non era il mio lavoro, quindi potevo permettermelo, e so benissimo che non sempre questo sia possibile. Ma il lasso di tempo può essere sicuramente più breve. Quando si stacca per un po’ da un lavoro che non ci dà più stimoli o che ci stressa capiamo se veramente ci manca e se ci piace farlo.<br>Personalmente staccare in quell’occasione mi ha permesso di vedere il tutto da una prospettiva diversa, e così una pausa ha dato, paradossalmente, un’accelerata alla mia carriera.</p><h3>4 — Concentrati!</h3><p>Non sempre il contrario di una buona idea è una pessima idea. <br>Un esempio lo abbiamo nelle strategie adottate dai supermercati dove coesistono sia il principio di abbondanza che quello di scarsità. <br>Nel primo gli scaffali dei supermercati vengono riempiti di mille prodotti, e i ripiani pieni ci fanno capire quanto un negozio sia affidabile e ben tenuto.<br>La seconda strategia invece si basa sul principio inverso, ossia sul far percepire una mancanza sistemica di un prodotto che ci porta ad aumentarne il nostro valore percepito (lo abbiamo sperimentato di recente con <a href="https://www.ninjamarketing.it/2020/01/02/bnutella-biscuits-ferrero-barilla-marketing-biscotti/">la strategia di lancio dei Nutella Biscuits</a>, ricordate?).</p><p>Quindi se prima parlavo di rilassarti e staccare, ora ti urlo: <strong><em>CONCENTRATI!</em></strong></p><p>Nella vita odierna siamo bombardati da mille distrazioni, e queste possono essere una causa per il nostro cattivo rendimento. Quando lavoriamo infatti dovremmo cercare di limitare al minimo le distrazioni cercando di vivere a pieno l’attimo di produttività.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*lwqORiy8MS7oUT7u" /><figcaption>Photo by <a href="https://unsplash.com/@macroman?utm_source=medium&amp;utm_medium=referral">Immo Wegmann</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Non è semplice e soprattutto all’inizio avremo bisogno di aiuto, qui cade a fagiolo la <strong>tecnica del pomodoro.</strong></p><p>La tecnica del pomodoro è un metodo di gestione del tempo ideato alla fine degli anni ’80. <br>Il nome deriva da quei timer a forma di pomodoro, spesso utilizzati in cucina per tenere sott’occhio i tempi di cottura.</p><p>La tecnica consiste nell’impostare il proprio lavoro in slot da 25 minuti in cui lavorare senza sosta e senza distrazioni (posa quel cellulare!), per poi poter godere di 5 minuti di meritato riposo e distrazioni. Ogni quattro pomodori poi si fa una pausa più corposa di almeno 15–20 minuti.</p><p>Questo ci permette di non essere bombardati da mille problematiche ed aiuta a concentrarsi su un solo problema alla volta, combattendo il multitasking che tanto ci rende improduttivi.</p><h3>5 — Outside the box</h3><p>Certe volte possiamo anche provare a parlare con la nostra papera, riposarci o concentrarci ma non c’è modo di trovare la soluzione al problema che ci attanaglia. È facile in questi casi addossare la colpa ad agenti esterni (<em>N.d.R.</em> esiste un <em>bias cognitivo</em> per cui siamo portati a giustificare con la “sfortuna” errori nostri che negli altri avremmo affibbiato all’incompetenza) ma la verità è che se abbiamo un problema, soprattutto nella programmazione, è per un nostro limite.</p><blockquote>Ricordati che non puoi risolvere un problema con lo stesso tipo di pensiero che hai usato per crearlo.</blockquote><p>Per riuscire a dare una scossa alla situazione la cosa migliore che possiamo fare è quella di provare a guardare il problema da un’altra angolatura domandandosi per esempio: sarebbe più facile se cambiassi il pattern di sviluppo o se utilizzassi un’altra libreria invece di quella a cui sono abituato?</p><p>Le soluzioni più brillanti si trovano provando a pensare in modo desueto. Lì risiede il genio e la creatività che devono essere doti di spicco di un programmatore. Se ci abituassimo a pensare e progettare con una creatività dirompente riusciremmo a trovare sempre le migliori soluzioni per ogni enigma.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QhlyAuTGxg7oYgtAO85UEg.jpeg" /></figure><p>Un bell’esempio sul pensiero creativo (seppur totalmente di fantasia) potrebbe essere quello fornito dalla navetta spaziale usata dai protagonisti di Futurama per effettuare le consegne: la Planet Express.</p><p>Davanti alla necessità di avere un mezzo che sia il più rapido possibile il professore della serie ha un’idea fantasiosa e <em>disruptive: </em>dar vita ad un motore capace di mantenere il veicolo immobile e di spostare invece l’intero universo attorno ad esso.</p><p>E tu, ci avresti mai pensato? Provando a sforzarti, come potresti risolvere quel bug noto pensando fuori dagli schemi?</p><h3>Una riflessione…</h3><p>Rileggere il mio stesso codice è un’attività che mi appassiona parecchio perché mi aiuta a capire se sono migliorato o meno nel corso del tempo.</p><p>La passione per la programmazione esiste anche in virtù del fatto che ci si ritrova davanti a sfide sempre più grandi e per affrontare questa continua battaglia ci spingiamo in un ciclo iterativo incrementale di miglioramento personale.</p><p>Questo in un senso più ampio ci da uno stimolo per apprezzare e riempirci sempre di più la vita. Just Mick ha trattato questo argomento in suo recente video che ho molto apprezzato, ve lo lascio e nel mentre vi auguro buona vita e buon coding!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FK2ft0BCaWZ8%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DK2ft0BCaWZ8&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FK2ft0BCaWZ8%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/6202fa8782ab33c5b3a7f67d8aef1682/href">https://medium.com/media/6202fa8782ab33c5b3a7f67d8aef1682/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd9adb8c1eb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Apatia dello spettatore, elefanti nella stanza, e la responsabilità perduta nel team working.]]></title>
            <link>https://ilasw.medium.com/apatia-dello-spettatore-elefanti-nella-stanza-e-la-responsabilit%C3%A0-perduta-nel-team-working-4c01807c1c61?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/4c01807c1c61</guid>
            <category><![CDATA[bystander-effect]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[psicologia]]></category>
            <category><![CDATA[teamwork]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Sat, 30 May 2020 16:01:00 GMT</pubDate>
            <atom:updated>2020-05-30T16:26:26.216Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nVlR79ew1CYWrwgX.jpg" /></figure><p>Facciamo un gioco. Prova ad andare da una persona che non si occupa in alcun modo di informatica e chiedile, secondo lei, quale animale meglio descriverebbe uno sviluppatore. Probabilmente sceglierà un animale della notte. Perché nell&#39;ideale comune, e con una certa dose di ragione, il programmatore è immaginato come un lupo solitario che opera con il favore delle tenebre a roba che nessuno saprebbe fare o spiegare.</p><p>Questo era abbastanza vero fino ad un passato recente ma ad oggi, ci troviamo in una situazione in cui, anche a causa della forte verticalizzazione delle competenze richieste dal mercato, lo sviluppatore ha bisogno di contatti continui con altri tecnici o con figure che hanno competenze complementari come design e marketing. <strong><em>Il far lavorare insieme queste diverse risorse può creare nei casi di successo un’inarrestabile macchina perfetta, ma nei casi più sventurati può rendere anche un progetto semplice il peggior incubo che abbiate mai avuto.</em></strong></p><p>Quindi se riguardando al tuo ultimo progetto in team invece di pensare alla Sinfonia n. 9 di Beethoven, in cui tutti lavorano in ordine e non si sentono suoni fuori dal coro, ti viene in mente <em>Jack di Shining</em> che bussa alla porta di casa… beh forse abbiamo un problema.</p><p><strong><em>In alcuni casi il fallimento di un esperienza di team potrebbe essere correlato ad alcuni aspetti psicologici tra cui</em></strong> figura la protagonista indiscussa di quest’episodio: <strong><em>l’Apatia dello spettatore</em></strong><em>.</em></p><p>Nel caso in cui non conoscessi questo fenomeno, per capire rapidamente di cosa si tratta: <strong>hai presente quei video in cui vengono simulati incidenti,</strong> o situazioni di evidente difficoltà, <strong>in cui nessuno aiuta il malcapitato?</strong> Questi rappresentano perfettamente <strong><em>l’Apatia dello spettatore o effetto testimone</em></strong>, cioè <strong><em>un fenomeno per cui, in presenza di altre persone ed in una situazione d’emergenza, non si si offra alcun aiuto ad una persona in difficoltà.</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KywSFw9FV9A6u12b.png" /><figcaption>Quando in metro nessuno offre il posto a qualcuno con difficoltà è maleducazione, apatia dello spettatore o entrambi?</figcaption></figure><h3>Gli esperimenti di Latané e Darley</h3><p>Questo fenomeno venne ipotizzato per la prima volta negli anni ‘70 da due psicologi sociali Latané e Darley, a seguito del crudele omicidio di Kitty Genovese in cui nessuno dei testimoni pur avendone l’occasione chiamò la polizia. La società fu sconvolta dal fatto ed i giornali si riempirono di attacchi alla morale pubblica. Ma gli psicologi cercarono di andare oltre la prima impressione ed elaborarono l’idea di una correlazione tra la mancata iniziativa e l’alto numero di testimoni presenti. Per dimostrarlo furono molto impegnati in una serie di esperimenti sociali, di cui per semplicità ne riporterò due:</p><h4>L’attacco di epilessia per strada</h4><p>Nel primo chiesero a uno studente di <strong>simulare un attacco di epilessia</strong> nelle strade di New York allo scopo di registrare i casi di soccorso da parte dei passanti. La scena venne ripetuta più volte di fronte a quantità diverse di persone, per per capire se questo incidesse sulla probabilità di intervento.<br><strong>I risultati furono strabilianti, tanto chiari quanto inaspettati</strong>. Contrariamente a quanto ci si potrebbe aspettare quando il numero di testimoni aumentava, le probabilità che qualcuno aiutasse lo studente diminuivano. L’effetto era tutt&#39;altro che superficiale: <strong><em>lo studente riceveva assistenza nel 85% dei casi quando era presente una sola persona, ma soltanto il 30% dei casi quando ce n’erano cinque</em>.</strong></p><h4>Un incendio in sala d’aspetto</h4><p><strong>In un altro studio</strong>, i ricercatori si concentrarono su gruppi di individui in una sala d’attesa. Questa volta non fu simulata una crisi epilettica, ma diedero l’idea <strong>che nell&#39;edificio fosse scoppiato un incendio </strong>facendo in modo che del fumo filtrasse da sotto la porta. Ancora una volta, più il gruppo era numeroso, e più si riducevano le probabilità che qualcuno desse l’allarme. <strong><em>In questo caso il 75% delle persone che sedevano da sole segnalavano il pericolo, contro il 38% quando nella stanza vi erano tre soggetti</em>.</strong></p><h4>Le motivazioni</h4><p><strong><em>Ma perché l’istinto di aiutare gli altri diminuisce all&#39;aumentare delle persone presenti?</em></strong> Sul piano dell’istinto quando ci ritroviamo in una situazione inusuale, come davanti ad una persona che si accascia per strada<strong><em>, dobbiamo come prima cosa capire cosa stia succedendo</em></strong>. Si tratta di una vera emergenza, oppure è solo inciampato, oppure sta girando una scena per qualche video su YouTube?</p><p>Nonostante la miriade di possibilità dobbiamo decidere velocemente.<strong><em> </em></strong>Il modo più rapido ed istintivo <strong><em>è osservare il comportamento degli altri</em></strong>. Stanno andando ad aiutare o continuano a fare i fatti propri? E poiché la maggior parte delle persone non vuole distinguersi dalla folla, tutti guardano gli altri in cerca di suggerimenti, generando uno stallo, per cui alla fine si può arrivare a pensare: se nessuno fa nulla, qui non c’è niente di grave, andiamocene.</p><p>Anche se riuscissimo a percepire un reale bisogno di aiuto, <strong><em>c’è sempre la questione della responsabilità</em></strong> In quasi tutte le situazioni quotidiane, non vi è una gerarchia chiara: è vostro compito intervenire, oppure dovreste lasciar fare al tizio laggiù che magari è più preparato? Tutti i membri del gruppo ragionano nello stesso modo, perciò può accadere che nessuno faccia nulla.</p><h3><em>Apatia ed elefanti nel lavoro</em></h3><p>Una volta appreso di questo fenomeno ci verrà più facile notarlo nella vita di tutti i giorni. Quindi avremo maggiori chance di migliorare il nostro impatto nella società. Oggi però mi piacerebbe soffermarci particolarmente sulle conseguenze che porta in ambito lavorativo.</p><p>Le aziende moderne provano spesso ad incoraggiare i dipendenti a comunicare tra loro e adoperarsi/segnalare problemi in modo autonomo. Quello che succede però è che la ridondanza delle informazioni tra persone può causare comunque l&#39;effetto spettatore ed impedire una risoluzione o comunicazione proattiva.</p><p><strong><em>Sembra come se nei progetti ad un certo punto balzi fuori un Elefante nella stanza, e che nessuno voglia prendersi la briga di accompagnarlo fuori.</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/650/0*zIDmJ1Ln5EPdrwJA.jpg" /><figcaption>L’elefante nella stanza è una tipica espressione inglese <em>(</em><a href="https://it.wikipedia.org/wiki/Elefante_nella_stanza"><em>Wikipedia</em></a><em>)</em></figcaption></figure><p>Quando abbiamo situazioni impossibili da ignorare, come uno sconosciuto che sviene per strada o un evidente elefante nella stanza, se tutti fanno finta di nulla la ragione non può essere altro che così facendo si spera interiormente che il problema scompaia da sé.</p><p>Bisognerebbe arrivare alla considerazione che la vita è come un gioco in cui dobbiamo scegliere che ruolo avere:<strong> vogliamo essere protagonisti o personaggi secondari? </strong>Vogliamo delegare sempre agli altri senza neanche provare a metterci in gioco? Oppure vogliamo rimboccarci le maniche per dimostrare il nostro valore quando ne avremo occasione?</p><h3>Come migliorare</h3><p>Gli argomenti trattati in quest’articolo possono sembrare diversi tra loro ma c’è un’elemento comune: la responsabilità. Che tu sia un manager, un libero professionista o un dipendente è fondamentale, prima di ogni cosa, lavorare sul proprio senso di responsabilità, sulla consapevolezza delle proprie capacità e sulla volontà di metterle al servizio degli altri nel momento opportuno. Ma eccoti comunque una lista di consigli che possono aiutarti a coordinarti meglio con gli altri evitando <em>l’effetto spettatore:</em></p><ul><li><strong><em>Lavorando in team</em></strong> prova a mettere a proprio agio tutti i componenti della squadra, <strong><em>la comunicazione deve essere sempre incentivata.</em> </strong>Meglio dire due volte la stessa cosa che non dirla mai. Inoltre aiuta a ridurre la diffusione della responsabilità <strong><em>enfatizzando il contributo di ciascuno</em></strong><em>.</em></li><li><strong><em>Se dovessi aver bisogno di aiuto: assegna incarichi ad personam per far sì che qualcuno si senta responsabile</em></strong><em>.</em> Se nel progetto a cui stai lavorando hai bisogno di un intervento indica chiaramente da chi te l’aspetti. Allo stesso modo se per strada finisci in preda ad un malore un semplice gesto può salvarti la vita: indica qualcuno vicino e chiedigli di chiamare i soccorsi. Così facendo triplicherai le possibilità di un intervento.</li><li><strong><em>Divieto assoluto per email generiche con troppi destinatari.</em></strong> Vietati anche messaggi che hanno bisogno di una conferma in canali di comunicazione pubblici (<em>Slack sei tu?</em>) con troppe persone. <strong><em>In presenza di più destinatari si tende a pensare che la responsabilità di rispondere sia sempre di un altro</em></strong> e potrebbe capitare che nessuno alla fine lo faccia.</li><li><strong><em>Prendi consapevolezza dell’effetto del testimone prova a vincere la tendenza a star fermi quando ci sono altre persone.</em></strong> Nel lavoro l’intraprendenza è, tendenzialmente, premiata mentre nella vita di tutti i giorni potresti fare la differenza. Se non avessi le competenze per risolvere il problema, come visto prima, anche il solo gesto di chiamare aiuto può salvare la vita di uno sconosciuto, figuriamoci quanto bene può fare nel lavoro.</li></ul><p>Ora che hai scoperto cosa significa l’apatia dello spettatore, la prossima volta che avrai davanti una situazione insolita cosa farai? Vorrai essere uno spettatore o il protagonista della tua storia? Pensaci. Nel frattempo non mi resta che augurati buona vita.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4c01807c1c61" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cos'è l’entropia ed altre tristi storie di codice scritto a fine progetto.]]></title>
            <link>https://medium.com/the-wave-notes/cos%C3%A8-lentropia-ed-altre-tristi-storie-di-codice-scritto-a-fine-progetto-2bc08f57148?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/2bc08f57148</guid>
            <category><![CDATA[programmazione]]></category>
            <category><![CDATA[clean-code]]></category>
            <category><![CDATA[entropia]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[coding]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Tue, 26 May 2020 10:48:38 GMT</pubDate>
            <atom:updated>2020-05-26T10:48:38.802Z</atom:updated>
            <content:encoded><![CDATA[<h3>Entropia ed altre tristi storie di codice scritto a fine progetto.</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-03xnb3DgN45VzLnorpDyA.jpeg" /></figure><h3>Entropia</h3><p><em>Entropia</em> è un termine utilizzato in fisica ed <strong>indica il livello di disordine</strong> presente in un determinato sistema. Un sistema si può definire tanto più disordinato maggiore è il numero di informazioni che servono a descriverlo. Esiste inoltre una legge della termodinamica che enuncia come <strong>il livello di entropia, nel tempo, sia destinato ad aumentare</strong>.</p><p>Come sviluppatori, conoscere ed aver interiorizzato il concetto di <em>entropia</em> in un progetto può aiutarci a scrivere codice migliore. Quindi vi prego sedetevi comodi, allacciate le vostre cinture e prepararvi ad un, breve ma intenso, viaggio nella mente umana.</p><h3>Come nasce il disordine</h3><p>Da sviluppatore, ammetto di appartenere ad una razza davvero strana, ogni inizio progetto segue lo stesso copione: ci ripromettiamo che questa sarà la volta giusta, che riusciremo a tenere tutto in ordine, a prova di bug e che il prodotto finale sarà <em>manutenibile </em>nel tempo.</p><p>Poi passa qualche settimana e senza accorgercene e ci ritroviamo con un progetto che è diventato un disastro: c’è qualche bug ma non sappiamo da dove provenga; c’è del codice duplicato sparso nell&#39;applicativo; e quel metodo sappiamo che non è scritto secondo le <em>guidelines</em>… ma funziona così bene che sarebbe un peccato rimpiazzarlo!</p><p>Insomma il livello di disordine nel progetto è diventato tale che servirebbe proprio un bel <em>refactoring.</em> Purtroppo però siamo indietro con le scadenze ed il cliente ha anche chiesto delle modifiche urgenti.</p><p>Quindi anche questa volta, forse, il progetto giusto sarà il prossimo…</p><p><strong><em>Ma come nasce il disordine?<br></em></strong>La risposta è tutt&#39;altro che semplice, ma forse, la teoria delle finestre rotte può venirci in aiuto.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*uGsFzOLx0vSObO3G.jpg" /><figcaption>L’entropia può nascere per una finestra rotta, occhio!</figcaption></figure><h4>La teoria delle finestre rotte</h4><p>Nel 1969 il professor Philip Zimbardo condusse un esperimento di psicologia sociale. Egli lasciò due automobili identiche, stessa marca, modello e colore abbandonate in strada, una nel Bronx, zona povera e conflittuale di New York, l’altra a Palo Alto, città ricca e tranquilla della California. <br>Lo scenario era quindi quello di due identiche auto abbandonate in due quartieri con tipologie molto diverse di abitanti, con una squadra di specialisti in psicologia sociale a studiare il comportamento delle persone in ciascun sito.</p><p>Ciò che accadde fu che l’automobile abbandonata nel Bronx cominciò ad essere smantellata in poche ore, perdendo le ruote, il motore, gli specchi, la radio, e così via; tutti i materiali che potevano essere utilizzati vennero rubati e quelli non utilizzabili vennero distrutti. <br>Al contrario, l’automobile abbandonata a Palo Alto rimase intatta. In tali casi è comune attribuire le cause del crimine alla povertà. Tuttavia, l’esperimento in questione fu proseguito. Dopo una settimana, durante la quale la vettura abbandonata nel Bronx era stata completamente demolita mentre quella a Palo Alto era rimasta intatta, i ricercatori decisero di rompere un vetro della vettura a Palo Alto; in breve tempo i ricercatori assistettero alla stessa dinamica di vandalismo che avevano registrato nel Bronx: furto, violenza e vandalismo ridussero il veicolo lasciato a Palo Alto nello stesso stato di quello abbandonato nel distretto malfamato di New York. (fonte: <a href="https://it.wikipedia.org/wiki/Teoria_delle_finestre_rotte">Wikipedia</a>)</p><p>Zimbardo osservò che la maggior parte dei saccheggiatori non avevano affatto l’aspetto di criminali o persone disagiate, sembravano invece <strong>persone comuni</strong> che mai avremmo classificato come vandali prima di vederle all’opera. Secondo Zimbardo, il finestrino rotto dell’automobile costituisce un <strong>indizio di abbandono dell’area</strong>, il quale a sua volta è in grado di svegliare in noi <strong>peggiori istinti</strong>, forti del fatto che difficilmente verremmo giudicati o puniti per le nostre azioni.</p><h4>Le finestre rotte nel codice</h4><p>Ora proviamo a portare quest’esperienza nella vita reale. Proviamo a pensare a quando lavoriamo in un progetto di cui abbiamo anche la sola impressione che sia un lavoro sprecato o di bassa qualità. La teoria delle finestre rotte ci spiega come inconsciamente siamo portati a risparmiare le nostre energie e continuare su una strada tracciata male o peggio ancora a tracciarne noi una di pessima fattura.</p><p>È infatti una cosa nota che non solo l’entropia di un sistema aumenterà con il tempo, ma che l’energia per ordinare un sistema sia di gran lunga maggiore di quanta ne serva per disordinare o lasciarsi trascinare dalla corrente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*VGx-33oivCcH1Hse.jpg" /><figcaption>Un programmatore deve essere come una carpa koi</figcaption></figure><p>In questi casi dobbiamo ricordarci dell’antica leggenda cinese che racconta di una carpa perseverante che riuscì a risalire una ripida cascata, superando ostacoli e spiriti malvagi per poi essere premiata dagli dei, impressionati da tanto coraggio, che la trasformarono in un grande drago. Allo stesso modo ogni giovane programmatore, nell&#39;intento di migliorare sé stesso, dovrebbe provare a migliorare ogni progetto che tocca cercando di remare contro la corrente che porta alla deriva dell’entropia.</p><p><strong>Ovviamente capiterà anche i team migliori di dover mettere una toppa</strong> per una presentazione del prodotto o per qualche richiesta urgente del cliente, <strong>qui però vi esorto a non lasciare </strong>mai <strong>finestre rotte </strong>nel codice.</p><h3>Conclusioni</h3><p>La qualità del codice che scriviamo è dettata, molto più di quanto immaginiamo, da <em>bias cognitivi</em> che possono scaturire da diverse fonti. Tra queste troviamo spicca l’idea che abbiamo del progetto ed il suo prestigio. Saremo portati a fare un buon lavoro per un progetto che sarà largamente usato, mentre al contrario, tenderemo a non spenderci troppo per progetti che reputiamo secondari.</p><p>Anche lo stato di un progetto al nostro ingresso, il suo <em>scaffolding</em>, la presenza o meno di una documentazione e di commenti di qualità condiziona il lavoro nostro e degli altri programmatori. E noi, dopo quanto detto in precedenza, vogliamo far trovare agli altri una macchina in perfette condizioni o con qualche finestrino rotto?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*vrwILccSF0EP7Tb2.jpg" /></figure><p>L’entropia è destinata ad aumentare ma sta a noi cercare di limitarla. È cosa nota che nelle ultime battute di un progetto gli sviluppatori tendono a “rilassarsi” scrivendo codice con meno qualità rispetto che all&#39;inizio. Qui si annidano i maggiori rischi, perché un programma non termina quasi mai il suo ciclo di vita con la prima release: aggiornamenti, <em>bug fixing</em> e nuove richieste da parte del cliente sono sempre dietro l’angolo. Abbassando la guardia ci troveremo a dover costruire in futuro su una struttura instabile. Sarebbe come fare una maratona e smettere di correre a pochi passi dal traguardo.</p><h4>Come si può migliorare</h4><ul><li>Se possibile <strong><em>prendetevi il tempo necessario per valutare più soluzioni</em></strong>, schematizzarle, e solo dopo scegliere quella che offre il miglior rapporto qualità/tempo di sviluppo.</li><li>Investi del tempo, prima di scrivere il codice, per <strong>scrivere una buona documentazione</strong> per ogni parte del tuo programma. <br>Si dice che il miglior modo per scrivere codice di qualità sia quello di limitarne la scrittura al numero minimo di righe che lo rendano conforme ai requisiti o alla documentazione.</li><li><strong>Nel caso di soluzioni poco eleganti<em> ricordatevi di darne evidenza</em> </strong>al responsabile del progetto, o se siete voi stessi al cliente, in modo da poter valutare insieme un successivo intervento di refactoring.</li><li><strong>Lasciate un commento</strong> al codice <strong>in cui spiegate come</strong> si potrebbe <strong>risolvere diversamente il problema</strong> e chiarite la motivazione delle vostre scelte. <em>Dover scrivere una possibile soluzione mette in moto la vostra capacità di problem solving e una nuova strada potrebbe magicamente apparire!</em></li><li>Se ti dovessi imbattere in un progetto che ricorda una macchina abbandonata nel Bronx, <strong>non prendere anche tu la mazza da baseball per sfasciare tutto, ma armati di buona volontà</strong> e, anche se non sarà sempre possibile, dai il massimo per ridurre al minimo l’entropia!</li></ul><p>Oggi abbiamo capito come <em>l’entropia</em> sia una componente importante da considerare nei progetti a cui lavoriamo giornalmente, abbiamo anche visto qualche modo per poterla arginare, ma ricordiamoci sempre che il modo migliore per avere progetti stabili nel tempo è sempre quello di lavorare con metodo ed ordine.</p><p>Non mi resta che augurarvi un <em>buon coding e buon ordine</em>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2bc08f57148" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-wave-notes/cos%C3%A8-lentropia-ed-altre-tristi-storie-di-codice-scritto-a-fine-progetto-2bc08f57148">Cos&#39;è l’entropia ed altre tristi storie di codice scritto a fine progetto.</a> was originally published in <a href="https://medium.com/the-wave-notes">The Wave Studio</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sono davvero un impostore? La dura vita di uno sviluppatore.]]></title>
            <link>https://ilasw.medium.com/sono-davvero-un-impostore-la-dura-vita-di-uno-sviluppatore-3a8cfb8729b2?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/3a8cfb8729b2</guid>
            <category><![CDATA[imposter-syndrome]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[development]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Fri, 01 May 2020 19:28:11 GMT</pubDate>
            <atom:updated>2020-05-01T19:29:00.829Z</atom:updated>
            <content:encoded><![CDATA[<h4>Quando arrivi a chiederti “Sono davvero un bravo Developer o sono solo una truffa, un impostore?”</h4><h4>Il mio background</h4><p>Mi chiamo Luca e sono il lead dell’area front-end web in <a href="https://www.thewavestudio.it/">The Wave Studio</a>, l’agenzia che ho co-fondato poco più di un anno fa. <br>Ed ogni tanto penso che <em>forse </em>sono sempre stato un impostore.</p><p><strong>La vita da sviluppatore non è semplice</strong> dato che nel nostro ambito c’è un’evoluzione repentina e continua: <strong>ogni 2–3 anni le tecnologie che ami e che usavi diventano obsolete</strong> e vengono surclassate da nuovi linguaggi o framework non dando mai la possibilità di adagiarsi sugli allori e farsi forte di una conoscenza che non va mai a “scadere”.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3iON8rdbZY5cj5Xw" /></figure><p>Io, dal canto mio, <strong>ho sempre studiato da autodidatta ed ho programmato quasi tutti i giorni della mia vita da quando ho scoperto questo magnifico mondo</strong>: all&#39;età di 15 anni realizzavo già siti per i miei primi progetti giovanili; nel 2013, ancor prima di diplomarmi, collaboravo con un’agenzia digitale di Padova da remoto; oggi leggo almeno 10 articoli al giorno, coordino un team di sviluppatori ed ogni tanto mi spendo come speaker ad eventi di settore; insomma mi sono sempre dato da fare e diciamo che nel corso del tempo ho accumulato una discreta esperienza.</p><h4>Il problema</h4><p>Però sin dal primo giorno, sopratutto quando ero più inesperto e sviluppavo interi progetti cercando sistematicamente la soluzione dei miei problemi su Google, ho sempre avuto un dubbio:</p><blockquote><strong><em>“Ma sono davvero un bravo Developer o sono solo una truffa, un impostore?”.</em></strong></blockquote><p><strong>Per anni ho vissuto con questo dubbio</strong> che si faceva vivo prima dell’inizio di una nuova sfida oppure quando c’era il rischio che qualcuno potesse vedere le mie tab del browser su tutorial o su qualche soluzione trovata su <em>Stack Overflow</em> e <strong>per paura che potessi essere beccato ed additato come un incompetente</strong> chiudevo sistematicamente tutte le finestre non appena letta la soluzione al mio problema (<em>creando delle situazioni al limite del tragicomico quando per la fretta di chiudere le finestre non arrivavo neanche a leggere correttamente la risposta ndr</em>).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/0*5T6jmtpNRpBQoK3_.jpg" /><figcaption>Mi sentivo esattamente così.</figcaption></figure><p>A nulla valse la frase, che ad oggi recito come un mantra, che mi venne detta dal mio tutor in uno dei miei primi lavori:</p><blockquote><strong><em>“Un bravo sviluppatore non deve conoscere tutte le funzioni, ma deve sapere cosa si può fare e come/dove andarlo a cercare”</em></strong></blockquote><h4>La Consapevolezza</h4><p>Con il tempo ho capito che quello che provavo non era altro che <strong>una forma della </strong><a href="https://it.wikipedia.org/wiki/Sindrome_dell%27impostore"><strong>Sindrome dell’impostore</strong></a>, ossia la difficoltà di alcuni individui di riuscire a valutare i propri risultati come espressione del proprio lavoro o talento ma anzi indicare come possibile causa dei propri successi un elemento esterno come la fortuna o l’inesperienza di chi giudica il proprio operato. <br>E se proverete a <a href="https://www.google.com/search?q=imposter+syndrome+developer+programming&amp;oq=imposter+syndrome+develo&amp;aqs=chrome.2.0j69i57j0l6.8511j0j1&amp;sourceid=chrome&amp;ie=UTF-8">cercare questa sindrome su Google</a> vi renderete conto di come <strong>questo fenomeno sia largamente diffuso tra developers</strong> che vivono le difficoltà di un mondo incredibilmente vasto e subiscono le problematiche di un sistema che non da loro mai la certezza di conoscere una tematica fino in fondo.</p><p>Da ogni elemento di difficoltà però bisogna trarne un punto di forza, quindi una volta capito cosa stessi vivendo ho iniziato un percorso di miglioramento personale. <strong>Se non potevo avere la certezza di essere davvero uno sviluppatore valido non potevo far altro che diventarlo imparando ogni giorno qualcosa di nuovo</strong>, ho quindi inserito alcune abitudini come: leggere giornalmente articoli e libri tecnici appena sveglio e prima di andare a letto; seguire costantemente corsi e video corsi; mettermi in gioco andando ad eventi come speaker per dimostrare a me stesso quanto potessi valere.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*U8kxPwPaz5c0HVNE" /><figcaption>Eccomi quindi al WordCamp 2019, a Catania, davanti a 150+ persone paganti!</figcaption></figure><h4>Conclusioni</h4><p>Ad oggi credo che questo sentirmi costantemente in dubbio non abbia fatto altro che dare una forte spinta alla mia carriera facendomi spendere sempre al massimo per dimostrare, a me prima che agli altri, che potevo raggiungere qualsiasi meta con il sudore della mia fronte.</p><p>Se anche tu vivi questa situazione sappi che non sei l’unico e che <em>“non esiste buono o cattivo tempo, ma solo buono o cattivo equipaggiamento”</em> quindi anche davanti una difficoltà come questa se riusciremo a trovare i giusti mezzi potremo rendere una situazione sconveniente un’opportunità per poter spiccare il volo.</p><p><em>Ps: Sapevi che la sindrome dell’impostore è spesso associata al cosiddetto effetto </em><a href="https://it.wikipedia.org/wiki/Effetto_Dunning-Kruger"><em>Dunning-Kruger</em></a><em>, una distorsione cognitiva a causa della quale individui inesperti tendono a sopravvalutarsi, rifiutando di accettare la propria incompetenza e viceversa persone competenti tendono a sminuire il proprio reale valore? Quindi magari il sapere di non-sapere non fa altro che indicare che sei una persona valida?</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3a8cfb8729b2" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quattro buoni motivi per cui dovresti imparare a programmare]]></title>
            <link>https://medium.com/the-wave-notes/quattro-buoni-motivi-per-cui-dovresti-imparare-a-programmare-7879d3c04078?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/7879d3c04078</guid>
            <category><![CDATA[programmazione]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[digitale]]></category>
            <category><![CDATA[tecnologia]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Wed, 26 Feb 2020 11:12:34 GMT</pubDate>
            <atom:updated>2020-03-10T10:44:32.155Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PaqALRyu9JnEu58brK6Mew.png" /></figure><p>Mi capita spesso di pensare che forse il mondo sarebbe un posto migliore se tutti noi conoscessimo almeno un linguaggio di programmazione, ma quando lo dico la risposta che in genere mi viene data è: &lt;Ah ma che dici Luca… Se tutti conoscessero come sviluppare oggi probabilmente saresti disoccupato!&gt;.</p><p>Niente di più sbagliato perché esiste una profonda differenza tra chi sa cucinare e chi di mestiere fa lo chef. Saper cucinare ci migliora la qualità della vita, ci fa risparmiare, divertire e conoscere persone che condividono la stessa passione; ma non per questo dobbiamo essere tutti Chef.</p><p><strong>Ecco qui quindi 4 buoni motivi per</strong> smetterla di essere passivi in questo mondo digitale ed invece<strong> tuffarsi nel mondo della programmazione</strong>:</p><h3>1 — Avere conoscenza di come funzionano le cose</h3><p>Conoscere la logica che sta alla base della programmazione ci permette di vivere in modo più completo i programmi che usiamo tutti i giorni. Ovviamente non dobbiamo essere dei guru ma <strong>conoscere come funziona ciò che usiamo ci permette di sfruttarne al 100% le potenzialità</strong>.</p><p>Questo è un meccanismo che adottiamo in modo quasi inconscio durante la vita, per esempio lo abbiamo fatto quando abbiamo studiato per la patente: in quell&#39;occasione infatti, non serviva conoscere la logica alla base della macchina ma<strong> avere ben chiaro il meccanismo per cui funzionano la frizione e acceleratore ci aiuta a guidarla meglio</strong>.</p><p>Inoltre una conoscenza della tecnologia ci permette di sapere cosa si può realizzare e cosa no,<em> magari questo potrebbe anche farci venire un’idea su un nuovo progetto imprenditoriale, no?</em></p><h3>2 — Combattere analfabetismo funzionale e decadenza celebrale</h3><p>Il termine <strong>analfabetismo funzionale</strong>, <strong>indica</strong> la <strong>difficoltà nella vita quotidiana di usare in modo efficace le abilità base</strong> di lettura, scrittura e calcolo.</p><p><strong>Secondo varie fonti</strong> la percentuale stimata di analfabeti funzionali in Italia si attesta intorno al 47%, <a href="https://tg24.sky.it/mondo/2019/09/06/analfabetismo-funzionale-italia.html">qui un po’ di dati</a> raccolti da Sky, il che significa che <strong>una persona su due ha difficoltà a vivere la vita di tutti i giorni a causa di questa disfunzione</strong>. Analfabeti funzionali non si nasce e possiamo lavorare per migliorare questa condizione con un allenamento continuo della nostra mente nell&#39;analisi della logica.</p><p>Parlando invece di <strong>decadimento celebrale</strong>, quante volte capita di non ricordare cose semplici o di renderci conto che anche operazioni matematiche semplici ci richiedono parecchio tempo?</p><p><strong>Questo fenomeno è sempre più diffuso con l’aumentare dell’età o con la pratica di affidare sistematicamente operazioni ad un assistente</strong> (<em>ti ricordi per caso quand’è stata l’ultima volta che avete fatto una moltiplicazione a due cifre a mente?</em>) ma non tutto è perduto, possiamo tenere la nostra mente attiva in vari modi.</p><p><strong>La programmazione ci permette di stare sempre in allenamento</strong>: si creano percorsi logici; si fanno calcoli e si risolvono giornalmente problemi di varia complessità.</p><h3>3 — Risolvere o semplificare problemi</h3><p>Come detto prima programmare significa scrivere indicazioni da passare ad un device su come risolvere un problema. <strong>Per i programmatori non esistono problemi o situazioni che non possano essere risolte, semplificate o ottimizzate.</strong></p><p><strong>Nella vita possiamo individuare un mare di problemi o situazioni</strong> che possano essere ripetitive e <strong>che magari ci siamo stancati di risolvere manualmente</strong> perché costerebbe troppo e/o ci farebbe impazzire.</p><p><strong>In questi casi scrivere del codice ci può aiutare la dove il computer è più bravo</strong>, ossia nelle attività monotone e ripetitive come: ricopiare un lungo testo partendo da foto (<a href="https://it.wikipedia.org/wiki/Riconoscimento_ottico_dei_caratteri">OCR</a>) piuttosto che inserire manualmente una lista di informazioni in un foglio Excel.</p><p>Conoscendo la programmazione <strong>potremo scoprire come con poche righe</strong> <strong>anche un’attività lunga e frustrante</strong> può essere risolta facilmente e <strong>farci sentire la persona più felice e capace al mondo</strong>.</p><p>Un’altra caratteristica dello scrivere codice è che c’è sempre un modo di migliorare il codice scritto per risolvere un problema in maniera più veloce, elegante ed efficiente, quindi possiamo sempre provare a migliorarci gareggiando con il noi del passato!</p><h3>4 — Puoi trovare lavoro facilmente e puoi farlo da dove vuoi</h3><p>Essere uno sviluppatore nel 2020 significa avere una vasta gamma di azienda da cui poter attingere per trovare lavoro, infatti <a href="https://medium.com/@ilasw/quando-i-disoccupati-non-trovano-lavoro-ma-le-aziende-non-trovano-disoccupati-446f3db45f86">come dicevo in un mio vecchio articolo</a>: “il problema è che <strong>più del 40% delle aziende digitali in italia non riesce a trovare persone da assumere</strong> per i ruoli cercati”. Quindi almeno <strong>per i prossimo 5 anni questa professione è sicuramente un ottimo investimento!</strong></p><p><strong>La programmazione è una lingua comune a tutte le nazioni</strong> del mondo perché, sebbene usi principalmente l’inglese, è una rappresentazione della logica e della matematica. <strong>Per programmare non serve altro che un computer ed una connessione ad internet</strong>, il che rende questo mestiere particolarmente versatile.</p><p>La mancanza di attrezzatura fisica e facilità di essere capita universalmente <strong>rendono la professione dello sviluppatore aperta a posizioni lavorative in ogni paese del mondo</strong> <strong>indipendentemente dal contesto di provenienza</strong>.</p><p>A facilitare le iniziative di lavoro remoto c’è anche la prassi di aziende informatiche moderne che hanno adottato sistemi di tracciamento e pianificazione di attività presenti interamente online, il che rende la capacità dello sviluppatore e la sua produttività il miglior e più importante metro di giudizio.</p><h3>5 — Bonus: <strong>Anche Obama sponsorizza la programmazione!</strong></h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6XvmhE1J9PY%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6XvmhE1J9PY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6XvmhE1J9PY%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/0321f15a11dccb8fe23e2654c8c5f36c/href">https://medium.com/media/0321f15a11dccb8fe23e2654c8c5f36c/href</a></iframe><p>Quindi cosa aspetti? Ci vediamo dall&#39;altro lato, <br>Buona giornata e <strong>buon coding</strong>! 😉💪</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7879d3c04078" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-wave-notes/quattro-buoni-motivi-per-cui-dovresti-imparare-a-programmare-7879d3c04078">Quattro buoni motivi per cui dovresti imparare a programmare</a> was originally published in <a href="https://medium.com/the-wave-notes">The Wave Studio</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’arte di ottimizzare i siti web — Parte 2 - Medium Level]]></title>
            <link>https://ilasw.medium.com/larte-di-ottimizzare-i-siti-web-parte-2-medium-level-f48fb45fb202?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/f48fb45fb202</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[italiano]]></category>
            <category><![CDATA[development]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Tue, 12 Feb 2019 18:50:12 GMT</pubDate>
            <atom:updated>2019-02-15T17:21:56.443Z</atom:updated>
            <content:encoded><![CDATA[<h3>L’arte di ottimizzare i siti web — Parte 2 - Medium Level</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wE-_xuxFajvWu1CYlljjMw.png" /></figure><p><strong>Questo articolo fa parte di una serie, puoi trovare il primo qui: </strong><a href="https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be">https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be</a></p><p>Nello scorso articolo abbiamo visto come possa essere importate ottimizzare un sito web, l’effort che attualmente i team spendono in questa pratica e quali sono le tecniche principali per ottenere dei risultati interessanti, oggi vedremo delle tecniche avanzate per aumentare la velocità effettiva e percepita dai nostri visitatori.</p><h3>2.1 <strong>HTTPS &amp;&amp; HTTP/2</strong></h3><p>HTTP/2, detto anche HTTP/2.0, è la nuova versione del protocollo HTTP che rende le applicazioni web più veloci, snelle e robuste, consentendo di fare a meno di alcune tecniche di ottimizzazione adottate fino ad ora.<br>Anche se non sembra il passaggio a questo protocollo di trasferimento aiuterà i nostri siti ad essere più ottimizzati grazie alle sue tante features:</p><ul><li>Da quando <a href="https://letsencrypt.org/">Let’s Encrypt</a> ha reso possibile creare in modo autonomo i nostri certificati è possibile averlo quasi sempre <strong>Gratis o a bassissimo costo</strong>.</li><li>Viene stabilita <strong>una sola connessione per server</strong> e quella connessione rimane aperta fino a quando il sito è aperto su browser, quindi si hanno, meno richieste per server e quindi un tempo di connessione inferiore.</li><li>HTTP/2 usa <strong>HPACK</strong>, un formato di <strong>compressione </strong>per trasmettere in modo efficiente i campi <strong>Headers HTTP</strong>.</li><li>Offre nuove funzionalità come la <strong>possibilità di impostare una scala di priorità nelle richieste</strong> a cui viene associata un peso e una dipendenza associata</li><li>Questo protocollo è <strong>davvero troppo facile da impostare</strong> per non usarlo, ha mille funzioni native per ogni tecnologia per attivarlo in poche righe, ad esempio su Nginx si può attivare così:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/293/0*7YfO1vQKZZkR9ESK" /></figure><h3>2.2 Waterfall: L’Ordine di download delle risorse</h3><p>Con il temine waterfall s<strong>i intende l’ordine con cui il browser scarica, analizza e renderizza le risorse della pagina</strong>. Le pratiche per l’ottimizzazione del waterfall sono spesso ignorate e non si da particolare importanza a questo aspetto quando in realtà se la struttura della pagina è ben definita.</p><p><strong>Sviluppare mischiando blocchi di HTML, CSS, JS crea numerosi blocchi nel rendering</strong> della pagina ogni volta che: si passa da una tipologia all&#39;altra; si richiede una risorsa esterna; viene interpretato il codice JavaScript. <br>Con la conseguenza di aumento di latenza tra il momento in cui il contenuto inizia ad essere visibile a quando risulta essere effettivamente (DOMContentLoaded).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/780/0*-fTTUdumDsH1vctj" /></figure><p><strong>Molti Developer suggeriscono di mettere il CSS fondamentale per la pagina nel HEAD della pagina HTML</strong>: personalmente non amo questa soluzione, in quanto mischia il CSS con HTML, la ragione di questa pratica sta nel non dover caricare risorse esterne per iniziare a visualizzare la griglia e elementi fondamentali per la nostra grafica.</p><p><strong>Caricare il CSS importante per prima, poi HTML ed infine JS</strong>: In generale la regola sempre verde è quella di incorporare tutti i nostri fogli di stile (meglio se pochi) nel &lt;head&gt; della pagina, per poi inserire dentro il &lt;body&gt; tutto il nostro HTML, e poco prima della chiusura di questo incorporare i JavaScript, ordinati per importanza. La ragione di questa pratica è quella di mostrare il contenuto con la nostra grafica mentre si attende che tutto il nostro HTML sia stato renderizzato (senza interruzioni) prima di avviare i nostri JS che sicuramente interagiranno con gli elementi della pagina.</p><p><strong>Utilizzare async/defer per i tag script JavaScript</strong> non necessario da subito in quanto questo genere di codice è parser-blocking cioè quando il browser inizia a renderizzare HTML ed incontra uno script, sospende tutte le operazioni di lettura e rendering per poter eseguire il JavaScript. Per ridurre i blocchi possono essere utilizzati questi due attributi. In particolare:</p><ul><li><strong>async</strong>: Lo script è caricato in modo asincrono e quando è pronto il parsing di HTML viene messo in pausa per eseguire lo script, quindi si riprende con il task precedente.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*QDyZqJMai19zv2zM.png" /><figcaption>Script caricato con async</figcaption></figure><ul><li><strong>defer</strong>: Lo script è caricato in modo asincrono e viene eseguito solo dopo che il parsing di HTML è completamente finito. Il vantaggio rispetto a mettere un JavaScript sul finire del &lt;body&gt; è che, sebbene l’esecuzione avvenga in entrambi i casi dopo il parsing di HTML nel caso di defer lo script è stato scaricato in parallelo all’analisi del codice HTML risultando più veloce.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Xrjs1OaNIfrRMEy6.png" /><figcaption>Script caricato con defer</figcaption></figure><h3>2.3 <strong>Velocità percepita</strong></h3><p>La velocità percepita <strong>è la misura di quanto veloce</strong> le persone pensano <strong>sia il tuo sito</strong>, che in molti casi è più importante della reale velocità.</p><p>Facendo studi sull&#39;esperienza di navigazione si è notato come si faccia molto più caso alle emozioni che il sito ci fa provare durante il caricamento rispetto a quello che realmente succede: un sito che carica 2 in secondi può risultare molto più lento di un competitor che impiega il doppio del tempo se questo adotta alcune pratiche per distrarre l’utente e fargli credere che qualcosa stia accadendo.</p><blockquote>Le persone fanno molto più caso a cosa provano durante la navigazione rispetto a quello che sta realmente accadendo</blockquote><p>Infatti il <strong>white screen è un’esperienza frustrante per l’utente</strong>, <em>soprattutto da mobile</em>, e lo porta a credere che il sito non sta rispondendo o che non funzioni.</p><p>Per migliorare l’esperienza dell’utente uno degli stratagemmi più usuali è quello di sfruttare l’effetto specchio-in-ascensore: infatti gli specchi di solito vengono appesi vicino agli ascensori, in modo da dare alle persone qualcosa da fare mentre aspettano che le porte si aprano, è risaputo infatti che fare o osservare qualcosa durante un’attesa distorce la nostra percezione del tempo facendo pensare che ne sia passato di meno. Ecco alcune buone pratiche:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x1j3ipRK8r5R-Jcysvni6A.png" /><figcaption>Gli <strong>Skeleton Screens</strong> su <a href="https://www.motorsquare.eu/">Motorsquare.eu</a></figcaption></figure><p><strong>Usare gli Skeleton Screens </strong>è una buona pratica quando si realizza una applicazione web in cui si fruiscono contenuti tramite APIs quella di mostrare nel tempo di caricamento dei blocchi che mostrano un anteprima della struttura che si otterrà una volta conclusa la chiamata al server. Questa pratica ha due vantaggi:</p><ul><li><strong>Evitare il white screen</strong> e far vedere all&#39;utente che il nostro sito sta funzionando e sta attualmente lavorando per servire la sua richiesta.</li><li><strong>Mostrare quale struttura avrà il sito</strong> per evitare sorprese e conseguente abbandono della pagina perché l’utente non trova quello che si aspettava</li></ul><p>Quando si progettano gli skeleton screens, si consiglia in genere di associare un animazione al blocco per aumentare la percezione di dinamicità. In genere questa animazione si muove da sinistra verso destra, movimento che viene percepito più breve di quanto non sia il fade-in-out (opacità) dell’oggetto in loop.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yhLdX9-p2vqdU-1wx0Xopw.png" /><figcaption>Instagram è un esempio perfetto di lavoro sulla velocità percepita</figcaption></figure><p>Un altro modo per lavorare sulla velocità percepita è rendere il <strong>sito dinamico ed in costruzione in fase di loading</strong> come avviene su Instagram. Infatti caricare e rendere fruibile il contenuto nel tempo da un feedback positivo all’utente che può iniziare a navigare e porre l’attenzione sul contenuto che di volta in volta viene reso disponibile. In quest’ottica <strong>è necessario fare uso del lazy loading</strong> e assegnare una priorità al contenuto da scaricare come fa ad esempio medium che rende disponibile per primo il contenuto above the fold.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/658/1*7KnUJaLc1d4a8RYs5XyVGQ.png" /><figcaption>Medium carica il contenuto in modo dinamico.</figcaption></figure><h3>Conclusione</h3><p>Con questo articolo abbiamo visto come portare l’ottimizzazione al livello successivo, lavorare sul server per sfruttare il nuovo protocollo HTTP2, abbiamo appreso come funziona il parsing ed il rendering del browser e come tratta i diversi tipi di contenuto. Come sia importante lavorare sulle emozioni che i nostri utenti provano durante la navigazione.</p><p><strong>Nel possimo articolo</strong> vedremo come impostare i <strong>service worker</strong> per sfruttare il <strong>pre-caching</strong> e le funzionalità per <strong>navigare offline</strong>. Inoltre parleremo di <strong>Performance budget </strong>e del <strong>costo dell’uso del JavaScript</strong>. <br><strong>Stay tuned</strong>!</p><p><strong>Questo articolo fa parte di una serie:</strong></p><ul><li>L’arte di ottimizzare i siti web — <strong>Parte 1 — Entry Level</strong>: <a href="https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be">https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be</a></li><li>L’arte di ottimizzare i siti web — <strong>Parte 2 -Medium Level</strong>: <a href="https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-2-medium-level-f48fb45fb202">https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-2-medium-level-f48fb45fb202</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f48fb45fb202" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’arte di ottimizzare i siti web - Parte 1]]></title>
            <link>https://ilasw.medium.com/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/328378f8a9be</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[italiano]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Wed, 23 Jan 2019 13:33:20 GMT</pubDate>
            <atom:updated>2019-02-15T17:21:20.304Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oeFoHHPPegt_mZE0" /><figcaption><strong>304 — NOT MODIFIED @ DevFest Catania 2018</strong></figcaption></figure><p>Dal 14 al 16 Dicembre 2018 a Catania si è tenuta la Dev Fest, un evento targato Google in cui si trattano tramite talk, workshop, hackathon argomenti da Developer, magari inerenti al mondo del colosso della ricerca. In questa occasione ho preparato un talk su come ottimizzare progetti web, qui lascio la trasposizione in articolo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*P_i0JLIItwvm_FVywucUZQ.png" /></figure><p>Partiamo dal fatto che la maggior parte dei servizi ad oggi disponibili sono fruibili online. <strong>Il problema è che non tutti hanno a disposizione una rete 5G e l’ultimo modello di iPhone</strong> per navigare e fruire questi servizi; <strong>questo comporta avere un tempo medio di caricamento intorno ai 15 secondi</strong> (fonte Google 2016) <strong>ed un tasso di abbandono del 53% per i domini che mostrano 3 secondi o più di white screen</strong>.</p><p>Come fare a rimediare a questa fuga di massa dai nostri progetti online? <strong>La soluzione è semplice</strong>: <strong>Scrivere codice ottimizzato ed efficace. Facile, no?</strong></p><h3>Lo stato dell’arte dei nostri siti</h3><p>Facendo una rapida analisi dei siti maggiormente visti in italia secondo SEMrush scopriamo come l’ottimizzazione viene valutata poco nei team di sviluppo di queste aziende, che fanno del web una parte importante del loro business. Un esempio viene dato dai siti di bmw.it o mediasetplay.mediaset.it dove non vengono usate le principali e basilari regole per velocizzare il tempo di caricamento del sito.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1014/1*0kUcUej0J2s1B96a1v6cHw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1003/1*yZ7cIV0EKa56vWS4amSg9g.png" /></figure><h3>Cosa significa aumentare le performance</h3><p>Molte volte ottimizzare un sito web sembra un’attività inutile e si preferisce dedicare effort verso attività più “produttive” per l’azienda, ma in rete sono disponibili molti dati ed esempi su come rendere un sito più velocemente fruibile influenza anche altre KPI (Key Performance Indicator).<br>Un ottimo spunto ci viene fornito da Google tramite la piattaforma <a href="https://developers.google.com/web/fundamentals/">Web Fundamentals</a> dalla quale prendiamo giusto quale esempio.</p><h4>Ridurre il bounce rate</h4><p>Il sito <a href="https://www.cookfood.net/">COOK</a> dopo aver ridotto il tempo di caricamento del sito di 850ms (meno di un secondo) ha ridotto il bounce rate del 7%, quindi le persone erano più propense ad esplorare il sito a parità di design ed abbandonavano meno dopo aver visto per poco solo la home.</p><h4>Aumentano gli utenti e le interazioni</h4><p>A volte non serve neanche migliorare davvero le performance del sito ma lavorare su elemento psicologici per aumentare il modo in cui i nostri utenti interagiscono con il sito: è il caso di <a href="https://www.pinterest.it/">Pinterest </a>che ha aumentato le registrazioni e l’uso della ricerca del 15% quando hanno ridotto il “tempo di attesa percepito” del 40% (scopriremo dopo come farlo).</p><h4>Aumentano le conversioni</h4><p>Migliorare la fruibilità del sito significa anche vendere di più e lo dimostra <a href="https://www.autoanything.com/">AutoAnything</a> che quando ha investito nello sviluppo per dimezzare il tempo di caricamento del sito ha riscontato un boost del 12–13% sulle vendite del loro ecommerce.</p><h3>Ottimizzazione: Entry Level</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aPkbhvGK5xn12lLBJRY2fg.png" /></figure><p>Quali sono i primi passi per ottimizzare un sito web? Cerchiamo di vederlo tenendo il livello accessibile anche a non esperti.</p><h4>1.1 Rimuovi il superfluo</h4><p>In ogni progetto in fase di sviluppo sono presenti librerie esterne capita molto spesso che mettiamo un sito in produzione senza prima scremare tutto il codice che non serve. La prima regola per alleggerire la nostra code base è quindi togliere tutto quello che non ci serve.</p><p><strong>Alcune regole:</strong></p><ul><li><strong>Ogni risorsa ha un effettivo valore?</strong> es. Non ha senso usare Bootstrap tutte le volte, se dobbiamo sviluppare una semplice landing page o un login con i social forse bisognerebbe pensare di non usarlo.</li><li>Se proprio non possiamo farne a meno <strong>possiamo usare la risorsa/libreria prendendo solo quello che ci serve</strong>? Per esempio posso importare solo le griglie/mixins di Bootrap per avere un boost istantaneo alla produttività!</li><li>Magari qualche risorsa è utile al progetto, ma sarebbe possibile riscrivere una parte del codice per alleggerire il tutto, un buon esempio potrebbe essere quello di rimuovere JQuery (Come ha già fatto GitHub) ed usare le nuove API del browser per gestire il DOM.</li><li>In generale cerchiamo di mischiare librerie che hanno parzialmente o totalmente la stessa funzionalità, jQuery in compagnia di Librerie/Framework JavaScript come VueJS, React, Angular risulta davvero superfluo. (Si non le mando a dire a jQuery)</li></ul><h4>1.2 Minifica il resto</h4><p>La compressione lato server delle nostre risorse è un ottimo stratagemma per servire un contenuto leggero senza perdere qualità.</p><p><strong>Alcune regole:</strong></p><ul><li><strong>Minifica HTML, CSS, JS</strong>: è gratis, i file si possono comprimere direttamente durante la fase di sviluppo senza passare da tool diversi da quelli che usiamo già (WebPack, parceljs, gulp) e possiamo risparmiare anche il 25–30% sulle risorse statiche.</li><li><strong>Abilita la compressione GZIP</strong> per risparmiare fino al 70% di spazio, è largamente supportata e non crea problemi, per evitare rallentamenti dovuti alla compressione on demand possiamo pre-comprimere tutto il nostro codice configurando in pochi passaggi il server.</li></ul><h4>1.3 Gestione dei media: Immagini e Video</h4><p>Immagini e video rappresentano la maggior parte dei dati che passano dai nostri server, ottimizzare questo aspetto migliorerà di molto le prestazioni.</p><p><strong>Alcune regole:</strong></p><ul><li>Le immagini devono a<strong>vere sempre i tag richiesti di fallback</strong> “alt” in modo tale da permettere a chi è dotato di una scarsa connessione di iniziare a capire che tipo di contenuto sarà fruibile nella pagina (e Google apprezzerà in ottica SEO).</li><li><strong>Caricare media della dimensione giusta</strong>: quante volte carichiamo immagini enormi perché non si sa mai? Meglio più grande in fondo no? Beh, non proprio, alcune immagini sono troppo grandi e si potrebbero ottimizzare con la compressione e servendole con la giusta dimensione.</li><li>Se vengono scaricati troppi mediaperché non pensare di <strong>implementare il tanto amato lazy loading</strong>?</li><li><strong>Comprimi immagini e video,</strong> usa i Video al posto delle GIF, stesso peso, qualità maggiore: Se impostiamo il loop ed il muted nessuno troverà la differenza!</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/484/1*NLEYcKSjVEECIUMugHs48w.png" /></figure><ul><li><strong>WebP </strong>è il formato del futuro, è sviluppato da Google per le immagini sul web ed <strong>offre a parità di qualità un peso del 25–30% inferiore</strong>!</li></ul><h4>1.3.1 Immagini reattive</h4><p>In ogni sito web ci sarà probabilmente un’immagine che a seconda della risoluzione dello schermo occupa una larghezza diversa all&#39;interno della pagina, ora qui nascono due problemi: <br>1) scaricare un immagine grande perfetta per la visuale desktop sarà uno spreco per un dispositivo mobile che in media ha 400px di width; <br>2) le immagini desktop normalmente hanno una visuale orizzontale, quelle mobile per mantenere una buona visibilità dovrebbe avere un orientamento verticale.</p><p>Ora se vogliamo mostrare una immagine identica, ma più grande o più piccola in funzione del dispositivo non possiamo usando le immagini standard, che permettono solo di puntare a un singolo file sorgente.<br>Ma con HTML 5 possiamo usare gli attributi <strong>srcset</strong> e <strong>sizes</strong> per fornire diversi url di immagine addizionali per far scaricare un immagine adeguata al device:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/1*kbMMS3R43jo32BQ8jj8zeA.png" /><figcaption>Reactives images in HTML5</figcaption></figure><p><strong>Come funziona:</strong></p><ul><li>Il browser verifica della larghezza del suo dispositivo</li><li>Calcolo di quale sia la condizione tra la lista dell’attributo <em>sizes </em>ad essere vera</li><li>Vede quale slot occupa l’immagine da <em>media queries</em>.</li><li>Caricamento dell’immagine elencata nell’attributo <em>srcset </em>che più si avvicina alla dimensione della posizione (slot) scelta</li></ul><h4>1.4 Sfruttare la cache</h4><p>Grandi file hanno bisogno di molto tempo e banda per il download, evitiamo di riscaricarli ogni volta. Per ogni file attualmente si fa una richiesta al server, più richieste si fanno al server più questo sarà carico di lavoro, con la cache lo teniamo leggero e pronto a lavorare per cose più importanti.</p><p><strong>Alcune regole:</strong></p><ul><li><strong>Leverage browser caching</strong>: si utilizza per le risorse statiche e permette quando qualcuno visita la pagina di un sito, di scaricare dal server i file del tipo indicato salvandone una copia nel browser per evitare di scaricarle di nuovo se si dovesse tornare in quella pagina. è semplice da implementare, ecco un esempio per Apache:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/493/1*vwGm95QSoiTLV8E1zemKgQ.png" /></figure><ul><li><strong>Local Databases</strong>: Se stiamo sviluppando una web app che usa un dataset che non cambia molto spesso perché non provare a salvare una copia di questi dati direttamente nel nostro browser? Sebbene siano largamente supportati dai browser ci sono molte librerie che si possono trovare online per rendere semplice lo sviluppo e l’interazione con il database, oltre al supporto cross browser.</li></ul><h4>1.4.1 PouchDb: Local DB</h4><p>Il local database che ho personalmente usato con cui mi sono trovato davvero bene è <a href="https://pouchdb.com/">PouchDb</a>, è semplice da installare e funziona bene quasi dappertutto, inoltre c’è la possibilità di sincronizzare i dati con un nostro db online ogni tot.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Hzmih2jNTDT3wQ8ywBcpng.png" /><figcaption>PouchDb un ottimo Local Database cross browser</figcaption></figure><p><strong>Come funziona:</strong></p><ul><li>NoSQL e JavaScript ready, se avete usato MongoDb sarà come tornare a casa, non dovrete imparare nulla.</li><li>Scarica i dati e salvali in locale per non fare chiamate ridondanti</li><li>Hai a disposizione le classiche operazioni CRUD (create, read, update, delete) tramite libreria usando delle API simili a Firebase / Mongoose</li><li>Possibilità di sync con database online con <a href="http://couchdb.apache.org/">CouchDb</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/465/1*j4rTE2hmgMiNOXgVIZgd6w.png" /></figure><h3>Conclusione</h3><p>Abbiamo imparato come ottimizzare un sito web possa essere importante per aumentare la platea, le conversioni ed i guadagni. Attraverso alcune semplici tecniche possiamo ottenere dei risultati straordinari, e le usiamo in fase di sviluppo possiamo anche “ottimizzare” i tempi.</p><p>Ora non abbiamo davvero più scuse per lasciare i nostri siti web in balia delle brutte abitudini! Noi ci rivediamo presto con il proseguo della serie su come ottimizzare i siti web.</p><p><strong>Questo articolo fa parte di una serie:</strong></p><ul><li>L’arte di ottimizzare i siti web — <strong>Parte 1 — Entry Level</strong>: <a href="https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be">https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-1-328378f8a9be</a></li><li>L’arte di ottimizzare i siti web - <strong>Parte 2 -Medium Level</strong>: <a href="https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-2-medium-level-f48fb45fb202">https://medium.com/@ilasw/larte-di-ottimizzare-i-siti-web-parte-2-medium-level-f48fb45fb202</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=328378f8a9be" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quando i disoccupati non trovano lavoro, ma le aziende non trovano disoccupati.]]></title>
            <link>https://ilasw.medium.com/quando-i-disoccupati-non-trovano-lavoro-ma-le-aziende-non-trovano-disoccupati-446f3db45f86?source=rss-ac08f38310f3------2</link>
            <guid isPermaLink="false">https://medium.com/p/446f3db45f86</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[lavoro]]></category>
            <category><![CDATA[sviluppo]]></category>
            <dc:creator><![CDATA[Luca Pagliaro]]></dc:creator>
            <pubDate>Tue, 18 Dec 2018 22:40:43 GMT</pubDate>
            <atom:updated>2021-01-01T18:45:24.341Z</atom:updated>
            <content:encoded><![CDATA[<p>Viviamo in un periodo pieno di paradossi. Per me il peggiore per la mia terra è quello del lavoro: abbiamo datori che non trovano lavoratori e disoccupati che non trovano lavoro.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*msNubFGoovowvTa5.jpg" /></figure><h3>Premessa</h3><p>Vivo in <strong>Sicilia</strong>, una terra piena di cultura e tradizioni, che ultimamente è <strong>tristemente nota per il fenomeno migratorio dei giovani</strong> che volano via ogni anno in cerca di lavoro all’estero.</p><p><strong>Qui non c’è un futuro lavorativo per loro. </strong>Secondo una rilevazione del 2017 la Sicilia è nella top 10 delle regioni europee per <strong>la disoccupazione giovanile</strong> (ossia chi tra i 15 e i 24 anni non studia e non lavora) che qui <strong>si attesta al 52,9%</strong>. Riassumendo <strong>ogni anno parte un quantitativo di giovani che basterebbe a formare un paese (10.000+) mentre chi resta ha una probabilità su due di finire a casa a non far nulla</strong>.</p><p>Enrando nel particolare vivo <strong>nella città di Catania, che se dovesse essere rappresentata con una sindrome </strong>sicuramente <strong>sarebbe</strong> quella della <strong>personalità multipla.</strong> Qui abbiamo una delle più grandi università del sud, insieme ad una popolazione che non sa cosa sia l’educazione; abbiamo uno degli aeroporti internazionali più trafficati d’Italia, ma la maggior parte dei cittadini non parla inglese; <strong>si trova in una regione retrograda, ma ospita un buon ecosistema tecnologico-imprenditoriale</strong> tra multinazionali che da sempre investono nel territorio (Enel, Tim, ecc..), eccellenze tecnologiche come STMicroelectronics, università ed accademie, acceleratori di imprese.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*GGClj3U2gB4LSuah.jpg" /></figure><p><strong>Io di mestiere faccio lo sviluppatore</strong> e non passa giorno in cui non ringrazio per avere la passione per la programmazione che mi ha permesso di entrare <strong>in questo mondo</strong> fin da giovanissimo, mondo in cui vuoi o non vuoi <strong>è difficile, ad oggi, rimanere senza un lavoro</strong>.</p><p>Sembra strano eh? <strong>Ma in un posto in cui una persona su due non trova lavoro c’è un mestiere per cui trovare dei professionisti disoccupati è praticamente impossibile</strong>. Anzi, al contrario, ci sono aziende che lottano tra loro per ottenere quei pochi programmatori che sono disponibili su piazza, rimanendo la maggior parte delle volte a bocca asciutta.</p><p>Quando mi sono diplomato<strong> ho frequentato un corso</strong> <strong>presso un’azienda di Acireale</strong>, che tramite vendite online fattura diversi milioni ogni anno, per diventare uno sviluppatore WordPress (un sistema per la gestione dei blog online). Questo corso è durato più di un mese e per noi partecipanti era <strong>totalmente gratuito</strong> ed è stato <strong>realizzato per poter formare persone</strong> che potessero essere assunte in azienda <strong>dato che in Sicilia non erano presenti sviluppatori</strong> formati per lavorare su questo software.</p><p>Questo accade perché il mondo delle imprese, grazie al digitale, si evolve ad una velocità impressionante e per fortuna c’è un ecosistema che favorisce la nascita di imprese che corrono sui binari dell’innovazione, un tipo di rotaia dove non è presente l’attrito del contesto sociale. Qui valgono le potenzialità dei singoli di aprirsi ad un mercato affamato di competenze e desideroso di trovare nuovi prodotti per migliorare la vita delle persone.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*LxRpg0KBcWwO8qRk.jpg" /><figcaption>Tic Tac, siamo in ritardo!</figcaption></figure><p><strong>Ma questa è una storia di paradossi e non di favole dal lieto fine</strong> e se ci sono tante aziende che vorrebbero assumere per competere nel mercato digitale globale, ci deve pur essere un problema no? <strong>Il problema è che più del 40% delle aziende digitali in Italia non riesce a trovare persone da assumere per i ruoli cercati;</strong> che qui non ci sono persone preparate per svolgere i nuovi lavori richiesti; qui se parli di Social Media o di Data Analyst la maggior parte delle persone crede si tratti di una supercazzola.</p><p><strong>Allora ti arrabbi perché la tua azienda vorrebbe crescere e contribuire alla rinascita di un territorio che senza giovani rischia di morire e non trova persone da assumere.</strong> Ma allo stesso tempo molti dei tuoi coetanei sono volati via in cerca di fortuna e molti altri sono fermi in un impasse del non-lavoro.</p><p><strong>Guardandoci indietro ci deve essere stato un momento in cui qualcosa si è rotto, un momento in cui si è smesso di guardare al futuro e ci si è fossilizzati solo nel presente.</strong> Perché le persone non sanno che c’è un mondo del lavoro nel campo del digitale? Perché non ci sono persone preparate per accedervi? Che ruolo giocano le università e le istituzioni in questo campo?</p><p>Non tocca a me rispondere, ma una cosa mi preme, se stai leggendo questo piccolo sfogo sappi che <strong>ci sono alcune community ed aziende</strong> in questa città come in altre <strong>che hanno voglia di fare</strong>, così come tanti giovani, <strong>cerchiamo di non far spegnere un fuoco che sta cercando di divampare</strong>.</p><h4>Update</h4><p>Dopo la scrittura di quest’articolo ho co-fondato, nel 2019, con altri giovani <a href="https://www.thewavestudio.it/">The Wave Studio</a> che vuole essere un’isola felice per chi vuole mettere in pratica le proprie competenze in un’ambiente sereno e amichevole, per cui puoi sentirti libero di contattarci se vuoi conoscere meglio la nostra realtà.</p><p>Lascio anche qualche altro riferimento per la mia città:</p><ul><li><strong>Startup Catania</strong>, pagina che tratta di eventi legati al mondo statup/digitale nella nostra città: <a href="https://www.facebook.com/startupcatania/">https://www.facebook.com/startupcatania/</a></li><li><strong>Youth Hub</strong>, community in cui giovani appassionati d’innovazione e con un forte spirito imprenditoriale si incontrano per condividere, sviluppare, e realizzare le proprie idee.: <a href="https://www.facebook.com/youthhubcatania/">https://www.facebook.com/youthhubcatania/</a></li><li><strong>Google Developer Group</strong>, Sostiene ed anima una community di appassionati di informatica, vita digitale e tecnologie Google in cerca di un ambiente sano dove poter crescere ed esprimere se stessi nel nome della condivisione e dell&#39;aiuto reciproco: <a href="https://www.facebook.com/gdgcatania/">https://www.facebook.com/gdgcatania/</a></li><li><strong>TIM WCAP</strong>, acceleratore di startup e spazio per l’innovazione, ospita eventi inerenti al mondo dell’innovazione: <a href="https://www.facebook.com/groups/454645481297154/">https://www.facebook.com/groups/454645481297154/</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=446f3db45f86" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>