Code as Muse :: Process + Product :: Instructional Art :: Software Art ::
Aristotle and the Art of Software Development
-
date post
21-Sep-2014 -
Category
Business
-
view
24 -
download
2
description
Transcript of Aristotle and the Art of Software Development
Aristotle and the art of software development
Jonathan Dahl
http://tumblon.com (work)http://zencoder.tv (product)http://railspikes.com (blog)
Or: what does Athens have to do with Silicon Valley?
Jonathan Dahl
http://tumblon.com (work)http://zencoder.tv (product)http://railspikes.com (blog)
Athens Silicon Valley
Ethics.
G
PG
PG-13
R
Ethics.
What makes a good programmer?
What makes a good programmer?
What makes a good programmer?
Act - Effect
Anatomy of an action
Actor
Deontology (Kant)
Act - Effect
Actor
Utilitarianism (Mill)
Act - Effect
Actor
Virtue (Aristotle)
Act - Effect
Actor
Immanuel Kant
Königsberg
deontologyduty
Principles
Act only according to that maxim by which you can at the same time will that
it should become a universal law
Categorical Imperative
Don’t Repeat Yourself100% Test CoverageWrite readable code
1.User stories are written.2.Release planning creates the schedule.3.Make frequent small releases.4.The Project Velocity is measured.5.The project is divided into iterations.6.Iteration planning starts each iteration.7.Move people around.8.A stand-up meeting starts each day.9.Fix XP when it breaks.10.Simplicity.11.Choose a system metaphor.12.Use CRC cards for design sessions.13.Create spike solutions to reduce risk.14.No functionality is added early.15.Refactor whenever and wherever possible.
16.The customer is always available.17.Code must be written to agreed standards.18.Code the unit test first.19.All production code is pair programmed.20.Only one pair integrates code at a time.21.Integrate often.22.Use collective code ownership.23.Leave optimization till last.24.No overtime.25.All code must have unit tests.26.All code must pass all unit tests before it can be released.27.When a bug is found tests are created.28.Acceptance tests are run often and the score is published.
XP Rules
Don’t Repeat Yourself
Write clear, understandable code
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
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
<% 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 -%>
John Stuart Mill
John Stuart Mill
Opposed slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism
...way before these things were cool
Opposed slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism
John Stuart Mill
Utilitarianism
Greatest good for the greatest number
The ends justify the means
Lisp vs. Perl
Act - Effect
Actor
Philosophy
PhilosophyEthics
PhilosophyEthicsPolitics
PhilosophyEthicsPoliticsRhetoric
PhilosophyEthicsPoliticsRhetoric
Aesthetics
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
Biology
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
Astronomy
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
AstronomyEconomics
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
AstronomyEconomics
Logic
:ethics
:ethics == : “a life well lived”
:ethics == : “a life well lived” == :happiness
:ethics == : “a life well lived” == :happiness
Eudemonia (happiness)eu: gooddaimon: spirit
:ethics == : “a life well lived” == :happiness == :virtue
:ethics == : “a life well lived” == :happiness == :virtue
CourageTemperance
PrideGenerosity
Good temperTruthfulness
WitFriendliness
ModestyRighteous Indignation
Excess (too much) Virtue (just right) Defect (too little)Rashness Courage Cowardice
Temperance
Pride
Generosity
Good temper
Truthfulness
Wit
Friendliness
ModestyRighteous Indignation
Excess (too much) Virtue (just right) Defect (too little)Rashness Courage Cowardice
Indulgence Temperance InsensibilityVanity Pride Lack of ambition
Prodigality Generosity IlliberalityIrascability Good temper Lack of spirit
Boastfulness Truthfulness False ModestyBuffoonery Wit Boorishness
Obsequiousness Friendliness CantankerousnessShyness Modesty Shamelessness
EnvyRighteous Indignation
Spitefulness
practical wisdom
bootstrapping
modeling
Habits vs. RulesJudgment vs. Ends
Habits vs. RulesJudgment vs. Ends
Empower programmers
Self-effacing
Pleasant to write
Happy and virtuous
virtues, not rules
virtues, not rulesmoderation, not excess
virtues, not rulesmoderation, not excessjudgment, not process
virtues, not rulesmoderation, not excessjudgment, not processwhole of life
virtues, not rulesmoderation, not excessjudgment, not processwhole of lifehappiness
Thanks!
Slides at:http://railspikes.com
Aristotle, Nicomachean Ethics