Questa frase racchiude uno dei capisaldi delle metodologie agili: la semplicità, eppure ancora oggi come sviluppatori siamo sempre affascinati dalla complessità come se fosse una misura della nostra bravura. WardCunningham insieme a Kent Beck hanno coniato questo principio nel 2004. Nella sessione ripasseremo i principi di extreme programming e (senza vergogna) vi racconterò di alcuni degli approcci e dei pattern che oggi utilizzo per progettare e scrivere le applicazioni.
Liquefied Natural Gas project risk and appraisal HIMADRI BANERJI
Fundamentals of the LNG business value chain and project and risk appraisal. This includes understanding the dynamics of the international LNG market covering the pricing mechanisms, regional and global market drivers, and the behaviour of importing and exporting countries, LNG trade flows, Asian LNG market and indexation mechanisms, various kinds of contracting structure, detailed understanding of derivatives and arbitrage opportunities.
Agile è entrato nel gergo comune di molte aziende che hanno a che fare con progetti IT. Questa è una buona cosa: il termine è conosciuto e accettato come una buona prassi, le persone sono ben disposte ad adottare metodi e pratiche che consentono di migliorare la gestione del ciclo di vita di un prodotto software e sono favorevoli al cambiamento.
Quando però si parte veramente mi sono trovato in diverse situazioni dove Agile si limitava alla parte “persone” e “organizzazione” ma non entrava nel merito di come si sviluppa il codice!
La provocazione “Stop Meeting, Start Coding” vuol ridurre all’essenziale i momenti di confronto e concentrarsi a scrivere buon codice, insieme!
In questo talk presenterò alcune buone pratiche di coding che favoriscono anche l’efficacia organizzativa.
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
Consigli per evitare la distruzione della migrazione culturale verso DevOps. Vedremo un team con "attori" importanti provare a migrare verso buone pratiche e capiremo quanto è difficile arrivare, ma semplice distruggere tutto.
Liquefied Natural Gas project risk and appraisal HIMADRI BANERJI
Fundamentals of the LNG business value chain and project and risk appraisal. This includes understanding the dynamics of the international LNG market covering the pricing mechanisms, regional and global market drivers, and the behaviour of importing and exporting countries, LNG trade flows, Asian LNG market and indexation mechanisms, various kinds of contracting structure, detailed understanding of derivatives and arbitrage opportunities.
Agile è entrato nel gergo comune di molte aziende che hanno a che fare con progetti IT. Questa è una buona cosa: il termine è conosciuto e accettato come una buona prassi, le persone sono ben disposte ad adottare metodi e pratiche che consentono di migliorare la gestione del ciclo di vita di un prodotto software e sono favorevoli al cambiamento.
Quando però si parte veramente mi sono trovato in diverse situazioni dove Agile si limitava alla parte “persone” e “organizzazione” ma non entrava nel merito di come si sviluppa il codice!
La provocazione “Stop Meeting, Start Coding” vuol ridurre all’essenziale i momenti di confronto e concentrarsi a scrivere buon codice, insieme!
In questo talk presenterò alcune buone pratiche di coding che favoriscono anche l’efficacia organizzativa.
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
Consigli per evitare la distruzione della migrazione culturale verso DevOps. Vedremo un team con "attori" importanti provare a migrare verso buone pratiche e capiremo quanto è difficile arrivare, ma semplice distruggere tutto.
La prototipazione è un’attività fondamentale per “capire facendo”. Lo scopo della prototipazione non è costruire partendo da un progetto definito ma, piuttosto, acquisire dati preziosi per essere poi più consapevoli di prendere la giusta direzione. Alla base delle attività di prototipazione ci sono spesso strumenti low code e no code. Esistono ormai da diversi anni e ultimamente stanno guadagnando sempre più attenzione nella community per la loro immediatezza e velocità. Abbiamo definito meglio le loro qualità e le opportunità che ci sono nel loro utilizzo.
Durante il talk abbiamo approfondito perché è importante prototipare e come questa attività migliora i nostri progetti. In particolare, abbiamo approfondito l’utilizzo AWS Step Functions Workflow Studio, strumento low code prodotto da AWS. Workflow Studio ci permette di imbastire una state machine basata su step functions con uno strumento visuale drag & drop che semplifica moltissimo il nostro lavoro. Abbiamo analizzato cosa lo contraddistingue da altri strumenti e quali sono i suoi punti di forza. Infine siamo passati alla pratica facendo una piccola esercitazione con AWS Step Functions.
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Lean Web Solutions with WP [versione italiana]Carlo Beschi
Slide della mia presentazione al Wordcamp Milano 2011 su "Soluzioni web Lean con WordPress"
(http://wordcamp.it/milano2011/thank-god-its-friday-wordcamp-programma-del-27-maggio-2011/)
Come implementare la governance nella vostra piattaforma e lavorare felici se...Giulio Vian
DevOps Conf 2024 - Roma - 10 mag 2024
https://devopsconf.dotnetdev.it
Gli strumenti che usiamo per lo sviluppo e il rilascio sono essenziali per controllare i processi in uso e garantire che soddisfino requisiti aziendali, legali, e regolamentari.
In questa sessione illustrerò come passare da norme (policies) astratte a implementationi su piattaforme come Azure DevOps o GitHub delle stesse così da poter prevenire prima e verificare poi il corretto svolgimento delle operazioni. E diventare amici del direttore Rischi e Audit.
Una primissima introduzione al TDD per chi è a digiuno di test in generale e di TDD in particolare. Usa Java/Junit, ma è facimente adattabile ad altri linguaggi. 40-60 minuti.
Processo EVO: http://www.sketchin.ch/it/blog/design/evo-evolutive-experience-design.html
Presentazione di lancio del nuovo processo di evolutive user experience design effettuata al Method Camp 2011 di Lugano.
È uscita la release 1.0 da pochi giorni e non è chiaro se è una meteora o qualcosa che resterà sul mercato e ritaglierà una fetta della torta...ma proviamo a capire insieme cosa offre questo nuovo runtime per Javascript che vanta maggiore sicurezza rispetto a Node e la possibilità di utilizzare TypeScript...e non solo!
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiMarco Breveglieri
Molti sviluppatori continuano a porsi ancora oggi domande esistenziali, ad esempio "Come posso scrivere codice mantenibile?" oppure "Come posso rendere il codice testabile?". Purtroppo non ci sono keyword, né talismani che possano donare la qualità di essere "buono" al nostro codice senza sforzo, tuttavia è sufficiente rispettare pochi e sani principi di progettazione, detti principi SOLID. In questo webinar vedremo come soddisfare tali principi e scrivere "buon codice" con Delphi, rendendolo stabile, mantenibile, estensibile, comprensibile e scalabile, aprendo nel contempo la porta ad altri scenari visti talvolta con diffidenza, come il Testing, che diverranno così semplici e addirittura automatici.
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
Talk Italian Agile Day 2019: come far crescere una piccola azienda tenendo fede ai principi su cui e' stata fondata.
CodicePlastico nasce nel 2009 come piccola azienda di consulenza, oggi con quasi 20 persone nel team affronta la consulenza software con gli stessi valori su cui e' nata.
La prototipazione è un’attività fondamentale per “capire facendo”. Lo scopo della prototipazione non è costruire partendo da un progetto definito ma, piuttosto, acquisire dati preziosi per essere poi più consapevoli di prendere la giusta direzione. Alla base delle attività di prototipazione ci sono spesso strumenti low code e no code. Esistono ormai da diversi anni e ultimamente stanno guadagnando sempre più attenzione nella community per la loro immediatezza e velocità. Abbiamo definito meglio le loro qualità e le opportunità che ci sono nel loro utilizzo.
Durante il talk abbiamo approfondito perché è importante prototipare e come questa attività migliora i nostri progetti. In particolare, abbiamo approfondito l’utilizzo AWS Step Functions Workflow Studio, strumento low code prodotto da AWS. Workflow Studio ci permette di imbastire una state machine basata su step functions con uno strumento visuale drag & drop che semplifica moltissimo il nostro lavoro. Abbiamo analizzato cosa lo contraddistingue da altri strumenti e quali sono i suoi punti di forza. Infine siamo passati alla pratica facendo una piccola esercitazione con AWS Step Functions.
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Lean Web Solutions with WP [versione italiana]Carlo Beschi
Slide della mia presentazione al Wordcamp Milano 2011 su "Soluzioni web Lean con WordPress"
(http://wordcamp.it/milano2011/thank-god-its-friday-wordcamp-programma-del-27-maggio-2011/)
Come implementare la governance nella vostra piattaforma e lavorare felici se...Giulio Vian
DevOps Conf 2024 - Roma - 10 mag 2024
https://devopsconf.dotnetdev.it
Gli strumenti che usiamo per lo sviluppo e il rilascio sono essenziali per controllare i processi in uso e garantire che soddisfino requisiti aziendali, legali, e regolamentari.
In questa sessione illustrerò come passare da norme (policies) astratte a implementationi su piattaforme come Azure DevOps o GitHub delle stesse così da poter prevenire prima e verificare poi il corretto svolgimento delle operazioni. E diventare amici del direttore Rischi e Audit.
Una primissima introduzione al TDD per chi è a digiuno di test in generale e di TDD in particolare. Usa Java/Junit, ma è facimente adattabile ad altri linguaggi. 40-60 minuti.
Processo EVO: http://www.sketchin.ch/it/blog/design/evo-evolutive-experience-design.html
Presentazione di lancio del nuovo processo di evolutive user experience design effettuata al Method Camp 2011 di Lugano.
È uscita la release 1.0 da pochi giorni e non è chiaro se è una meteora o qualcosa che resterà sul mercato e ritaglierà una fetta della torta...ma proviamo a capire insieme cosa offre questo nuovo runtime per Javascript che vanta maggiore sicurezza rispetto a Node e la possibilità di utilizzare TypeScript...e non solo!
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiMarco Breveglieri
Molti sviluppatori continuano a porsi ancora oggi domande esistenziali, ad esempio "Come posso scrivere codice mantenibile?" oppure "Come posso rendere il codice testabile?". Purtroppo non ci sono keyword, né talismani che possano donare la qualità di essere "buono" al nostro codice senza sforzo, tuttavia è sufficiente rispettare pochi e sani principi di progettazione, detti principi SOLID. In questo webinar vedremo come soddisfare tali principi e scrivere "buon codice" con Delphi, rendendolo stabile, mantenibile, estensibile, comprensibile e scalabile, aprendo nel contempo la porta ad altri scenari visti talvolta con diffidenza, come il Testing, che diverranno così semplici e addirittura automatici.
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
Similar to The simplest thing that could possibly work (20)
Talk Italian Agile Day 2019: come far crescere una piccola azienda tenendo fede ai principi su cui e' stata fondata.
CodicePlastico nasce nel 2009 come piccola azienda di consulenza, oggi con quasi 20 persone nel team affronta la consulenza software con gli stessi valori su cui e' nata.
An introduction to a possible implementation of CQRS/ES architecture for a Ruby on Rails app. It starts from Domain Model to arrive to a sample app that implements the Event Sourcing pattern. This presentation was part of Wroclove_rb 2014 conference in Wraclow (PL)
1. The simplest thing that could possibly work
Emanuele DelBono - CodicePlastico
2. Cos’è il codice “semplice”?
/
/
OrderController
public IEnumerable<OrderRes> GetOrders(int orderId)
{
return _dbGateway.Execute<OrderRes>("SP_GET_ORDER", orderId);
}
3. Disclaimer
● Tutto quello che dico può essere giusto e condiviso ma anche sbagliato e
discorde dalle vostre opinioni, tutto dipende dal contesto, dai gusti e dalla
vostra esperienza. ☮💙
● L’obbiettivo di un team agile è consegnare software funzionante
7. E’ facile scrivere codice semplice?
Simplicity and elegance are unpopular because they require hard work and
discipline to achieve and education to be appreciated
(Edsger W. Dijkstra)
8. Cos’è il codice “semplice”?
● Facile da leggere
● Facile da capire
● Facile da cambiare e mantenere (o da cancellare)
9. Cos’è il codice “semplice”?
Assert.That(x).Should().Be().Greater().Than(42)
25. The hello world
public static class Program
{
public static void SayHello(ISettingReader sr, IMessageComposer mc)
{
var message = sr.Get("MESSAGE");
var formattedMessage = mc.CreateMessage(new Capitalizer());
var printer =
PrinterFactory.createPrinter(sr.Get("CONFIGURED_PRINTER"));
printer.print(formattedMessage);
}
}
33. Alternative?
● Se è davvero solo CRUD: Rails/Django/Phoenix
● Oppure (CQS)
○ Separare lettura e scrittura (stesso db)
○ Salvare sempre tutti gli eventi
○ Salvare lo stato sul db
40. Framework
● Non sempre semplificano
● Rendono il codice meno flessibile
● La magia (metaprogrammazione, macro, AOP, mixin, classi base) rende il
codice complesso da capire
● Disaccoppiare con ACL
● Preferire librerie a framework
45. Idee dall’FP: Funzioni pure e strutture dati immutabili
● Idee dalla programmazione funzionale
● Funzioni pure senza side effect
● Strutture dati immutabili
● High order function
46. I buoni vecchi principi
● DRY
● KISS
● OCP
● YAGNI
● SOLID or CUPID
● Composition over inheritance
● Be explicit
47. Approccio Prototipo/MVP
● Scrivere codice come se non ci fosse un domani
● Soluzioni quick&dirty per arrivare al risultato
● Validare il risultato
● Buttare e ricominciare
48. Test Driven Development Write
a failing
test
Make
the test
pasS
Refactor
Il TDD è Lo strumento
per scrivere codice semplice.
Obbliga a pensare cosa devi fare.
Focus su uno scope ridotto.
49. Le regole
● Non si può scrivere codice nuovo applicativo a meno che lo si faccia per
far diventare verde un test
● Non si può scrivere più di uno unit test che fallisce (gli errori di
compilazione sono fallimenti)
● Non è consentito scrivere codice di produzione non necessario a superare
l'unico test rosso
50. test "Scan empty code should return 0" do
assert Checkout.scan("")
=
=
0
end
defmodule Checkout do
def scan(_code) do
0
end
end
51. Test Driven Development
○ Un test difficile da scrivere è indice di complessità del codice che
dovrà testare
○ Troppo setup
○ Troppe dipendenze
○ Test poco parlante
52. Test Driven Development
○ Ragioni da utente in modo dichiarativo
○ Favorisce l’ortogonalità delle dipendenze
○ Non scriviamo mai codice inutile
○ Il design emerge un po’ alla volta
○ Accorcia feedback loop
○ I test fanno da documentazione
53.
54.
55.
56. 4 rules of simple design
● Test Pass
● Express intent
● No duplication
● Small
57. As simple as possible, but no simpler. (Einstein)