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
Sep 21, 2014
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
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
Athens Silicon ValleyFriday, 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
Act - Effect
Anatomy of an action
Actor
Friday, September 18, 2009
Deontology (Kant)
Act - Effect
Actor
Friday, September 18, 2009
Utilitarianism (Mill)
Act - Effect
Actor
Friday, September 18, 2009
Virtue (Aristotle)
Act - Effect
Actor
Friday, September 18, 2009
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
deontologyduty
Friday, September 18, 2009
Principles
Friday, September 18, 2009
Act only according to that maxim by which you can at the same time will that
it should become a universal law
Categorical Imperative
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
Deontological software development
Friday, September 18, 2009
Don’t Repeat Yourself100% Test CoverageWrite readable code
Friday, September 18, 2009
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
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
Friday, September 18, 2009
Don’t Repeat Yourself
Write clear, understandable code
Friday, September 18, 2009
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
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
<% 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
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 slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism
Friday, September 18, 2009
...way before these things were cool
Opposed slaveryFavored women’s suffrageFree markets(...with proper regulation)Animal rights Environmentalism
John Stuart Mill
Friday, September 18, 2009
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
Utilitariansoftware 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
PhilosophyEthics
Friday, September 18, 2009
PhilosophyEthicsPolitics
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
Aesthetics
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
Biology
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
Astronomy
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
AstronomyEconomics
Friday, September 18, 2009
PhilosophyEthicsPoliticsRhetoric
AestheticsPsychology
BiologyPhysics
AstronomyEconomics
Logic
Friday, September 18, 2009
Friday, September 18, 2009
Friday, September 18, 2009
(practical) wisdom
Friday, September 18, 2009
(practical) wisdom
aiming at virtues
Friday, September 18, 2009
combined with moral strength
(practical) wisdom
aiming at virtues
Friday, September 18, 2009
leading to happiness
combined with moral strength
(practical) wisdom
aiming at virtues
Friday, September 18, 2009
(practical) wisdom
Friday, September 18, 2009
aiming atvirtues
Friday, September 18, 2009
CourageTemperance
PrideGenerosity
Good temperTruthfulness
WitFriendliness
ModestyRighteous Indignation
Friday, September 18, 2009
Excess (too much) Virtue (just right) Defect (too little)Rashness Courage Cowardice
Temperance
Pride
Generosity
Good temper
Truthfulness
Wit
Friendliness
ModestyRighteous Indignation
Friday, September 18, 2009
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
Friday, September 18, 2009
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-basedsoftware 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 rulesmoderation, not excess
Friday, September 18, 2009
virtues, not rulesmoderation, not excessjudgment, not process
Friday, September 18, 2009
virtues, not rulesmoderation, not excessjudgment, not processwhole of life
Friday, September 18, 2009
virtues, not rulesmoderation, not excessjudgment, not processwhole of lifehappiness
Friday, September 18, 2009
Thanks!
Slides at:http://railspikes.com
Aristotle, Nicomachean Ethics
Friday, September 18, 2009