bare-knuckle web development agile prague johannes brodwall, chief scientist exilesoft global
TRANSCRIPT
![Page 1: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/1.jpg)
Bare-knuckle web development
Agile PragueJohannes Brodwall, Chief scientist
Exilesoft Global
![Page 2: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/2.jpg)
• Philosophy• Demonstration
• Ruminations
![Page 3: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/3.jpg)
Part I:
![Page 4: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/4.jpg)
The bare-knuckle philosophy
![Page 5: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/5.jpg)
• Fear => Pair• Hubris => Speed (and fun)
![Page 6: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/6.jpg)
High impact with low ceremony
![Page 7: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/7.jpg)
• Framework light• Test-driven
• No calculators
![Page 8: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/8.jpg)
Light on framework
![Page 9: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/9.jpg)
Frameworks solve 80% of the job…
![Page 10: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/10.jpg)
… and makes the rest 10 times as hard
![Page 11: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/11.jpg)
“Why did Hibernate suddenly slow down?”
![Page 12: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/12.jpg)
“How do I make JBoss behave the way I
want?”
![Page 13: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/13.jpg)
“How do I implement a custom SOAP header
with JAX-WS?”
![Page 14: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/14.jpg)
“Why did my dependencies not inject?”
![Page 15: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/15.jpg)
“How do I do anything with Spring”
![Page 16: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/16.jpg)
Test-driven
![Page 17: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/17.jpg)
Fast feedback cycle
![Page 18: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/18.jpg)
“I can see how TDD works for toy examples…”
![Page 19: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/19.jpg)
“… but how can we use it when we have all these
really complicated technologies???”
![Page 20: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/20.jpg)
(Hint:“all these complicated technologies”
I think I see your problem right here...)
![Page 21: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/21.jpg)
Don’t use a calculator…
![Page 22: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/22.jpg)
Part II:
![Page 23: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/23.jpg)
Demo: Phonebook web app
![Page 24: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/24.jpg)
Part III:
![Page 25: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/25.jpg)
The real world
![Page 26: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/26.jpg)
Build your app this way?
![Page 27: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/27.jpg)
Probably not
![Page 28: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/28.jpg)
Well, why not?
![Page 29: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/29.jpg)
I am most likely insane
![Page 30: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/30.jpg)
Understand what’s going on
![Page 31: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/31.jpg)
«Don’t reinvent the wheel»
![Page 32: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/32.jpg)
![Page 33: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/33.jpg)
Are you using technology to solve
your problems?
![Page 34: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/34.jpg)
Or so that you don’t have to face your
problems?
![Page 35: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/35.jpg)
... yet.
![Page 36: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/36.jpg)
Overheated brain
![Page 37: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/37.jpg)
95 % test coverage
![Page 38: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/38.jpg)
95 % test coverage
5-10 seconds
![Page 39: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/39.jpg)
95 % test coverage
5-10 seconds
< 1 day to create «framework»
![Page 40: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/40.jpg)
SOAP:1. Construct XML
2. POST on HttpURLConnection
![Page 41: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/41.jpg)
@Overridepublic String getCountryByIp(String ipAddress) { Document soapRequest = soapElement("S:Envelope", $("S:Body", wsxElement("wsx:GetGeoIP", $("wsx:IPAddress", ipAddress)))); Document soapResponse endpoint.postRequest(getSOAPAction(), soapRequest); return $(soapResponse).xpath("/Envelope/Body/*") .xpath("GetGeoIPResult/CountryName").text();}
![Page 42: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/42.jpg)
No friction
![Page 43: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/43.jpg)
Thinking in tests
![Page 44: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/44.jpg)
1.
![Page 45: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/45.jpg)
Guiding test/
Web tests/
Acceptance test/
Usage Flow test
![Page 46: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/46.jpg)
2.
![Page 47: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/47.jpg)
Get the infrastructure to work =>
separate out responsibility
![Page 48: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/48.jpg)
3.
![Page 49: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/49.jpg)
Fine grained tests for internal logic
![Page 50: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/50.jpg)
Shallow, then deep
![Page 51: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/51.jpg)
Shallow, then deep
(without changing tests)
![Page 52: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/52.jpg)
Conclusion:
![Page 53: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/53.jpg)
YAGNI
![Page 54: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/54.jpg)
No calculator until…
![Page 55: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/55.jpg)
Don’t use a framework you couldn’t have
written yourself
![Page 56: Bare-knuckle web development Agile Prague Johannes Brodwall, Chief scientist Exilesoft Global](https://reader036.vdocuments.us/reader036/viewer/2022062408/56649f315503460f94c4c798/html5/thumbnails/56.jpg)
Thank [email protected]
http://johannesbrodwall.com
http://exilesoft.com/exilee
http://twitter.com/jhannes