Building Great Software By Accident by Garrett Smith
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Building Great Software By Accident by Garrett Smith

on

  • 708 views

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

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 :)

Statistics

Views

Total Views
708
Views on SlideShare
695
Embed Views
13

Actions

Likes
0
Downloads
5
Comments
0

2 Embeds 13

http://berlin.codemotionworld.com 12
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Building Great Software By Accident by Garrett Smith Presentation Transcript

  • 1. Building Great Software By AccidentCodemotion, Berlin 2013Garrett Smith, CloudBees@gar1t
  • 2. A Cold Night,A Long Time Ago...
  • 3. Introducing: Drunken Stumble
  • 4. The LeanGo "That­A­Way"Aka "Vision", "Goal", "Objective"Imprecise scienceNot design
  • 5. The StumbleOnly ever do the next obvious thingSteps are sequential, automatic and reflexiveMinimize thinking, maximize actingErratic with some mistakes accidents
  • 6. How To Drunken Stumble
  • 7. Knowing Your Limitations
  • 8. Lulz, but srsly
  • 9. It Works!
  • 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. Design?
  • 12. Example: genapp
  • 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. "Design" DecisionsBash (vs Python, Perl, Ruby, Java, etc.)Plugins (user space)Extensions (genapp/core space)Coordinated Setup
  • 15. "Great" Software?Not perfectNot necessarily beautifulNo moral prerogativeWorksWill work better over time
  • 16. Example: Terrible User Messages
  • 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. Lean: More Signal, Less Noise
  • 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. On Design
  • 21. The Temptation of Design
  • 22. The Problem With Design
  • 23. Design?
  • 24. The ProcessImagine a thing (lean)Tinker with thing in mind (stumble)Once you have something good, claim it was your idea (lie)
  • 25. Common Questions
  • 26. ExperienceAffects "lean"Affects "obviousness"Does not otherwise affect the processIf you dont have a stumble reflex, you aint goin nowhere
  • 27. ObviousCarefully chosen termDeliberately subjectiveVery hard to achieve, especially in groupsReal workUsually trivial to implement
  • 28. NOT Agile!
  • 29. Drunken Stumble is Suitable
  • 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. Questions?Twitter:   @gar1tBlog:       gar1t.com