Si prevede che nel 2022 il 40% dello sviluppo di applicazioni software sia co-sviluppato insieme ad una intelligenza artificiale (sorgente Gartner 2019).
Ci pensate? Come sarà sviluppare in pairing? Saremo più produttivi? Faremo meno errori? Il codice sarà più pulito? La gestione dei feature toggle sarà più semplice? I rilasci saranno ancora più semplici?
Immaginate fare ping-pong programming con la vostra intelligenza artificiale personale, quanto sarebbe motivante e divertente scrivere codice. E se applichiamo TDD potremmo arrivare ad un livello di clean code mai visto. Anche le persone meno esperte potrebbero imparare a sviluppare in modo pulito ed efficace.
In questa mezz’ora voglio esplorare insieme a voi questo modo che sembra lontano (vi ricordate 10 anni fa delle macchine che guidano da sole? :-) ) ma in realtà è già intorno a noi e si sta facendo sempre più pervasivo.
Do pair programming with an artificial intelligence
1. Do pair programming with an artificial intelligence Giulio Roggero
Do pair programming
with an artificial
intelligence
Giulio Roggero
30 maggio 2020
2. Do pair programming with an artificial intelligence Giulio Roggero
Nessuna
intelligenza
artificiale è stata
maltrattata
durante la
preparazione di
questo talk
Disclaimer
3. Do pair programming with an artificial intelligence Giulio Roggero
Questo talk non parlerà di ML o DL ma come questi
potranno semplificarci la vita nello sviluppo di software.
4. Do pair programming with an artificial intelligence Giulio Roggero
Cane
No Cane
Output
Machine Learning
Input Estrazione delle
caratteristiche
Classificazione
Cane
No Cane
Output
Deep Learning
Input Estrazione delle caratteristiche + Classificazione
5. Do pair programming with an artificial intelligence Giulio Roggero
https://pxhere.com/en/photo/541140?__cf_chl_jschl_tk__=c0c3ccb87f6b85b3b4448844ac6768cfda9fe4bf-1590828815-0-AZa-TJDvPiJpVKXAWX0PxpcPjMWZrLYxcrC-94m7mROYy6TSQcz_2ybqTN1SjFJGABRa9L7qx2AiXLPeJVKzMujOqYXvnHP3zKqAJINAxpvWCtij0A8nzxNm53JUqUoNWIGxzC3s71WOc8jf6tkve8gnPbOpcNgVHRmeB9pb7T-2FCP1HHYKVa_h9XNTRLlfDMTwZ8Kc5jJi90EEWeCv1bjZISvRdrJG0AdvXo7V2Y23yQY_N1PM7JLllCe-LjH2yYM-3u4xezd6zOx2GL8zYlUKHLLprDY9_BKt
OyF8KoS-
Pairing
● Maggior attenzione e
produttività
● Riduzione degli errori
● Condivisione della
conoscenza
● Team building
6. Do pair programming with an artificial intelligence Giulio Roggero
Muro di
comunicazione
collaborazione
7. Do pair programming with an artificial intelligence Giulio Roggero
Driver Navigator A B C
.stream().filter (...
Filtro lo
stream per
poi
passarlo a
C
Come mai,
non
dovresti
mandarlo a
B?
8. Do pair programming with an artificial intelligence Giulio Roggero
Scrivi un test
Scrivi il codice per
passare il test
Fai refactoring fin
quando il codice è
pulito in modo
accettabile Ciclo rapido
Ogni 10’ circa
TDDTDD
Non è solo una questione di
test, ma anche di:
● Scrivere codice pulito
● Scrivere codice semplice
● Scrivere solo il codice
che serve
● Scrivere codice testabile
● Scrivere codice con
responsabilità chiare
● Scrivere
documentazione
perché i test esprimono
le intenzioni
● Ridurre i costi e ti
tempi di sviluppo
9. Do pair programming with an artificial intelligence Giulio Roggero
Da soli?
TDD
10. Do pair programming with an artificial intelligence Giulio Roggero
In pair programming è molto meglio
TDD
11. Do pair programming with an artificial intelligence Giulio Roggero
Ancora più efficace in ping pong programming
TDD
12. Do pair programming with an artificial intelligence Giulio Roggero
● E’ faticoso
● Necessario forte affiatamento
● La voglia di isolamento spesso prende il
sopravvento
13. Do pair programming with an artificial intelligence Giulio Roggero
Quindi? Da soli?
TDD
14. Do pair programming with an artificial intelligence Giulio Roggero
Fai pair con una AI!
TDD
15. Do pair programming with an artificial intelligence Giulio Roggero
Driver Navigator A B C
.stream().filter (...
OK? Mi aspetto di passare a
B i soli record che
soddisfazione la
seguente condizione
16. Do pair programming with an artificial intelligence Giulio Roggero
Scrivo un test
Scrive il codice per
passare il test
Verifico che il risultato sia quello
che mi aspetto altrimenti scrivo io
il codice
Impara
Fai refactor fin quando
il codice è pulito in
modo accettabile
Impara
AITDD
17. Do pair programming with an artificial intelligence Giulio Roggero
Cosa ne pensate?
19. Do pair programming with an artificial intelligence Giulio Roggero
Non ancora ma non sarebbe male
Pensateci come sarebbe fluida la cosa:
tu esprimi l’intenzione e l’AI la
soddisfa
20. Do pair programming with an artificial intelligence Giulio Roggero
I tool presentati sono
disponibili online
gratuitamente, in demo o
a pagamento.
Non è una pubblicità ma
una ricerca non esaustiva
dello stato dell’arte ad
oggi
Disclaimer
21. Do pair programming with an artificial intelligence Giulio Roggero
● Design UI
● Autocompletamento
di codice
● Analisi statica del
codice
● Generare codice
da intenzioni
● Unit Test
Automatici
● Evidenziare
anomalie
Alcuni esempi che consentono di aiutare nel pairing:
22. Do pair programming with an artificial intelligence Giulio Roggero
https://sketch2code.azurewebsites.net/
23. Do pair programming with an artificial intelligence Giulio Roggero
https://visualstudio.microsoft.com/services/intellicode/ https://www.tabnine.com/
24. Do pair programming with an artificial intelligence Giulio Roggero
https://www.deepcode.ai/app/gh/ - sanitize your input
https://www.deepcode.ai/app/gh/giulioroggero/java-test-deepcoder/8775cb8aa7b892d79ef35791fc6a19de08e8fca3/_/dashboard
https://github.com/giulioroggero/java-test-deepcoder
25. Do pair programming with an artificial intelligence Giulio Roggero
https://github.com/facebookresearch/aroma-paper-artifacts https://ai.facebook.com/blog/aroma-ml-for-code-recommendation/
26. Do pair programming with an artificial intelligence Giulio Roggero
https://www.i-programmer.info/news/90-tools/
11767-bayou-ai-to-help-you-code.html
https://github.com/trishullab/bayou
27. Do pair programming with an artificial intelligence Giulio Roggero
https://www.diffblue.com/products https://docs.diffblue.com/cover/user-manual/t
opics/intellij-plugin/writing-tests.html
28. Do pair programming with an artificial intelligence Giulio Roggero
Log anomaly detection
https://www.elastic.co/guide/en/kibana/current/xpack-logs-analysis.html
29. Do pair programming with an artificial intelligence Giulio Roggero
E’ ancora presto per avere benefici che impattano in modo notevole sulle nostre
abitudini di sviluppo ma gli studi in tal senso stanno diventando sempre più
approfonditi e con ottimi riscontri.
Consiglio: dateci un occhio ogni tanto perché nel giro di 5 anni il modo di
sviluppare potrebbe cambiare in modo importante grazie all’Intelligenza Artificiale.
Ne conoscete altri? Contattatemi che li aggiungo alla lista!
Link interessante
https://github.com/src-d/awesome-machine-learning-on-source-code
30. Do pair programming with an artificial intelligence Giulio Roggero
Giulio Roggero
Co-founder and CTO @ Mia-Platform
Partner @ Intré
Co-founder @ Agile Reloaded
30