Avanscoperta
Applied Functional Programming Workshop

Applied Functional Programming Workshop

Tecniche di Functional Programming per risolvere problemi concreti

Abstract

Il corso Applied Functional Programming di Matteo Baglini è strutturato per mettere in pratica la programmazione funzionale. Si rivolge a chi ha già assaggiato questo paradigma e vuole fare un salto in avanti nella sua adozione.

Anche se trattiamo argomenti astratti e matematici, tra cui le famose Monadi, il workshop mantiene un’impostazione estremamente pratica: poche slide e introduzioni, tantissimo codice con varie sessioni di coding. Lavoreremo in Scala.

Obiettivo del corso: capire in modo semplice e pragmatico come applicare concretamente nel day-by-day tecniche e principi di pure functional programming.

Target audience

Il workshop si rivolge a software developer professionisti con un livello di esperienza medio/alto con linguaggi mainstream come Java/C#/JavaScript/TypeScript/PHP e che siano già entrati in contatto con il mondo funzionale (per esempio concetti quali immutabilità, high-order functions, manipolazione di List tramite funzioni di map/filter/reduce/etc).

Faremo uso di concetti considerati avanzati nei suddetti linguaggi di programmazione (come generics), rendendo questo corso non adatto a chi sta iniziando il suo percorso nel mondo della programmazione.

Argomenti

Alcuni degli argomenti che tratteremo:

  • capire l’impatto derivante dal lavorare con la referential transparency
  • progettare grandi sistemi come somma di small composable units
  • modellare comportamenti, vincoli e dati del dominio tramite modules, functions e algebraic data types
  • ottenere una conoscenza delle principali functional structures: Functor, Applicative, Monad, Foldable e Traversable
  • come sopravvivere in un mondo colmo di side-effects.

Programma

Il workshop ha l’obiettivo di fornire ai partecipanti una padronanza pratica dei principali concetti e principi alla base della pure functional programming, per sfruttare al massimo queste tecniche nel quotidiano con il proprio linguaggio di programmazione e stack tecnologico.

Insieme studieremo e utilizzeremo strutture funzionali (ADT, Monad, etc) mentre realizziamo un’applicazione completa seguendo i buoni pattern di design e separazione delle responsabilità.

Ogni sessione è supportata dal codice che verrà scritto durante il workshop lavorando in piccoli gruppi autonomi e rivisto insieme al supporto del trainer.

Agenda

Sessione 1 – Gettiamo le basi

  • Programmazione funzionale – introduzione e benefici
  • Building blocks – modules, functions e algebraic data types.
  • Pattern matching e multiple dispatch

Sessione 2 -Costruiamo una applicazione da zero (parte 1)

  • Introduzione all’applicazione
  • Vediamo i differenti layer architetturali
  • Type-Driven Design del dominio – approccio bottom-up
  • Implementiamo i comportamenti del dominio
  • Micro testing – test del solo dominio.

Sessione 3 – Side-effects

  • Side-effects – come introdurli in un sistema privo di essi
  • Functor e Monad – padroneggiare i combinatori chiave
  • Custom Monad – sviluppo una Monade non built-in da zero
  • Catalogo Monadi – vediamo le differenti semantiche
  • Applicative, Foldable e Traversable – vediamo altri combinatori.

Sessione 4 – Costruiamo una applicazione da zero (parte 2)

  • Esponiamo il dominio tramite infrastruttura
  • Macro testing – acceptance test dell’applicazione
  • Run it – vediamola in esecuzione
  • Wrap up – note finali.

Cosa impareremo

  • Mettere in pratica i concetti di Functional Programming
  • Applicare tecniche di pure functional programming nel day-by-day
  • Un’approfondita conoscenza su diversi concetti ortogonali al linguaggio di programmazione e che potrai sfruttare immediatamente nel tuo attuale stack applicativo
  • Warning: non è un corso per imparare Scala!

Perché partecipare

Con questo workshop potrai andare a fondo sui principi alla base della programmazione funzionale e potrai vivere l’esperienza di sviluppo software in stile funzionale grazie a esercizi, esempi e discussioni in gruppo.

Matteo ti darà gli strumenti per farti valutare in maniera più oggettiva i pro e contro della programmazione funzionale: a te poi la decisione finale sul fare o meno il salto!

Tecnologia

