Building Great Software By Accident by Garrett Smith

701 views
576 views

Published on

Is it possible to build amazing software without designing it? Do we need to strictly control the development process to get great results?

In this talk Garrett Smith will argue that the best software isn’t designed — it evolves! He will present a methodology based on micro iterations — very small changes — that are made using one rule: only ever do the next obvious thing! Design gives way to experimentation and accidents are not only tolerated, they’re central to the process!

WARNING: Contains dangerous ideas that will leave you unsettled with a curious sense of empowerment :)

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

  • Be the first to like this

No Downloads
Views
Total views
701
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Building Great Software By Accident by Garrett Smith

  1. 1. Building Great Software By AccidentCodemotion, Berlin 2013Garrett Smith, CloudBees@gar1t
  2. 2. A Cold Night,A Long Time Ago...
  3. 3. Introducing: Drunken Stumble
  4. 4. The LeanGo "That­A­Way"Aka "Vision", "Goal", "Objective"Imprecise scienceNot design
  5. 5. The StumbleOnly ever do the next obvious thingSteps are sequential, automatic and reflexiveMinimize thinking, maximize actingErratic with some mistakes accidents
  6. 6. How To Drunken Stumble
  7. 7. Knowing Your Limitations
  8. 8. Lulz, but srsly
  9. 9. It Works!
  10. 10. Tuna"Counter­current exchange" circulatory and respiratory systemMax speed 75 km/h (47 mph) (max manmade submersible 61 km/h)Depressible dorsal fins
  11. 11. Design?
  12. 12. Example: genapp
  13. 13. genappAgent based software deployments across CloudBeesSupports any software stack via plugins (30 and counting)Easy to aggregate plugins to install complex systemsEasy to build plugins
  14. 14. "Design" DecisionsBash (vs Python, Perl, Ruby, Java, etc.)Plugins (user space)Extensions (genapp/core space)Coordinated Setup
  15. 15. "Great" Software?Not perfectNot necessarily beautifulNo moral prerogativeWorksWill work better over time
  16. 16. Example: Terrible User Messages
  17. 17. Wait, What?#beesapp:deploy-aspike/jetty2-tjavatarget/helloworld-1.0-SNAPSHOT.jarDeployingapplicationspike/jetty2(environment:):target/helloworld-1.0-SNAPSHOT.jarApplicationparameters:{containerType=java}........................uploaded25%........................uploaded50%........................uploaded75%........................uploadcompleteddeployingapplicationtoserver(s)...May7,20139:39:13AMcom.cloudbees.api.BeesClientapplicationDeployArchiveSEVERE:Invalidapplicationdeploymentresponse:spike/jetty2com.cloudbees.api.BeesClientException:Server.InternalError-java.lang.IllegalArgumentException:plugin_setup_error:java1Creatingapplicationskeletonat/var/genapp/apps/c7d53a51Copyingapplicationfilesto/var/genapp/apps/c7d53a51/appInstallinggenappjavaagentWritingconfigurationto/var/genapp/apps/c7d53a51/.genapp/control/configUsingJAVAat/opt/java7/bin/javaMissingrequiredmetadatajava_class-plugin_setup_error:java1Creatingapplicationskeletonat/var/genapp/apps/c7d53a51Copyingapplicationfilesto/var/genapp/apps/c7d53a51/appInstallinggenappjavaagentWritingconfigurationto/var/genapp/apps/c7d53a51/.genapp/control/configUsingJAVAat/opt/java7/bin/javaMissingrequiredmetadatajava_classatcom.cloudbees.api.BeesClient.readResponse(BeesClient.java:1121)atcom.cloudbees.api.BeesClient.applicationDeployArchive(BeesClient.java:638)atcom.cloudbees.sdk.commands.app.ApplicationDeploy.execute(ApplicationDeploy.java:320)atcom.cloudbees.sdk.commands.Command.run(Command.java:180)atcom.cloudbees.sdk.commands.Command.run(Command.java:93)atcom.cloudbees.sdk.Bees.run(Bees.java:142)atcom.cloudbees.sdk.Bees.main(Bees.java:336)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atcom.cloudbees.sdk.boot2.BeesLoader.run(BeesLoader.java:159)atcom.cloudbees.sdk.boot2.BeesLoader.main(BeesLoader.java:62)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atcom.cloudbees.sdk.boot.Launcher.main(Launcher.java:64)ERROR:Server.InternalError-java.lang.IllegalArgumentException:plugin_setup_error:java1Creatingapplicationskeletonat/var/genapp/apps/c7d53a51Copyingapplicationfilesto/var/genapp/apps/c7d53a51/appInstallinggenappjavaagentWritingconfigurationto/var/genapp/apps/c7d53a51/.genapp/control/configUsingJAVAat/opt/java7/bin/javaMissingrequiredmetadatajava_class-plugin_setup_error:java1Creatingapplicationskeletonat/var/genapp/apps/c7d53a51Copyingapplicationfilesto/var/genapp/apps/c7d53a51/appInstallinggenappjavaagentWritingconfigurationto/var/genapp/apps/c7d53a51/.genapp/control/configUsingJAVAat/opt/java7/bin/javaMissingrequiredmetadatajava_class
  18. 18. Lean: More Signal, Less Noise
  19. 19. The StumbleIdentified 4 possible next stepsNothing obvious initiallyMy initial "next obvious" turned out to be obviously notAfter stress free, open consideration, one step became truly obviously next
  20. 20. On Design
  21. 21. The Temptation of Design
  22. 22. The Problem With Design
  23. 23. Design?
  24. 24. The ProcessImagine a thing (lean)Tinker with thing in mind (stumble)Once you have something good, claim it was your idea (lie)
  25. 25. Common Questions
  26. 26. ExperienceAffects "lean"Affects "obviousness"Does not otherwise affect the processIf you dont have a stumble reflex, you aint goin nowhere
  27. 27. ObviousCarefully chosen termDeliberately subjectiveVery hard to achieve, especially in groupsReal workUsually trivial to implement
  28. 28. NOT Agile!
  29. 29. Drunken Stumble is Suitable
  30. 30. In ConclusionIts more efficient not to designIf your design has flaws, Drunken Stumble will fix themIf your design is perfect, Drunken Stumble will get there anyway
  31. 31. Questions?Twitter:   @gar1tBlog:       gar1t.com

×