Slide 1

Slide 1 text

KEYNOTE Dr Nic Williams @drnic | drnicwilliams.com VP Dev Evangelism, Engine Yard

Slide 2

Slide 2 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 3

Slide 3 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 4

Slide 4 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 5

Slide 5 text

GO GO FAST AS A DEVELOPER Dr Nic Williams @drnic | drnicwilliams.com VP Dev Evangelism, Engine Yard

Slide 6

Slide 6 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 7

Slide 7 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 8

Slide 8 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 9

Slide 9 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 STORY #1 In the beginning

Slide 10

Slide 10 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2006 1

Slide 11

Slide 11 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2006 mid 2009 1 75

Slide 12

Slide 12 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 the problem http://www.infoq.com/presentations/williams-open-source

Slide 13

Slide 13 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 How do you go fast whilst living with the consequences of your creations?

Slide 14

Slide 14 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2006 mid 2012 mid 2009 257

Slide 15

Slide 15 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 What is “go fast”?

Slide 16

Slide 16 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 to go fast: quickly iterating towards your goals

Slide 17

Slide 17 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 18

Slide 18 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 experiments small batches continuous deployment

Slide 19

Slide 19 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 1. 2. 3...

Slide 20

Slide 20 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 start fast stay fast hand off continuously

Slide 21

Slide 21 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 generators dev tools deployment tools

Slide 22

Slide 22 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 “go slow”? • Add features that aren’t important • Fix bugs that aren’t important • Maintain unimportant features • Do all the work yourself

Slide 23

Slide 23 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 start fast stay fast hand off continuously

Slide 24

Slide 24 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 start fast • Create and use generators • If low cost to create, low cost to throw away • Bootstrap your universe

Slide 25

Slide 25 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 stay fast • Internal generators • Dev & deployment tools • Code Gardening

Slide 26

Slide 26 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 hand off continuously • Bootstrapping new developers • Document continuously • Homogenous codebases • Promote contributors

Slide 27

Slide 27 text

STORY #2 Start fast - Application generators

Slide 28

Slide 28 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2006 1 mid 2012 mid 2009 257

Slide 29

Slide 29 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2005 mid 2006 0 257 mid 2012

Slide 30

Slide 30 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 first projects • composite_primary_keys • dr_nic_magic_models

Slide 31

Slide 31 text

YOUR COMPANY NAME | LONG AND INTERESTING PRESENTATION TITLE | VERSION NO. XX | 06 /02/2012 $  rails  new  bigidea $  rails  g  model  Post $  rake  db:migrate $  ey  deploy missing concepts

Slide 32

Slide 32 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 $ appscrolls new bigidea -s postgresql \ twitter_bootstrap github eycloud install it store it deploy it

Slide 33

Slide 33 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 ruby in 2006 • Rails - nice structure, generators, textmate support • Rails plugins - nice structure, generator • RubyGems/Ruby - no structure, no tools

Slide 34

Slide 34 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 structure ruby code? • Jay Fields: “How would you structure a (non-Rails) Ruby project?” • http://blog.jayfields.com/ 2006/10/ruby-project-tree.html

Slide 35

Slide 35 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 newgem

Slide 36

Slide 36 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 newgem hoe Scaffold Dev & Deploy tools

Slide 37

Slide 37 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 your company best practices • How do applications look? • How are they deployed? • Document best practices • Generate best practises

Slide 38

Slide 38 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 “It’s not Rails best practice until it’s in the generators” Jeff Casimir at JRubyConf

Slide 39

Slide 39 text

STORY #3 Stay fast - component generators

Slide 40

Slide 40 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Start fast Stay fast $  rails  new  bigidea $  rails  g  model  Post

Slide 41

Slide 41 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Let’s make a generator!

Slide 42

Slide 42 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 43

Slide 43 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 $ thor :thing foo exist create lib/foo.rb create spec/foo_spec.rb $ thor :thing bar exist create lib/bar.rb create spec/bar_spec.rb

Slide 44

Slide 44 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 45

Slide 45 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 46

Slide 46 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 # Thorfile require 'active_support/inflector' class Default < Thor include Thor::Actions attr_reader :name source_root File.expand_path("../templates", __FILE__) desc "thing NAME", "Create a new thing" def thing(name) @name = name directory "thing", "." end end example at https://github.com/drnic/things

Slide 47

Slide 47 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 $ rails g Usage: rails generate GENERATOR [args] ... Bootstrap: bootstrap:install bootstrap:layout bootstrap:themed Coffee: coffee:assets Cucumber: cucumber:install rails generators

Slide 48

Slide 48 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 appscrolls gem_group :test do gem 'cucumber-rails', :require => false gem 'capybara' gem 'database_cleaner' end after_bundler do rake "db:create" generate "cucumber:install" end

Slide 49

Slide 49 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 textmate bundles

Slide 50

Slide 50 text

STORY #4 Stay fast - code gardening

Slide 51

Slide 51 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 mid 2006 1 mid 2012 mid 2009 257

Slide 52

Slide 52 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 code Gardening

Slide 53

Slide 53 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 54

Slide 54 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 me previous me future me

Slide 55

Slide 55 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 send love letters to future you code Gardening

Slide 56

Slide 56 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Track your gardening • http://gitalytics.com/user • Search for @you • Gardened ___ repos $('#contribs_table tr').size()

Slide 57

Slide 57 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers

Slide 58

Slide 58 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46

Slide 59

Slide 59 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55

Slide 60

Slide 60 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55 • @leshill - 56

Slide 61

Slide 61 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55 • @leshill - 56 • @bmizerany - 94

Slide 62

Slide 62 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55 • @leshill - 56 • @bmizerany - 94 • @schacon - 137

Slide 63

Slide 63 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55 • @leshill - 56 • @bmizerany - 94 • @schacon - 137 • @tenderlove - 143

Slide 64

Slide 64 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 Top gardeners speakers • @deadprogrammer - 46 • @geemus - 55 • @leshill - 56 • @bmizerany - 94 • @schacon - 137 • @tenderlove - 143 • @drnic - 257

Slide 65

Slide 65 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 crowd interactive gardeners • Edwdin - @softr8 - 11 • Mario - @mariochavez - 15

Slide 66

Slide 66 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 how to garden • bundle  list • pick one & download its source • try to use it • fix README & docs for next person

Slide 67

Slide 67 text

STORY #5 Hand off continuously

Slide 68

Slide 68 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 newgem history • 2006 - create files & folders • 2007 - using rubigen - Rails’ own generator system • 2010 - abandoned - “bundle gem”

Slide 69

Slide 69 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 “There is no bigger destroyer of creative potential than the misguided decision to persevere”

Slide 70

Slide 70 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 you cannot write today’s code If you’re stuck on Yesterday’s coDE

Slide 71

Slide 71 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 is this your old code?

Slide 72

Slide 72 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 need more Docs? generators? tests? • For each file/class/module • Why does it exist? • How do you use it? • Answer in documentation/ generators/tests

Slide 73

Slide 73 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 remember: go faster • without interruption • reduce work on old code • “what to do next?” quickly

Slide 74

Slide 74 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 start fast stay fast hand off continuously

Slide 75

Slide 75 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 76

Slide 76 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012

Slide 77

Slide 77 text

DR NIC | GO GO FAST AS A DEVELOPER | MAGMARAILS 2012 start fast stay fast hand off continuously