Per partecipare a questo corso è richiesta una conoscenza base di Scala. Basta un minimo di prima di entrare in aula (digitale) per poter poi seguire il workshop senza bloccarsi sulla sintassi del linguaggio.

Buona parte dei partecipanti delle passate edizioni non aveva alcuna conoscenza pregressa di Scala e nessuno ha incontrato difficoltà durante il workshop.

Il miglior modo per prepararti è studiare l’ABC del linguaggio seguendo questi tutorial:

Il workshop prevede che le esercitazioni avvengano sul tuo portatile, quindi avrai bisogno di installare/avere:

Come si svolge

La parola chiave di questo workshop è “pratica”: i momenti di teoria saranno pochi, ma essenziali. Diciamo 30% teoria e 70% pratica.

Costruiamo una applicazione da zero e usiamo le difficoltà che incontreremo via via come leva per introdurre e approfondire i vari mattoncini.

Il corso si svolgerà online e in diretta per un massimo di 12 persone: il docente e tutti i partecipanti saranno in video conferenza e avranno a disposizione una serie di strumenti digitali per interagire tra di loro e lavorare hands-on.

Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo.

Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.
Non sarà un corso passivo, fatto solo di slide e video pre-registrati.

Applicheremo alcuni principi del metodo Training from the back of the room, con prevalenza di attività su lectures.

Infine, la condivisione tra i partecipanti ed il supporto del trainer completano il quadro formativo.

F.A.Q.

Sono previsti requisiti minimi per poter partecipare a questo corso?
È richiesta una conoscenza base di Scala. Basta un minimo di conoscenza prima di entrare in aula (digitale) per poter poi seguire il workshop senza bloccarsi sulla sintassi del linguaggio.

Il miglior modo per prepararti è studiare l’ABC del linguaggio seguendo i link riportati nella sezione “Tecnologia” (vedi sopra).

Livello del workshop: È un workshop per principianti o per esperti?
L’ago della bilancia pende verso “software developer di livello medio/esperto”.
Bisogna avere un buon livello di conoscenza del linguaggio e di concetti dell’OOP come per esempio polimorfismo, interfacce ed ereditarietà e, come detto, una conoscenza base di Scala.

Io programmo in Java/Kotlin/C#/JavaScript/PHP/ecc, come mi può essere utile questo workshop?
A oggi non crediamo esista un linguaggio che non abbia costrutti della programmazione funzionale. In passato, tra i partecipanti abbiamo ospitato programmatori Java, Kotlin, C#, PHP, JavaScript, TypeScript, Erlang, Elixir.

Partecipando a questo workshop ti porterai a casa un’approfondita conoscenza su diversi concetti ortogonali al linguaggio e che potrai sfruttare immediatamente nel tuo attuale stack applicativo.

Ricordati però che, come già detto, è necessario avere una conoscenza minima di Scala per poter partecipare (vedi il paragrafo Tecnologia).

Attività da fare prima del workshop?
10-15 giorni prima del corso, ti saranno inviati alcuni esercizi da completare per assicurarsi che il tuo livello di conoscenza di Scala sia sufficiente per un’efficace fruizione del corso. Iniziamo a mettere le mani in pasta da prima del corso. :-)

Da dove partire? Da qui: https://docs.scala-lang.org/tour/basics.html.

Cosa devo assolutamente avere per potermi iscrivere a questo corso online?
Se possiedi un computer/tablet, una rete stabile (almeno 20 Mbps in download e 10 Mbps in upload), cuffie, microfono e videocamera, allora puoi iscriverti al corso senza problemi. Un paio di settimane prima del corso ti invieremo tutte le informazioni sugli strumenti che useremo e come accedervi.
Per la rete, prova a fare uno Speed Test.
Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo. Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.

N.B.

Invieremo una comunicazione con la conferma del corso agli iscritti 10-15 giorni prima del corso.

Last chance! L’ultimo giorno utile per acquistare il biglietto per questo workshop è  lunedì 29 agosto 2022. Se non raggiungiamo i numeri minimi di partecipanti richiesti per attivarlo, il corso non sarà confermato e verrà posticipato… non aspettare all’ultimo per comprare il tuo biglietto!

Prima raggiungiamo i numeri minimi utili alla sua attivazione, prima saremo in grado di confermare il corso e garantirne l’esecuzione.

Info pratiche sul workshop

