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 il giusto livello di teoria e tantissime sessioni di coding. Lavoreremo con TypeScript.

Obiettivo del corso: capire in modo semplice e pragmatico come applicare concretamente tecniche e principi di pure functional programming sfruttando Typescript.

Target audience

Il workshop si rivolge a software developer professionisti, sia nel Back-end che nel Front-end, con un livello di esperienza medio/alto con linguaggi mainstream tipizzati come Java/Kotlin/C#, e ovviamente TypeScript, e che siano già entrati in contatto con il mondo funzionale (e concetti come 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 i 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
  • costruzione di un’applicazione completa con infrastruttura, dominio e testing.

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 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 – Learning Objectives

  • Mettere in pratica i concetti di Functional Programming
  • Definire i vincoli di dominio grazie all’uso del type system
  • Scegliere se e quali Monad utilizzare per uno specifico use case
  • 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 Typescript o un particolare framework/libreria!

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!

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.

Linguaggio di programmazione – TypeScript

Useremo Typescript (TS) come linguaggio di programmazione con il supporto delle librerie:

Per partecipare a questo corso è richiesta una conoscenza intermedia di TypeScript. I partecipanti devono avere familiarità con:

  • tool chain tsc, ts-node, ts-jest, npm/yarn, ecc.
  • primitive types: string, number, any, Array, ecc.
  • define custom type alias e interface
  • spread operator and destructuring
  • the many ways to define a function
  • use high-order functions (come array map or filter)
  • union, literal and tagged union types
  • type narrowing
  • generic types and functions.

Un buon punto di partenza è la lettura del libro, gratuito e disponibile online, Typescript Handbook (https://www.typescriptlang.org/docs/handbook/intro.html).

Requisiti tecnici

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

  • Git (ed eventuali client grafici) per effettuare il clone del repository (https://github.com/doubleloop-io/applied-fp-workshop-ts) o di un suo fork.
  • NodeJs, una versione LTS sia della serie 18.x che 20.x.
  • Una versione recente di NPM oppure Yarn,
  • un IDE, come WebStorm oppure un editor come Sublime, Visual Studio Code, Vim o Emacs con i relativi plugin/language server protocol installati.

F.A.Q.

Sono previsti requisiti minimi per poter partecipare a questo corso?
È richiesta una conoscenza intermedia di TypeScript. Vedi il paragrafo Linguaggio di programmazione – TypeScript per maggiori informazioni.

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 di TypeScript. Vedi il paragrafo Linguaggio di programmazione – TypeScript per maggiori informazioni.

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, Scala.

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 un buon livello di conoscenza di TypeScript. Vedi il paragrafo Linguaggio di programmazione – TypeScript per maggiori informazioni.

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 TypeScript sia sufficiente per un’efficace fruizione del corso. Iniziamo a mettere le mani in pasta da prima del corso. :-)

Da dove partire? Vedi il paragrafo Linguaggio di programmazione – TypeScript per maggiori informazioni.

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! Ti interessa questo corso? Acquista il biglietto entro lunedì 6 maggio 2024 per aiutarci a confermarlo quanto prima.
Se entro questa data 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.
Se il corso sarà confermato, vedrai una spunta verde su questa pagina che dice “confermato/guaranteed to run”, e potrai comprare i biglietti anche dopo questa data.

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.

Porta il corso in azienda

Contattaci utilizzando il form in fondo alla pagina per chiedere informazioni sull’erogazione in forma privata e personalizzabile del corso Applied Functional Programming.

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

Questo corso è perfetto per chi si avvicina alla programmazione funzionale per la prima volta, Matteo spiega i concetti di Functional Programming in maniera semplice e pragmatica. Da non perdere!Federico Gandellini

Matteo ci ha guidati in un percorso non semplice definendo il perimetro ideale per l’apprendimento, la sperimentazione e l’errore. È riuscito a mantenere il delicato equilibrio fra sfida e confort caratteristico dello stato di flow, in modo da rendere l’esperienza sfidante e coinvolgente.Gianmarco Leone

Il workshop perfetto se vuoi entrare nel mondo del functional programming.Filippo De Pretto

Un corso per chi desidera sfatare il mito secondo cui la programmazione funzionale è difficile: due giornate con Matteo sono sufficienti a mostrare come, al contrario, sia “facile”, una volta adottata la giusta prospettiva, sfruttare le tecniche di FP per scrivere codice più testabile e con meno bug.Pietro Martinelli

Matteo ti porta nel mondo funzionale in maniera semplice e indolore, senza perdersi troppo in teorie matematiche che ci stanno dietro ma passando quasi da subito alla pratica.Jacek Wronski

Workshop strutturato davvero molto bene, adatto a chiunque voglia approcciarsi al mondo della programmazione funzionale e delle monadi, mettendo subito in pratica i concetti appresi.Teresa Signati

Mind changing! Se ti interessa capire cosa siano monadi e funtori e come possano aiutarti a scrivere codice migliore, questo è il corso che fa per te.Leonardo Staffolani

Apprendere i concetti di functional programming per poterli utilizzare in modo proficuo? Con questo corso SI-PUÒ-FA-RE!Manuela Munaretto

Hai letto e studiato parecchio su Functional Programming ma fai fatica a unire i puntini (teoria e “progetti reali”)? Questo workshop crea nella tua testa questo “ponte” e ti accompagna nei primi passi. Sta a te continuare a percorrerlo!Emanuele Rabino

Functional Programming made simple and human.Luca Zulian

Il paradigma funzionale è affascinante ma anche di difficile comprensione nei suoi aspetti più teorici. Questo workshop è perfetto per superare quello scoglio.Marco Damiani

«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 e ambienti tecnologici (web, desktop, embedded, mobile), con una forte attenzione a clean code, design evolutivo ed architettura.

La curiosità e 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.

Blog

Domain-Driven Design meets Functional Programming: Matteo Baglini intervista Scott Wlaschin.

I don’t like complicated code: intervista di Matteo Baglini a Michael Feathers.

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

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

Video

Small Talk: chiacchierata informale con Matteo Baglini (YouTubeSpotify)

Functional Programming: chiacchierata con Matteo Baglini e Gianluca Padovani (YouTubeSpotify)

Onion Architecture with Functional Programming sauce: meetup con Matteo Baglini

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

Meet the Expert con Matteo Baglini.

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!