the epistemology of software engineering - goto...
TRANSCRIPT
![Page 1: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/1.jpg)
The Epistemology of Software Engineering
Nathan Marz@nathanmarz 1
![Page 2: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/2.jpg)
My personal philosophies on software development
![Page 3: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/3.jpg)
![Page 4: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/4.jpg)
Agenda1. Limits of human knowledge
2. Effect of the limits of knowledge on software development
3. Embracing those limits enables you to build better software
![Page 5: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/5.jpg)
How do I know my software is correct?
![Page 6: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/6.jpg)
How do I know a proposition is true?
![Page 7: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/7.jpg)
Epistemology
![Page 8: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/8.jpg)
How do I know my software is correct?
PREVIEW
![Page 9: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/9.jpg)
You don’t
![Page 10: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/10.jpg)
Your code is wrong
![Page 11: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/11.jpg)
PREVIEW
How do I know a proposition is true?
![Page 12: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/12.jpg)
You don’t
![Page 13: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/13.jpg)
True knowledge is unattainable
![Page 14: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/14.jpg)
![Page 15: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/15.jpg)
![Page 16: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/16.jpg)
But wait... philosophy?
![Page 17: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/17.jpg)
Fallacies
StrawmanAppeal to authority
Circular reasoningAppeal to emotion
False dilemmaArgument to moderation
Moral highgroundAd hominem attackShotgun argumentationCorrelation vs causationEquivocationBurden of proof
![Page 18: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/18.jpg)
![Page 19: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/19.jpg)
Your code is wrong
![Page 20: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/20.jpg)
Your code is literally wrong
![Page 21: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/21.jpg)
Your code is wrong
![Page 22: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/22.jpg)
![Page 23: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/23.jpg)
Why do you believe your code is correct?
![Page 24: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/24.jpg)
Your code
Dependency 1
Dependency 2
Dependency 3
![Page 25: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/25.jpg)
Dependency 1
Dependency 4
Dependency 5
![Page 26: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/26.jpg)
Dependency 4
Dependency 6
Dependency 9
Dependency 7
Dependency 8
![Page 27: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/27.jpg)
Dependency 3,000,000
Hardware
![Page 28: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/28.jpg)
Electronics
![Page 29: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/29.jpg)
Chemistry
![Page 30: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/30.jpg)
Atomic physics
![Page 31: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/31.jpg)
Quantum mechanics
![Page 32: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/32.jpg)
I think I can safely say that nobody understands
quantum mechanics.
Richard Feynman
![Page 33: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/33.jpg)
Your code is wrong
![Page 34: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/34.jpg)
Your code
...
![Page 35: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/35.jpg)
Infinite regress
![Page 36: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/36.jpg)
Epistemological “solutions”1. Infinitism
2. Foundationalism
3. Coherentism
![Page 37: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/37.jpg)
Coherentism
![Page 38: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/38.jpg)
Foundationalism
Axioms
![Page 39: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/39.jpg)
René Descartes
![Page 40: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/40.jpg)
Cogito ergo sum
![Page 41: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/41.jpg)
I think, therefore I am
![Page 42: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/42.jpg)
Codito ergo sum
![Page 43: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/43.jpg)
I code, therefore I am
![Page 44: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/44.jpg)
Cartesian foundationalism1. Limited axioms
2. Knowledge through deduction
![Page 45: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/45.jpg)
Cartesian programming1. Axioms = rules of programming language
2. Programs = deductions from those axioms
![Page 46: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/46.jpg)
![Page 47: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/47.jpg)
![Page 48: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/48.jpg)
![Page 49: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/49.jpg)
-> OutOfMemoryException
![Page 50: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/50.jpg)
-> Hallo welt!
![Page 51: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/51.jpg)
All the software you’ve used has had bugs in it
![Page 52: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/52.jpg)
Including the software you’ve written
![Page 53: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/53.jpg)
![Page 54: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/54.jpg)
![Page 55: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/55.jpg)
![Page 56: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/56.jpg)
![Page 57: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/57.jpg)
Induction
![Page 58: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/58.jpg)
f(0) and (f(n) → f(n+1)) ⇒ ∀n≥0, f(n)
![Page 59: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/59.jpg)
Induction
![Page 60: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/60.jpg)
![Page 61: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/61.jpg)
![Page 62: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/62.jpg)
<sidenote>
![Page 63: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/63.jpg)
David Hume
![Page 64: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/64.jpg)
“Why is inductive reasoning valid?”
![Page 65: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/65.jpg)
</sidenote>
![Page 66: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/66.jpg)
![Page 67: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/67.jpg)
Skepticism
![Page 68: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/68.jpg)
![Page 69: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/69.jpg)
perfect code
![Page 70: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/70.jpg)
value to users
![Page 71: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/71.jpg)
“My software is correct”
![Page 72: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/72.jpg)
“My software is sometimes correct”
![Page 73: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/73.jpg)
How do you minimize imperfection?
![Page 74: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/74.jpg)
Storm’s “reportError” method
![Page 75: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/75.jpg)
(Storm is a realtime computation system, like Hadoop but for realtime)
![Page 76: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/76.jpg)
Storm architecture
![Page 77: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/77.jpg)
Storm architecture
Master node (similar to Hadoop JobTracker)
![Page 78: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/78.jpg)
Storm architecture
Used for cluster coordination
![Page 79: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/79.jpg)
Storm architecture
Run worker processes
![Page 80: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/80.jpg)
Storm’s “reportError” method
![Page 81: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/81.jpg)
Used to show errors in the Storm UI
![Page 82: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/82.jpg)
Error info is stored in Zookeeper
![Page 83: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/83.jpg)
What happens when a user deploys code like this?
![Page 84: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/84.jpg)
Denial-of-service on Zookeeper and cluster goes down
![Page 85: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/85.jpg)
Robust!
Designed input space Actual input space
Failures!Bad performance!Security holes!
Irrelevant!
![Page 86: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/86.jpg)
Implement self-throttling to avoid overloading Zookeeper
![Page 87: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/87.jpg)
Robust!
Designed input space Actual input space
![Page 88: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/88.jpg)
Robust!
Designed input space Actual input space
![Page 89: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/89.jpg)
Epistemology
![Page 90: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/90.jpg)
TrthTruh
Trut
TuthTru
![Page 91: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/91.jpg)
Foundation of modern science
![Page 92: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/92.jpg)
1. When viewed in an inertial reference frame, an object either is at rest or moves at a constant
velocity, unless acted upon by an external force.
2. The acceleration of a body is directly proportional to, and in the same direction as, the net force acting on the body, and inversely proportional to its mass. Thus, F = ma, where F is the net force acting on the object, m is the mass of the object and a is the acceleration of the object.
3. When one body exerts a force on a second body, the second body simultaneously exerts a force equal in
magnitude and opposite in direction to that of the first body.
Newton’s laws of motion
![Page 93: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/93.jpg)
Cambridge, we have a problem...
Orbit of Mercury problem
![Page 94: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/94.jpg)
Einstein’s theory of relativity
Sorry, Newton, you’vebeen PWNED:
![Page 95: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/95.jpg)
limitn → ∞
approximation (truth)n = truth
![Page 96: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/96.jpg)
Science algorithm1. Make observations
2. Find theories consistent with those observations
3. Falsify theories by making more observations
![Page 97: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/97.jpg)
Foundationalism
Coherentism
+
![Page 98: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/98.jpg)
Empiricism
![Page 99: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/99.jpg)
John Locke
![Page 100: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/100.jpg)
![Page 101: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/101.jpg)
![Page 102: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/102.jpg)
![Page 103: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/103.jpg)
![Page 104: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/104.jpg)
![Page 105: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/105.jpg)
![Page 106: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/106.jpg)
Occam’s Razor
![Page 107: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/107.jpg)
Software
Use cases
![Page 108: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/108.jpg)
Software gets messy
![Page 109: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/109.jpg)
Refactoring
![Page 110: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/110.jpg)
Robust!
Designed input space Actual input space
![Page 111: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/111.jpg)
Robust!
Designed input space Actual input space
![Page 112: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/112.jpg)
![Page 113: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/113.jpg)
TESTING
![Page 114: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/114.jpg)
![Page 115: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/115.jpg)
![Page 116: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/116.jpg)
Unit testing
Load testing
Stress testing
Fuzz testing
![Page 117: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/117.jpg)
TDD?
![Page 118: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/118.jpg)
Review1. Cannot perfectly reason about software• Infinite regress problem• Deduction is fundamentally flawed• Evidence shows programmers are not good at deductive reasoning
2. Best you can do is minimize wrongness• Truth can only be approximate• Observe/theorize/falsify cycle minimizes wrongness over time• Testing = empiricism applied to software development• Make programs less wrong by testing more
![Page 119: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/119.jpg)
Does any of this matter?
![Page 120: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/120.jpg)
YES
![Page 121: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/121.jpg)
Embrace “your code is wrong”to design better software
![Page 122: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/122.jpg)
![Page 123: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/123.jpg)
![Page 124: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/124.jpg)
RedundancyFault-tolerance > Perfection
![Page 125: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/125.jpg)
An example
![Page 126: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/126.jpg)
Learning from Hadoop
Jobtracker
Job
Job
Job
![Page 127: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/127.jpg)
Learning from Hadoop
Jobtracker
Job
Job
Job
![Page 128: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/128.jpg)
Learning from Hadoop
Jobtracker
Job
Job
Job
![Page 129: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/129.jpg)
Your code is wrong
![Page 130: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/130.jpg)
So your processes will crash
![Page 131: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/131.jpg)
Storm’s daemons are process fault-tolerant
![Page 132: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/132.jpg)
Storm
Nimbus
Topology
Topology
Topology
![Page 133: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/133.jpg)
Storm
Nimbus
Topology
Topology
Topology
![Page 134: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/134.jpg)
Storm
Nimbus
Topology
Topology
Topology
![Page 135: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/135.jpg)
Storm
Nimbus
Topology
Topology
Topology
![Page 136: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/136.jpg)
Storm
Nimbus
Topology
Topology
Topology
![Page 137: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/137.jpg)
Robust!
Designed input space Actual input space
![Page 138: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/138.jpg)
Robust!
Designed input space Actual input space
![Page 139: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/139.jpg)
Reasoning is fundamentally hard
![Page 140: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/140.jpg)
So program in ways that require less of it
![Page 141: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/141.jpg)
![Page 142: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/142.jpg)
![Page 143: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/143.jpg)
Pure function
![Page 144: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/144.jpg)
Mutability is hard to reason about
![Page 145: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/145.jpg)
Minimize state mutation
![Page 146: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/146.jpg)
Functional programming
![Page 147: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/147.jpg)
Clojure
![Page 148: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/148.jpg)
skepticism(skepticism)
![Page 149: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/149.jpg)
perfect software
??
?
??
??
??
???
??
??
??
? ????
??
?
?
? ?
![Page 150: The Epistemology of Software Engineering - GOTO Conferencegotocon.com/.../NathanMarz_KEYNOTETheEpistemologyOfSoftwareE… · The Epistemology of Software Engineering Nathan Marz @nathanmarz](https://reader035.vdocuments.us/reader035/viewer/2022081607/5edfd536ad6a402d666b2226/html5/thumbnails/150.jpg)
Thank you