SlideShare a Scribd company logo
1 of 62
Download to read offline
Crashing and uncrashing
a social startup

  RailsWayCon Berlin
  June 1st, 2010

  Till Behnke, co-founder, CEO
  Phillip Oertel, CTO
Audience survey!
Audience survey!
  1. Whatʻs your Rails version?
Audience survey!
  1. Whatʻs your Rails version?
  2. Do you look into the Rails source?
Audience survey!
  1. Whatʻs your Rails version?
  2. Do you look into the Rails source?
  3. Whatʻs your team size?
Audience survey!
  1. Whatʻs your Rails version?
  2. Do you look into the Rails source?
  3. Whatʻs your team size?
  4. Why do you attend the talk?
Take-Aways
  1. An approach to do Rails updates, and
     project recoveries in general
  2. Typical issues during Rails updates
  3. How to prevent history from repeating itself
What we do
   Introducing betterplace.org
How we got there.
The beginning: Business & IT
A growing organisation...
...without funding.
A growing organisation...
...without funding.
Fluctuation of staff.




                        >20 thousand lines
                        of code...
First time funding...
...and a team.




                        Rewrite?
Starting point:
betterplace in January

   Original developers were long gone
   15.000 LOC, 16.000 LOT, 72 controllers, 160 models
   Running Rails 2.0.2, released December 2007
   Running mongrels, beanstalk 0.7, hyperestraier
   Code sometimes over-engineered, hard to understand,
    or hackish
   Lots of leftover code from one-time campaigns and features that
    never went live


   ~3 developers, 3 months time
Before you start
    Some precautions
Convince



   thereʻs no point in arguing if your organisation doesnʻt feel the
    pain itself
   donʻt just complain; developers complain all the time
   instead, show how the technical improvements will help your
    organisation to reach its goals
Manage expectations:
You certainly wonʻt fix everything.

   Your own
   Your teamʻs
   Your organisationʻs
For the team:
make a list of tech debt




                           8
Watch team morale
Watch team morale




                    http://www.flickr.com/photos/e-ality
Watch team morale



   Work in pairs, extensively
   Remove the uncertainty of what you will need to do
   Show progress and remaining time on big visible charts
   Do retrospectives
The approach
   A lot more than coding
The approach
The approach




  4. Do the actual update
The approach




  4. Do the actual update


  6. Release
The approach



  1. Reduce app to the min




  4. Do the actual update


  6. Release
The approach



  1. Reduce app to the min
  2. Bring test coverage up


  4. Do the actual update


  6. Release
The approach



  1. Reduce app to the min
  2. Bring test coverage up
  3. Do a spike
  4. Do the actual update


  6. Release
The approach



  1. Reduce app to the min
  2. Bring test coverage up
  3. Do a spike
  4. Do the actual update
  5. Throw a test party
  6. Release
The approach



  1. Reduce app to the min
  2. Bring test coverage up
  3. Do a spike
  4. Do the actual update
  5. Throw a test party
  6. Release
  7. Fix missed bugs
1. Reduce app to the minimum



   throw out non- or hardly used features
   throw out commented out code
   get rid of unused plugins, gems, other files
2. Bring test coverage up
Make a list of all features
Cucumber is your friend.
3. Do a spike
When spiking, you have the
license to make a mess.
4. Do the actual update



   work off your list made during the spike
   run rake rails:update
Rails internals



   i18n
   CGI => Rack in 2.3:
    review sessions, cookies, uploads, JSON/XML APIs
   review new rails defaults:
    ActiveRecord::Base.include_root_in_json, ...
   order of observer/callback firing has changed
Plugins



   attachment_fu
   active_merchant
   cucumber
   find_by_param
   haml
   rspec
   typus
5. Throw a party with the whole
team, and test
6. Release it!
7. Fix the bugs you missed,
immediately
Declare victory!




                   http://www.flickr.com/photos/annieinbeziers/1504067303/
