Aristotle and the art
                             of software development
                                               ...
Or: what does Athens have to
                     do with Silicon Valley?
                                          Jonath...
Athens   Silicon Valley
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Ethics.


Friday, September 18, 2009
Friday, September 18, 2009
G




Friday, September 18, 2009
PG




Friday, September 18, 2009
PG-13




Friday, September 18, 2009
R




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Ethics.


Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
What makes a good programmer?




Friday, September 18, 2009
Anatomy of an action


                                   Act - Effect
                                      Actor




Fri...
Deontology (Kant)



                                Act - Effect
                                   Actor




Friday, Sep...
Utilitarianism (Mill)



                                 Act - Effect
                                    Actor




Frida...
Virtue (Aristotle)



                               Act - Effect
                                  Actor




Friday, Sept...
Downsides




Friday, September 18, 2009
Symptoms




Friday, September 18, 2009
What kind of Agile?




Friday, September 18, 2009
What language?




Friday, September 18, 2009
Immanuel Kant

Friday, September 18, 2009
Königsberg




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
deontology
                             duty




Friday, September 18, 2009
Principles




Friday, September 18, 2009
Categorical Imperative

                      Act only according to that maxim by
                     which you can at th...
Friday, September 18, 2009
Friday, September 18, 2009
Deontological
                             software development




Friday, September 18, 2009
Don’t Repeat Yourself
                             100% Test Coverage
                              Write readable code


...
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Process - Outcome
                                Participants




Friday, September 18, 2009
Determine the right process




Friday, September 18, 2009
(Determine the right principles)




Friday, September 18, 2009
Stick to the rules




Friday, September 18, 2009
“You have to follow every aspect of
    the process for it to work”




Friday, September 18, 2009
Follow the rules, even when you
   don’t think you’ll like the outcome




Friday, September 18, 2009
“This is just the way things are
                          done”




Friday, September 18, 2009
Ever-growing rules




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
XP Rules
   1.User stories are written.                   16.The customer is always available.
   2.Release planning creat...
Don’t Repeat Yourself



                             Write clear, understandable code




Friday, September 18, 2009
development:
             adapter: mysql
             encoding: utf8
             database: app_development
             u...
standard:
      adapter: mysql
      encoding: utf8

    local:
      username: root
      password:

    development:
   ...
