Twenty start-ups a year
Without going crazy




                      Christopher Marsh
                           Technical Architect, AKQA
Twenty start-ups a year
Without going crazy




                      Christopher Marsh
                           Technical Architect, AKQA
Effort to completion
Pain to completion
Effort to completion
Effort to completion
Predictability!
Predictability!


           Lean philosophy
Predictability!

    Culture of
code craftsmanship
                      Lean philosophy
Continuous delivery




           Predictability!

    Culture of
code craftsmanship
                                Lean philosophy
Lean philosophy
“Lean Startup isn't about being
 cheap [but is about] being less
       wasteful and still doing
           things that are big.”
                        -- Eric Ries
Focus on producing output
Let software engineers engineer
Let project managers manage
Morning stand-up
Who’s it really for?
Meeting invitations
Auto-reject the unknown
“Can you spare me 5 minutes?”
...takes a minimum of an hour
Create design through doing
Things always change before
you’re finished anyway
Understand architecture vs design
Refactoring architecture is hard




     “Architecture represents the significant design decisions that shape a
                system, where significant is measured by cost of change.”

                                                           -- Grady Booch
Prototype responsibly
Destroy when done
Don’t build frameworks
Reusable code emerges naturally
Minimise documentation effort
Most documentation is a
liability, not an asset
Create architecture documents
Don’t create design documents
Write self documenting code
Self maintaining documentation
requires zero extra effort
Optimise communication efficiency
Create knowledge sharing tools
Culture of code craftsmanship
                   “You can’t take pride and
          honour in something that you can’t
                    be held accountable for.”
                         -- Robert “Uncle Bob” Martin
Develop a green build mentality
No excuses, if you’re red - you’re dead
Don’t worry about it
Force a build, it will
pass next time
I didn’t break it
So I don’t need to fix it
That’s always broken
I can’t remember the
last time the codebase
was updated
I’m looking at it now
But it looks like it’s
going to take a
while to fix
The rules
 Never commit on a broken build
   Fix broken build within 10 minutes
      The team is responsible for the build
Seek constant peer review
You work with smart people,
so help them to help you
Target collaboration effort
Eliminate coder’s block by
pair programming
Shout when you need help
It’s not a sign of weakness
Perform code reviews
Automate as much as possible
Create information radiators
Increasing technical debt is difficult
when no one wants to
give you credit
Look further than technology
Respect your colleagues
Reduce complexity
Communicate simply
Reduce complexity
Communicate simply
Use an existing tool
Or mix and match
Continuous Delivery
“Reduce [..] the time it takes from deciding to
make a change [..] to having it available to users.”
-- Jez Humble/David Farley
Create deployment pipelines
Make every commit a potential
release candidate.
Example pipeline
Example pipeline
Example pipeline
Example pipeline
Example pipeline
Example pipeline
Example pipeline
Number of tests
A sanity check


                   Manual tests


                 Integration tests


                  Capacity tests


                 Acceptance tests


                    Unit tests
Pipeline dashboard
ThoughtWorks Go
Maintain infrastructure as code
Consistency means that no server
is a snowflake
“Production-like” starts early
Configure development workstations
automatically
Include all infrastructure
Not just web and application servers
Look at Cloud options
Built-in configuration options
make things easier
Put deployments in the right hands
Deployments are business motivated,
but technology led
What the business has...
What the business needs...


                    Deploy me!
What the business (really) needs...

                                    Deploy me!




          Deploy me!



                                                    Deploy me!
                       Capacity


                       Deploy me!
  Build


                                       Production



                 QA
Script everything
Separate what changes
from what doesn’t
“Production-like” all the way
Even if this means less efficiency
in the pipeline
And finally...
                “Theory is splendid but
until put into practice , it is valueless.”
                          -- James Cash Penney
Discuss!

Twenty Startups A Year Without Going Crazy