Lingua: italiano.
Numero massimo di partecipanti: 12.
Strumenti e postazione: il corso si svolgerà online e in diretta, attraverso l’uso di alcuni strumenti digitali. A iscrizione avvenuta, riceverai tutti i dettagli su come accedere al corso e interagire con il docente e gli altri partecipanti, e su come prepararti al meglio.
È consigliato che ciascun partecipante segua il corso dalla sua postazione: è preferibile non condividere il laptop e la stanza con altre persone e colleghi per una migliore esperienza da remoto.

Vuoi saperne di più sui nostri biglietti?

Biglietti

Under_Cover_LearnerSCONTO 20%

Se ti stai iscrivendo al corso a titolo personale e non hai la Partita IVA, c’è una tariffa speciale per te: uno sconto del 20% sul prezzo corrente del biglietto, che potrai ottenere inserendo il codice Under_Cover_Learner su Eventbrite qui sopra, dove trovi "Enter promo code" (prima di premere il tasto "checkout").

N.B.: Il codice non può essere utilizzato con nessun’altra offerta, ed è valido su tutti i tipi di biglietto.

Testimonials

«A journey of a thousand miles begins with a single step». This is the right single one: three days in the Functional Programming trenches. Thank you Matteo, thank you Avanscoperta!Nicola Fiorillo – Software architect and Developer

Se c’è una persona che può trasmettervi la potenza del functional programming, quello è Matteo. Preparato, instanacabile ma al tempo stesso incredibilmente umile.Francesco Strazzullo – Developer at FLOWING

Il corso di cui ancora non sai di avere bisogno!
Daniele Contini – Senior Software Developer at Facile.it

Si leggono moltissimi articoli che provano a spiegare concetti e teorie spesso troppo astratte per chi si sta avvicinando alla programmazione funzionale.
Matteo parte dalle basi teoriche per poi metterti davanti alle situazioni pratiche in cui i concetti di FP si possono finalmente iniziare ad apprezzare.
Una full-immersion guidata dopo la quale non sarai più lo stesso programmatore!Davide Fedrigo – Software Developer

Le risorse per imparare la programmazione funzionale sono tante, e la sola letteratura non ti dà il giusto feedback su quello che stai imparando. Applied Functional Programming è il corso giusto per imparare i concetti base del Functional Programming e come metterli in pratica sotto la guida attenta di un esperto.Felice Pagano

 

Matteo Baglini

Da sempre focalizzato su semplicità e costo del cambiamento in modo da creare codebase che si adattano facilmente alla continua evoluzione del business.

Matteo ha maturato esperienza in molteplici domini ed ambienti tecnologici (web, desktop, embedded, mobile), con una forte attenzione a clean code, design evolutivo ed architettura.

La curiosità ed un costante desiderio di migliorare lo hanno portato a compiere un lungo viaggio fatto di studio e pratica alla scoperta di modi migliori di sviluppare software.

Approfondimenti

Video

Onion Architecture with Functional Programming sauce, talk di Matteo Baglini

Refactoring Legacy Code, intervista a Matteo Baglini con Alberto Brandolini.

Articoli

Let’s Get Functional (Programming)!: Gabriele Lana intervista Matteo Baglini.

I don’t like complicated codeintervista di Matteo Baglini a Michael Feathers.

Come e perché riprendere il controllo di Legacy Code, intervista a Matteo Baglini sul nostro blog.

Chi siamo, in breve :)

Avanscoperta è un ecosistema in espansione fatto di professionisti con una grande passione per l’apprendimento: ci piace imparare cose nuove e scambiare esperienze e idee, esplorando territori finora inesplorati in ambito software, nella sua accezione più ampia possibile.

Selezioniamo con attenzione gli argomenti più rilevanti e i migliori docenti da tutto il mondo, e diamo particolare importanza alle tecniche di insegnamento, preferendo approcci pratici e coinvolgenti.
Unisciti a noi! ?

Ti interessa questo corso?

Se hai delle domande specifiche, o vuoi ricevere maggiori informazioni, scrivici. Saremo felici di risponderti!







    NEWSLETTER

    Vuoi ricevere una volta a settimana i nostri contenuti esclusivi su tecnologia, sviluppo software, business e design?

    ISCRIVITI ALLA NEWSLETTER :-)

    Iscriviti alla newsletter!