the epistemology of software engineering
play

The Epistemology of Software Engineering Nathan Marz @nathanmarz - PowerPoint PPT Presentation

The Epistemology of Software Engineering Nathan Marz @nathanmarz 1 My personal philosophies on software development Agenda 1. Limits of human knowledge 2. E ff ect of the limits of knowledge on software development 3. Embracing those limits


  1. The Epistemology of Software Engineering Nathan Marz @nathanmarz 1

  2. My personal philosophies on software development

  3. Agenda 1. Limits of human knowledge 2. E ff ect of the limits of knowledge on software development 3. Embracing those limits enables you to build better software

  4. How do I know my software is correct?

  5. How do I know a proposition is true?

  6. Epis tf molog y

  7. How do I know my software is correct? PREVIEW

  8. You don’t

  9. Your code is wrong

  10. How do I know a proposition is true? PREVIEW

  11. You don’t

  12. True knowledge is unattainable

  13. But wait... philosophy?

  14. Strawman Moral highground Appeal to authority Ad hominem attack Appeal to emotion Shotgun argumentation Circular reasoning Correlation vs causation False dilemma Equivocation Argument to moderation Burden of proof Fallacies

  15. Your code is wrong

  16. Your code is literally wrong

  17. Your code is wrong

  18. Why do you believe your code is correct?

  19. Dependency 1 Dependency 2 Your code Dependency 3

  20. Dependency 4 Dependency 1 Dependency 5

  21. Dependency 6 Dependency 7 Dependency 4 Dependency 8 Dependency 9

  22. Dependency 3,000,000 Hardware

  23. Electronics

  24. Chemistry

  25. Atomic physics

  26. Quantum mechanics

  27. I think I can safely say that nobody understands quantum mechanics. Richard Feynman

  28. Your code is wrong

  29. ... Your code

  30. Infinite regress

  31. Epistemological “solutions” 1. Infinitism 2. Foundationalism 3. Coherentism

  32. Coherentism

  33. Foundationalism Axioms

  34. René Descartes

  35. Cogito ergo sum

  36. I think, therefore I am

  37. Codito ergo sum

  38. I code, therefore I am

  39. Cartesian foundationalism 1. Limited axioms 2. Knowledge through deduction

  40. Cartesian programming 1. Axioms = rules of programming language 2. Programs = deductions from those axioms

  41. -> OutOfMemoryException

  42. -> Hallo welt!

  43. All the software you’ve used has had bugs in it

  44. Including the software you’ve written

  45. I nduc tj o n

  46. f(0) and (f(n) → f(n+1)) ⇒ ∀ n ≥ 0, f(n)

  47. I nduc tj o n

  48. <sidenote>

  49. David Hume

  50. “Why is inductive reasoning valid?”

  51. </sidenote>

  52. S kep tj cis m

  53. perfect code

  54. value to users

  55. “My software is correct”

  56. “My software is sometimes correct”

  57. How do you minimize imperfection?

  58. Storm’s “reportError” method

  59. (Storm is a realtime computation system, like Hadoop but for realtime)

  60. Storm architecture

  61. Storm architecture Master node (similar to Hadoop JobTracker)

  62. Storm architecture Used for cluster coordination

  63. Storm architecture Run worker processes

  64. Storm’s “reportError” method

  65. Used to show errors in the Storm UI

  66. Error info is stored in Zookeeper

  67. What happens when a user deploys code like this?

  68. Denial-of-service on Zookeeper and cluster goes down

  69. Failures! Irrelevant! Robust! Bad performance! Security holes! Designed input space Actual input space

  70. Implement self-throttling to avoid overloading Zookeeper

  71. Robust! Designed input space Actual input space

  72. Robust! Designed input space Actual input space

  73. Epis tf molog y

  74. Trth Trut Truh Tuth Tru

  75. Foundation of modern science

  76. Newton’s laws of motion 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.

  77. Orbit of Mercury problem Cambridge, we have a problem...

  78. Einstein’s theory of relativity Sorry, Newton, you’ve been PWNED:

  79. limit = truth n approximation (truth) n → ∞

  80. Science algorithm 1. Make observations 2. Find theories consistent with those observations 3. Falsify theories by making more observations

  81. Foundationalism + Coherentism

  82. E mpiricis m

  83. John Locke

Recommend


More recommend