Done. Done?
Start using new Rails features


  class Project < ActiveRecord::Base

    named_scope :completed,
      :conditions => 'projects.completed_at IS NOT NULL',
      :order => 'projects.completed_at DESC'
    named_scope :featured, :conditions => 'projects.featured != 0'
    named_scope :visible, :conditions => { :hidden => 0 }
    named_scope :lang, lambda { |lang| %w(en de).include?(lang) ...

  ...

  # app/views/groups/new_groups/_section_header.haml

  #amount_donors.fl
    %span.label=t(".amount_donors")
    %span.amount=@group.members.size

  ...
But if you just do this,
history will probably repeat itself.

   „Always leave the campsite cleaner than you found it“
   Schedule larger improvements
   Build a team, distribute knowledge: „If you want to go fast, go
    alone. If you want to go far, go together.“
   Build trust: be transparent, measure.
   Bring in new people.


   Establish a pull-based software development process
Q&A
Work for us!

    Here in Berlin, Kreuzberg.
    jobs@betterplace.org
Vielen Dank.




betterplace gemeinnützige Stiftungs-GmbH
Till Behnke, Phillip Oertel

Schlesische Strasse 26
10997 Berlin
Tel +49 30 76 76 44 88-0
Fax +49 30 76 76 44 88-40
change@betterplace.org
Stub example

More Related Content

Viewers also liked

Torwegge Vestiging München opent zijn deuren!
Torwegge Vestiging München opent zijn deuren!Torwegge Vestiging München opent zijn deuren!
Torwegge Vestiging München opent zijn deuren!Torwegge Group
 
Gutierrez et al. 2015 geoderma
Gutierrez et al. 2015 geodermaGutierrez et al. 2015 geoderma
Gutierrez et al. 2015 geodermaMaria Pérez
 
Producto colectivo historieta tics
Producto colectivo historieta ticsProducto colectivo historieta tics
Producto colectivo historieta ticsaldo rivera
 
Two for Attack: Web and Email Content Protection
Two for Attack: Web and Email Content ProtectionTwo for Attack: Web and Email Content Protection
Two for Attack: Web and Email Content ProtectionCisco Canada
 
ImagebroschüRe D 11 09
ImagebroschüRe D 11 09ImagebroschüRe D 11 09
ImagebroschüRe D 11 09aloahe2
 
Enfermedades HistóRicas
Enfermedades HistóRicasEnfermedades HistóRicas
Enfermedades HistóRicasstefanyolga
 
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013Diego Molano Vega
 
Management of information system report
Management of information system reportManagement of information system report
Management of information system reportMagdy Abdelsattar Omar
 
Doors Getting Started
Doors Getting StartedDoors Getting Started
Doors Getting Startedsong4fun
 

Viewers also liked (12)

Torwegge Vestiging München opent zijn deuren!
Torwegge Vestiging München opent zijn deuren!Torwegge Vestiging München opent zijn deuren!
Torwegge Vestiging München opent zijn deuren!
 
Gutierrez et al. 2015 geoderma
Gutierrez et al. 2015 geodermaGutierrez et al. 2015 geoderma
Gutierrez et al. 2015 geoderma
 
Producto colectivo historieta tics
Producto colectivo historieta ticsProducto colectivo historieta tics
Producto colectivo historieta tics
 
Two for Attack: Web and Email Content Protection
Two for Attack: Web and Email Content ProtectionTwo for Attack: Web and Email Content Protection
Two for Attack: Web and Email Content Protection
 
ImagebroschüRe D 11 09
ImagebroschüRe D 11 09ImagebroschüRe D 11 09
ImagebroschüRe D 11 09
 
Enfermedades HistóRicas
Enfermedades HistóRicasEnfermedades HistóRicas
Enfermedades HistóRicas
 
Autolesiones
AutolesionesAutolesiones
Autolesiones
 
Fun quiz
Fun quizFun quiz
Fun quiz
 
Pionieri
PionieriPionieri
Pionieri
 
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013
Encuesta de cultura digital en Colombia - Centro Nacional de Consultoría 2013
 
Management of information system report
Management of information system reportManagement of information system report
Management of information system report
 
Doors Getting Started
Doors Getting StartedDoors Getting Started
Doors Getting Started
 

Recently uploaded

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

betterplace.org: Crashing and uncrashing a social startup

  • 1.
  • 2. Crashing and uncrashing a social startup RailsWayCon Berlin June 1st, 2010 Till Behnke, co-founder, CEO Phillip Oertel, CTO
  • 4. Audience survey! 1. Whatʻs your Rails version?
  • 5. Audience survey! 1. Whatʻs your Rails version? 2. Do you look into the Rails source?
  • 6. Audience survey! 1. Whatʻs your Rails version? 2. Do you look into the Rails source? 3. Whatʻs your team size?
  • 7. Audience survey! 1. Whatʻs your Rails version? 2. Do you look into the Rails source? 3. Whatʻs your team size? 4. Why do you attend the talk?
  • 8. Take-Aways 1. An approach to do Rails updates, and project recoveries in general 2. Typical issues during Rails updates 3. How to prevent history from repeating itself
  • 9. What we do Introducing betterplace.org
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. How we got there.
  • 25. Fluctuation of staff. >20 thousand lines of code...
  • 26. First time funding... ...and a team. Rewrite?
  • 27. Starting point: betterplace in January  Original developers were long gone  15.000 LOC, 16.000 LOT, 72 controllers, 160 models  Running Rails 2.0.2, released December 2007  Running mongrels, beanstalk 0.7, hyperestraier  Code sometimes over-engineered, hard to understand, or hackish  Lots of leftover code from one-time campaigns and features that never went live  ~3 developers, 3 months time
  • 28. Before you start Some precautions
  • 29. Convince  thereʻs no point in arguing if your organisation doesnʻt feel the pain itself  donʻt just complain; developers complain all the time  instead, show how the technical improvements will help your organisation to reach its goals
  • 30. Manage expectations: You certainly wonʻt fix everything.  Your own  Your teamʻs  Your organisationʻs
  • 31. For the team: make a list of tech debt 8
  • 33. Watch team morale http://www.flickr.com/photos/e-ality
  • 34. Watch team morale  Work in pairs, extensively  Remove the uncertainty of what you will need to do  Show progress and remaining time on big visible charts  Do retrospectives
  • 35. The approach A lot more than coding
  • 37. The approach 4. Do the actual update
  • 38. The approach 4. Do the actual update 6. Release
  • 39. The approach 1. Reduce app to the min 4. Do the actual update 6. Release
  • 40. The approach 1. Reduce app to the min 2. Bring test coverage up 4. Do the actual update 6. Release
  • 41. The approach 1. Reduce app to the min 2. Bring test coverage up 3. Do a spike 4. Do the actual update 6. Release
  • 42. The approach 1. Reduce app to the min 2. Bring test coverage up 3. Do a spike 4. Do the actual update 5. Throw a test party 6. Release
  • 43. The approach 1. Reduce app to the min 2. Bring test coverage up 3. Do a spike 4. Do the actual update 5. Throw a test party 6. Release 7. Fix missed bugs
  • 44. 1. Reduce app to the minimum  throw out non- or hardly used features  throw out commented out code  get rid of unused plugins, gems, other files
  • 45. 2. Bring test coverage up Make a list of all features
  • 46. Cucumber is your friend.
  • 47. 3. Do a spike
  • 48. When spiking, you have the license to make a mess.
  • 49. 4. Do the actual update  work off your list made during the spike  run rake rails:update
  • 50. Rails internals  i18n  CGI => Rack in 2.3: review sessions, cookies, uploads, JSON/XML APIs  review new rails defaults: ActiveRecord::Base.include_root_in_json, ...  order of observer/callback firing has changed
  • 51. Plugins  attachment_fu  active_merchant  cucumber  find_by_param  haml  rspec  typus
  • 52. 5. Throw a party with the whole team, and test
  • 54. 7. Fix the bugs you missed, immediately
  • 55. Declare victory! http://www.flickr.com/photos/annieinbeziers/1504067303/
  • 57. Start using new Rails features class Project < ActiveRecord::Base named_scope :completed, :conditions => 'projects.completed_at IS NOT NULL', :order => 'projects.completed_at DESC' named_scope :featured, :conditions => 'projects.featured != 0' named_scope :visible, :conditions => { :hidden => 0 } named_scope :lang, lambda { |lang| %w(en de).include?(lang) ... ... # app/views/groups/new_groups/_section_header.haml #amount_donors.fl %span.label=t(".amount_donors") %span.amount=@group.members.size ...
  • 58. But if you just do this, history will probably repeat itself.  „Always leave the campsite cleaner than you found it“  Schedule larger improvements  Build a team, distribute knowledge: „If you want to go fast, go alone. If you want to go far, go together.“  Build trust: be transparent, measure.  Bring in new people.  Establish a pull-based software development process
  • 59. Q&A
  • 60. Work for us! Here in Berlin, Kreuzberg. jobs@betterplace.org
  • 61. Vielen Dank. betterplace gemeinnützige Stiftungs-GmbH Till Behnke, Phillip Oertel Schlesische Strasse 26 10997 Berlin Tel +49 30 76 76 44 88-0 Fax +49 30 76 76 44 88-40 change@betterplace.org