Growing Large
Web Applications
Cezar Hălmăgean
So#ware Development Consultant
I help Ruby on Rails developers ship high-quality code faster
Owner @ Mix & Go SRL
mixandgo.com
The usual suspects @ scale
A lot of concurrent users
How many users can our site handle?
Huge amounts of data
How fast can we process data?
Responsiveness
How much 6me does it take to load a page?
Market share dominaJon
How fast can we build new features?
Employee retenJon
How can we make sure people don't leave?
PERFORMANCE
SPEED
Market share means $$$
The problem is complexity
Complexity symptoms
Bugs
The number of bugs is significant.
Development speed
It takes forever to build new features.
Micromanagement
Management doesn't trust employees.
Confidence
Developers lack confidence in their work.
Not sure how
I got here...
The hunt for $$$
Idea
"Let's make a social network for ants"
Throw some code on the wall
and hope it doesn't fall off.
Ship it
"Mom! Look! I'm going to be rich."
Watch it sink
And don't tell mom... yet.
Repeat
and hope for the best.
Someone
signed up!
Guess what
happens next!
IDEA
CODE
FAIL
More features
SPEED!
Foundation
So what?
Development speed decreases
There's increasingly more complexity to consider.
Change will be hard
Dependencies keep growing.
Work becomes stressful
Because everything you do is a new bug.
Micromanagement starts to show up
Because managers won't trust your ability to deliver anymore.
Employees burn out, and eventually leave
High stress == Lower reten6on
How to do it right
Improve team communicaJon
Develop systems that make communica6on easier
Start tesJng before it's too late
Automated tes6ng is so important.
Invest in good design
Code design can make a big difference.
Use the best tools
Editors, compilers, sta6c typing, beMer programming languages.
Code review
Helps junior learn, and keep developers aligned.
Communication
DevQABA
User story
Feature: User registration
As a first time visitor
I want to be able to create an account
So that I can access the members area
Scenario: I create an account
Given I am on the homepage
And I click on the registration link
When I fill in and submit the registration form
Then I should see a registration confirmation message
Automated tests
bit.ly/test_first
Feature Tests vs. Integration Tests vs. Unit Tests
Code design
Tools
Tools
Code reviews
Cezar Hălmăgean
@ c halm age an
m ixandgo. com
Growing Large Web Applications

Growing large web applications

  • 1.
  • 2.
    Cezar Hălmăgean So#ware DevelopmentConsultant I help Ruby on Rails developers ship high-quality code faster Owner @ Mix & Go SRL mixandgo.com
  • 3.
    The usual suspects@ scale A lot of concurrent users How many users can our site handle? Huge amounts of data How fast can we process data? Responsiveness How much 6me does it take to load a page? Market share dominaJon How fast can we build new features? Employee retenJon How can we make sure people don't leave? PERFORMANCE SPEED
  • 4.
  • 6.
    The problem iscomplexity
  • 7.
    Complexity symptoms Bugs The numberof bugs is significant. Development speed It takes forever to build new features. Micromanagement Management doesn't trust employees. Confidence Developers lack confidence in their work.
  • 9.
    Not sure how Igot here...
  • 10.
    The hunt for$$$ Idea "Let's make a social network for ants" Throw some code on the wall and hope it doesn't fall off. Ship it "Mom! Look! I'm going to be rich." Watch it sink And don't tell mom... yet. Repeat and hope for the best.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
    So what? Development speeddecreases There's increasingly more complexity to consider. Change will be hard Dependencies keep growing. Work becomes stressful Because everything you do is a new bug. Micromanagement starts to show up Because managers won't trust your ability to deliver anymore. Employees burn out, and eventually leave High stress == Lower reten6on
  • 16.
    How to doit right Improve team communicaJon Develop systems that make communica6on easier Start tesJng before it's too late Automated tes6ng is so important. Invest in good design Code design can make a big difference. Use the best tools Editors, compilers, sta6c typing, beMer programming languages. Code review Helps junior learn, and keep developers aligned.
  • 17.
  • 18.
    User story Feature: Userregistration As a first time visitor I want to be able to create an account So that I can access the members area Scenario: I create an account Given I am on the homepage And I click on the registration link When I fill in and submit the registration form Then I should see a registration confirmation message
  • 19.
    Automated tests bit.ly/test_first Feature Testsvs. Integration Tests vs. Unit Tests
  • 20.
  • 21.
  • 22.
  • 23.
  • 25.
    Cezar Hălmăgean @ chalm age an m ixandgo. com Growing Large Web Applications