<% local_password = "" -%>
   <% local_user = "root" -%>
   <% [{:name => "development", :user => local_user, :password =>...
What kind of agile?




Friday, September 18, 2009
Certification




Friday, September 18, 2009
Friday, September 18, 2009
John Stuart Mill




Friday, September 18, 2009
John Stuart Mill
                             Opposed slavery
                             Favored women’s suffrage
      ...
John Stuart Mill
                                       Opposed slavery
                                       Favored wom...
Utilitarianism




Friday, September 18, 2009
Greatest good
                             for the greatest number




Friday, September 18, 2009
The ends justify the means




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Utilitarian
                             software development




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Process - Outcome
                                Participants




Friday, September 18, 2009
Driven by experience




Friday, September 18, 2009
Ad hoc




Friday, September 18, 2009
Results-oriented




Friday, September 18, 2009
Willing to compromise




Friday, September 18, 2009
“Just get it done”




Friday, September 18, 2009
“Doesn’t have to be pretty”




Friday, September 18, 2009
Short term vs. long term




Friday, September 18, 2009
What kind of agile?




Friday, September 18, 2009
No Process




Friday, September 18, 2009
Friday, September 18, 2009
Lisp vs. Perl




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Philosophy




Friday, September 18, 2009
Philosophy
                               Ethics




Friday, September 18, 2009
Philosophy
                               Ethics
                              Politics




Friday, September 18, 2009
Philosophy
                               Ethics
                              Politics
                              Rhet...
Philosophy
                               Ethics
                              Politics
                              Rhet...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Philosophy
                               Ethics
                               Politics
                              Rhe...
Friday, September 18, 2009
Friday, September 18, 2009
(practical) wisdom




Friday, September 18, 2009
(practical) wisdom
                             aiming at virtues




Friday, September 18, 2009
(practical) wisdom
                             aiming at virtues
    combined with moral strength




Friday, September 1...
(practical) wisdom
                             aiming at virtues
    combined with moral strength
                       ...
(practical) wisdom




Friday, September 18, 2009
aiming at
              virtues




Friday, September 18, 2009
Courage
                             Temperance
                                 Pride
                              Gener...
Excess (too much) Virtue (just right)   Defect (too little)
                 Rashness       Courage        Cowardice
     ...
Excess (too much) Virtue (just right)     Defect (too little)
          Rashness                Courage          Cowardice...
combined with
  moral strength




Friday, September 18, 2009
leading to happiness




Friday, September 18, 2009
modeling




Friday, September 18, 2009
Friday, September 18, 2009
practice




Friday, September 18, 2009
bootstrapping




Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Downsides




Friday, September 18, 2009
Virtue-based
                             software development




Friday, September 18, 2009
Act - Effect
                                Actor




Friday, September 18, 2009
Process - Outcome
                                Participants




Friday, September 18, 2009
Education and training




Friday, September 18, 2009
Pride




Friday, September 18, 2009
Sane work schedules




Friday, September 18, 2009
Empower developers




Friday, September 18, 2009
Mentoring




Friday, September 18, 2009
Right people -> right outcomes




Friday, September 18, 2009
What kind of agile?




Friday, September 18, 2009
Natural




Friday, September 18, 2009
Friday, September 18, 2009
Empower
                             programmers




Friday, September 18, 2009
Self-effacing




Friday, September 18, 2009
Pleasant to write




Friday, September 18, 2009
Happy and virtuous




Friday, September 18, 2009
virtues, not rules




Friday, September 18, 2009
virtues, not rules
                             moderation, not excess




Friday, September 18, 2009
virtues, not rules
                             moderation, not excess
                             judgment, not process
...
virtues, not rules
                             moderation, not excess
                             judgment, not process
...
virtues, not rules
                             moderation, not excess
                             judgment, not process
...
Thanks!
                                   Slides at:
                             http://railspikes.com



              ...
Upcoming SlideShare
Loading in...5
×

Aristotle and the Art of Software Development (Agile 2009)

849

Published on

Talk on software development and philosophy, given at Agile 2009 in Chicago. (This is an updated version of a talk I gave at RubyConf 2008 in Orlando.)

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
849
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aristotle and the Art of Software Development (Agile 2009)

  1. 1. Aristotle and the art of software development Jonathan Dahl http://tumblon.com (work) http://zencoder.tv (product) http://railspikes.com (blog) Friday, September 18, 2009
  2. 2. Or: what does Athens have to do with Silicon Valley? Jonathan Dahl http://tumblon.com (work) http://zencoder.tv (product) http://railspikes.com (blog) Friday, September 18, 2009
  3. 3. Athens Silicon Valley Friday, September 18, 2009
  4. 4. Friday, September 18, 2009
  5. 5. Friday, September 18, 2009
  6. 6. Ethics. Friday, September 18, 2009
  7. 7. Friday, September 18, 2009
  8. 8. G Friday, September 18, 2009
  9. 9. PG Friday, September 18, 2009
  10. 10. PG-13 Friday, September 18, 2009
  11. 11. R Friday, September 18, 2009
  12. 12. Friday, September 18, 2009
  13. 13. Friday, September 18, 2009
  14. 14. Friday, September 18, 2009
  15. 15. Friday, September 18, 2009
  16. 16. Friday, September 18, 2009
  17. 17. Ethics. Friday, September 18, 2009
  18. 18. What makes a good programmer? Friday, September 18, 2009
  19. 19. Friday, September 18, 2009
  20. 20. Friday, September 18, 2009
  21. 21. What makes a good programmer? Friday, September 18, 2009
  22. 22. What makes a good programmer? Friday, September 18, 2009
  23. 23. Anatomy of an action Act - Effect Actor Friday, September 18, 2009
  24. 24. Deontology (Kant) Act - Effect Actor Friday, September 18, 2009
  25. 25. Utilitarianism (Mill) Act - Effect Actor Friday, September 18, 2009
  26. 26. Virtue (Aristotle) Act - Effect Actor Friday, September 18, 2009
  27. 27. Downsides Friday, September 18, 2009
  28. 28. Symptoms Friday, September 18, 2009
  29. 29. What kind of Agile? Friday, September 18, 2009
  30. 30. What language? Friday, September 18, 2009
  31. 31. Immanuel Kant Friday, September 18, 2009
  32. 32. Königsberg Friday, September 18, 2009
  33. 33. Friday, September 18, 2009
  34. 34. Friday, September 18, 2009
  35. 35. Friday, September 18, 2009
  36. 36. deontology duty Friday, September 18, 2009
  37. 37. Principles Friday, September 18, 2009
  38. 38. Categorical Imperative Act only according to that maxim by which you can at the same time will that it should become a universal law Friday, September 18, 2009
  39. 39. Friday, September 18, 2009
  40. 40. Friday, September 18, 2009
  41. 41. Deontological software development Friday, September 18, 2009
  42. 42. Don’t Repeat Yourself 100% Test Coverage Write readable code Friday, September 18, 2009
  43. 43. Friday, September 18, 2009
  44. 44. Act - Effect Actor Friday, September 18, 2009
  45. 45. Process - Outcome Participants Friday, September 18, 2009
  46. 46. Determine the right process Friday, September 18, 2009
  47. 47. (Determine the right principles) Friday, September 18, 2009
  48. 48. Stick to the rules Friday, September 18, 2009
  49. 49. “You have to follow every aspect of the process for it to work” Friday, September 18, 2009
  50. 50. Follow the rules, even when you don’t think you’ll like the outcome Friday, September 18, 2009
  51. 51. “This is just the way things are done” Friday, September 18, 2009
  52. 52. Ever-growing rules Friday, September 18, 2009
  53. 53. Friday, September 18, 2009
  54. 54. Friday, September 18, 2009
  55. 55. XP Rules 1.User stories are written. 16.The customer is always available. 2.Release planning creates the schedule. 17.Code must be written to agreed standards. 3.Make frequent small releases. 18.Code the unit test first. 4.The Project Velocity is measured. 19.All production code is pair programmed. 5.The project is divided into iterations. 20.Only one pair integrates code at a time. 6.Iteration planning starts each iteration. 21.Integrate often. 7.Move people around. 22.Use collective code ownership. 8.A stand-up meeting starts each day. 23.Leave optimization till last. 9.Fix XP when it breaks. 24.No overtime. 10.Simplicity. 25.All code must have unit tests. 11.Choose a system metaphor. 26.All code must pass all unit tests before it can 12.Use CRC cards for design sessions. be released. 13.Create spike solutions to reduce risk. 27.When a bug is found tests are created. 14.No functionality is added early. 28.Acceptance tests are run often and the 15.Refactor whenever and wherever score is published. possible. Friday, September 18, 2009
  56. 56. Don’t Repeat Yourself Write clear, understandable code Friday, September 18, 2009
  57. 57. development: adapter: mysql encoding: utf8 database: app_development username: root password: test: adapter: mysql encoding: utf8 database: app_test username: root password: production: adapter: mysql encoding: utf8 database: app_production username: user password: password Friday, September 18, 2009
  58. 58. standard: adapter: mysql encoding: utf8 local: username: root password: development: <<: *standard <<: *local database: app_development test: <<: *standard <<: *local database: app_test production: <<: *standard database: app_production username: user password: password Friday, September 18, 2009
  59. 59. <% local_password = "" -%> <% local_user = "root" -%> <% [{:name => "development", :user => local_user, :password => local_password}, {:name => "test", :user => local_user, :password => local_password}, {:name => "production", :user => "user", :password => "password"} ].each do |environment| -%> <%= environment[:name] %> adapter: mysql encoding: utf8 database: app_<%= environment[:name] %> username: <%= environment[:user] %> password: <%= environment[:password] %> <% end -%> Friday, September 18, 2009
  60. 60. What kind of agile? Friday, September 18, 2009
  61. 61. Certification Friday, September 18, 2009
  62. 62. Friday, September 18, 2009
  63. 63. John Stuart Mill Friday, September 18, 2009
  64. 64. John Stuart Mill Opposed slavery Favored women’s suffrage Free markets (...with proper regulation) Animal rights Environmentalism Friday, September 18, 2009
  65. 65. John Stuart Mill Opposed slavery Favored women’s suffrage Free markets (...with proper regulation) Animal rights Environmentalism ...way before these things were cool Friday, September 18, 2009
  66. 66. Utilitarianism Friday, September 18, 2009
  67. 67. Greatest good for the greatest number Friday, September 18, 2009
  68. 68. The ends justify the means Friday, September 18, 2009
  69. 69. Friday, September 18, 2009
  70. 70. Friday, September 18, 2009
  71. 71. Friday, September 18, 2009
  72. 72. Friday, September 18, 2009
  73. 73. Friday, September 18, 2009
  74. 74. Friday, September 18, 2009
  75. 75. Friday, September 18, 2009
  76. 76. Friday, September 18, 2009
  77. 77. Friday, September 18, 2009
  78. 78. Utilitarian software development Friday, September 18, 2009
  79. 79. Friday, September 18, 2009
  80. 80. Friday, September 18, 2009
  81. 81. Act - Effect Actor Friday, September 18, 2009
  82. 82. Process - Outcome Participants Friday, September 18, 2009
  83. 83. Driven by experience Friday, September 18, 2009
  84. 84. Ad hoc Friday, September 18, 2009
  85. 85. Results-oriented Friday, September 18, 2009
  86. 86. Willing to compromise Friday, September 18, 2009
  87. 87. “Just get it done” Friday, September 18, 2009
  88. 88. “Doesn’t have to be pretty” Friday, September 18, 2009
  89. 89. Short term vs. long term Friday, September 18, 2009
  90. 90. What kind of agile? Friday, September 18, 2009
  91. 91. No Process Friday, September 18, 2009
  92. 92. Friday, September 18, 2009
  93. 93. Lisp vs. Perl Friday, September 18, 2009
  94. 94. Friday, September 18, 2009
  95. 95. Friday, September 18, 2009
  96. 96. Act - Effect Actor Friday, September 18, 2009
  97. 97. Friday, September 18, 2009
  98. 98. Friday, September 18, 2009
  99. 99. Philosophy Friday, September 18, 2009
  100. 100. Philosophy Ethics Friday, September 18, 2009
  101. 101. Philosophy Ethics Politics Friday, September 18, 2009
  102. 102. Philosophy Ethics Politics Rhetoric Friday, September 18, 2009
  103. 103. Philosophy Ethics Politics Rhetoric Aesthetics Friday, September 18, 2009
  104. 104. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Friday, September 18, 2009
  105. 105. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Biology Friday, September 18, 2009
  106. 106. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Biology Physics Friday, September 18, 2009
  107. 107. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Biology Physics Astronomy Friday, September 18, 2009
  108. 108. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Biology Physics Astronomy Economics Friday, September 18, 2009
  109. 109. Philosophy Ethics Politics Rhetoric Aesthetics Psychology Biology Physics Astronomy Economics Logic Friday, September 18, 2009
  110. 110. Friday, September 18, 2009
  111. 111. Friday, September 18, 2009
  112. 112. (practical) wisdom Friday, September 18, 2009
  113. 113. (practical) wisdom aiming at virtues Friday, September 18, 2009
  114. 114. (practical) wisdom aiming at virtues combined with moral strength Friday, September 18, 2009
  115. 115. (practical) wisdom aiming at virtues combined with moral strength leading to happiness Friday, September 18, 2009
  116. 116. (practical) wisdom Friday, September 18, 2009
  117. 117. aiming at virtues Friday, September 18, 2009
  118. 118. Courage Temperance Pride Generosity Good temper Truthfulness Wit Friendliness Modesty Righteous Indignation Friday, September 18, 2009
  119. 119. Excess (too much) Virtue (just right) Defect (too little) Rashness Courage Cowardice Temperance Pride Generosity Good temper Truthfulness Wit Friendliness Modesty Righteous Indignation Friday, September 18, 2009
  120. 120. Excess (too much) Virtue (just right) Defect (too little) Rashness Courage Cowardice Indulgence Temperance Insensibility Vanity Pride Lack of ambition Prodigality Generosity Illiberality Irascability Good temper Lack of spirit Boastfulness Truthfulness False Modesty Buffoonery Wit Boorishness Obsequiousness Friendliness Cantankerousness Shyness Modesty Shamelessness Righteous Envy Spitefulness Indignation Friday, September 18, 2009
  121. 121. combined with moral strength Friday, September 18, 2009
  122. 122. leading to happiness Friday, September 18, 2009
  123. 123. modeling Friday, September 18, 2009
  124. 124. Friday, September 18, 2009
  125. 125. practice Friday, September 18, 2009
  126. 126. bootstrapping Friday, September 18, 2009
  127. 127. Friday, September 18, 2009
  128. 128. Friday, September 18, 2009
  129. 129. Downsides Friday, September 18, 2009
  130. 130. Virtue-based software development Friday, September 18, 2009
  131. 131. Act - Effect Actor Friday, September 18, 2009
  132. 132. Process - Outcome Participants Friday, September 18, 2009
  133. 133. Education and training Friday, September 18, 2009
  134. 134. Pride Friday, September 18, 2009
  135. 135. Sane work schedules Friday, September 18, 2009
  136. 136. Empower developers Friday, September 18, 2009
  137. 137. Mentoring Friday, September 18, 2009
  138. 138. Right people -> right outcomes Friday, September 18, 2009
  139. 139. What kind of agile? Friday, September 18, 2009
  140. 140. Natural Friday, September 18, 2009
  141. 141. Friday, September 18, 2009
  142. 142. Empower programmers Friday, September 18, 2009
  143. 143. Self-effacing Friday, September 18, 2009
  144. 144. Pleasant to write Friday, September 18, 2009
  145. 145. Happy and virtuous Friday, September 18, 2009
  146. 146. virtues, not rules Friday, September 18, 2009
  147. 147. virtues, not rules moderation, not excess Friday, September 18, 2009
  148. 148. virtues, not rules moderation, not excess judgment, not process Friday, September 18, 2009
  149. 149. virtues, not rules moderation, not excess judgment, not process whole of life Friday, September 18, 2009
  150. 150. virtues, not rules moderation, not excess judgment, not process whole of life happiness Friday, September 18, 2009
  151. 151. Thanks! Slides at: http://railspikes.com Aristotle, Nicomachean Ethics Friday, September 18, 2009
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×