Daniel Doubrovkine (dB.)
                          @dblockdotorg




TECH FROM THE GROUND UP
    Summer Program – Monday, July 30
Take a good idea …
… and make working software
Day 0
   What will you do?



        “Dear ___,

        Saw your presentation at ___. I liked the Q&A and learned a bunch of new things.

        I have a favor to ask. I’ve joined a NY startup, ___. We’re just starting, and I am
        hoping to do things ‘right’ from the start. I was wondering whether I could borrow
        someone’s time at ___ next week (yours or someone who works for you) and maybe
        bring 1-2 people with me to see how your code and tooling is organized.

        Sincerely,
        -Me”
Day 1
   Pick a Code Name




this is “Gravity”
Day 2
   Documents Go Here
    Hosted
    Free or Cheap
    Private
    Shareable
    Backed Up

    Passwords
Day 3
   Tasks Go Here
    Create Tasks
    Take Tasks
    Start Tasks
    Complete Tasks
Day 4
   A Bit of Process

        Extreme
     Programming                     Scrum                    Waterfall
          (XP)
                          Agile                                 Not Agile


                             What do we do during the   What are all the things we
    What do we do next?
                                   next month?           need to do this year?


                 Grow this way                                   #FAIL
Day 5
   Learning

    Domain Driven Design
    Taxonomy
    Specifications
    Wireframes
    People
Week 1
   Scheduled exciting meetings with other startups
   Created a place to store information, a team wiki
   Created a KB and a way to create new knowledge
   Created a place to manage and track work.
Week-End
   Sustainable Pace
Day 1
   A Plan
    Story: Users Can Sign Up
Day 1
   Source Control

    Repository
    Commit
    Push
    Pull
    Merge
Day 1
   Code Reviews
    Peer review of every check-in
    Shared knowledge
    Shared responsibility
    It’s common to push back
                                    Reviewboard




                                      Crucible
Day 1
   Your First Commit
    README
    GettingStarted.md
Day 2
   A Friendly Visit
    2-3 People
    Bring Pastries
    Tell Your Story
    Be Impressed
    Ask “Why?” 3x
    Owe One
Day 3: Choosing Technology
Stacks
A Web Stack

   Backbone.js      Django
   Rails            Python
   Ruby             Apache
   MongoDB          MySQL
   Heroku           Linux
   AWS              Rackspace
Stacks
   Help You Focus on The Domain
   Classify Problems
   Offer Generic Solutions
   Provide Consistent Experience
   Map Software Evolution
   Enable Reuse of Skills
Big Company: Bakeoff
   Identify Candidates
    ASP.NET / RoR / J2EE / LAMP

   Develop Metrics
    scalability, complexity, cost

   Gather Data
    feature matrix, metrics data

   Compare
    =SUM(A:Z)

   Pick a Winner
    =MAX(SUM(A:Z))
Alternatives: Personal Favorite
Alternatives: Trustworthy People
   It worked before
   It didn’t work before
   It’s new and shiny
   Someone I trust uses it
Alternatives: Simplicity
   The Emperor’s Old Clothes
    Charles Hoare, 1981
    http://dl.acm.org/citation.cfm?id=358561&bnc=1
Alternatives: Developer Happiness
   Developers Are Happy with
    Their Own Choices
    Cutting Edge Technology
Does it really matter?
   Try It … Iterate … Keep It … Toss It
    Easy to Learn
    Frustration-less
    Quick to Leverage
    Vibrant Community                      Time


    Elegant Solutions
                                                  Results
                                                  Fighting
                                                  Learning
Day 4
   Implement a Story w/ Tests
   Setup Continuous Integration


      “Writing tests makes development faster, not
      slower from day one four.”
Day 4
   Continuous Deployment
    Development
    Staging
    Production
    Demo
Day 5
   Demo Day!

    Developers know how to get started.
    Developers can commit code with a peer code review.
    Every time a developer checks in code, continuous integration runs tests and
    e-mails results to the team.
    Every time continuous integration executed tests successfully, staging gets
    the latest code.
    We can deploy to production by hitting a button!
A Sprint: Week 3 & 4
   User-Facing Stories
   Under-Promise and Over-Deliver
   Make People Happy
   Keep Things Simple
   Don’t Acquire Technical Debt
People
   People make all the difference
   Cultural fit is more important than technical abilities
       There’re excellent developers that are a bad cultural fit
       There’re bad developers that are an excellent cultural fit
   Generalists are Often Better than Specialists
   Pigs, not Chickens
Your Resume
   Passion to Professionalism
   Examples of Doing
   Consistent Delivery
   Demonstrable Experience
   Strong References
You
 Doer
 Humble

 Listens

 Self-Sufficient

 Thorough
Questions
   name: Daniel Doubrovkine (aka. dB.)
company: http://art.sy
  twitter: @dblockdotorg
    blog: http://code.dblock.org
   email: dblock@dblock.org
   slides: http://slideshare.net/dblockdotorg

GeneralAssemb.ly Summer Program: Tech from the Ground Up

  • 1.
    Daniel Doubrovkine (dB.) @dblockdotorg TECH FROM THE GROUND UP Summer Program – Monday, July 30
  • 2.
    Take a goodidea …
  • 3.
    … and makeworking software
  • 4.
    Day 0  What will you do? “Dear ___, Saw your presentation at ___. I liked the Q&A and learned a bunch of new things. I have a favor to ask. I’ve joined a NY startup, ___. We’re just starting, and I am hoping to do things ‘right’ from the start. I was wondering whether I could borrow someone’s time at ___ next week (yours or someone who works for you) and maybe bring 1-2 people with me to see how your code and tooling is organized. Sincerely, -Me”
  • 5.
    Day 1  Pick a Code Name this is “Gravity”
  • 6.
    Day 2  Documents Go Here Hosted Free or Cheap Private Shareable Backed Up  Passwords
  • 7.
    Day 3  Tasks Go Here Create Tasks Take Tasks Start Tasks Complete Tasks
  • 8.
    Day 4  A Bit of Process Extreme Programming Scrum Waterfall (XP) Agile Not Agile What do we do during the What are all the things we What do we do next? next month? need to do this year? Grow this way  #FAIL
  • 9.
    Day 5  Learning Domain Driven Design Taxonomy Specifications Wireframes People
  • 10.
    Week 1  Scheduled exciting meetings with other startups  Created a place to store information, a team wiki  Created a KB and a way to create new knowledge  Created a place to manage and track work.
  • 11.
    Week-End  Sustainable Pace
  • 12.
    Day 1  A Plan Story: Users Can Sign Up
  • 13.
    Day 1  Source Control Repository Commit Push Pull Merge
  • 14.
    Day 1  Code Reviews Peer review of every check-in Shared knowledge Shared responsibility It’s common to push back Reviewboard Crucible
  • 15.
    Day 1  Your First Commit README GettingStarted.md
  • 16.
    Day 2  A Friendly Visit 2-3 People Bring Pastries Tell Your Story Be Impressed Ask “Why?” 3x Owe One
  • 17.
    Day 3: ChoosingTechnology
  • 18.
  • 19.
    A Web Stack  Backbone.js  Django  Rails  Python  Ruby  Apache  MongoDB  MySQL  Heroku  Linux  AWS  Rackspace
  • 20.
    Stacks  Help You Focus on The Domain  Classify Problems  Offer Generic Solutions  Provide Consistent Experience  Map Software Evolution  Enable Reuse of Skills
  • 21.
    Big Company: Bakeoff  Identify Candidates ASP.NET / RoR / J2EE / LAMP  Develop Metrics scalability, complexity, cost  Gather Data feature matrix, metrics data  Compare =SUM(A:Z)  Pick a Winner =MAX(SUM(A:Z))
  • 22.
  • 23.
    Alternatives: Trustworthy People  It worked before  It didn’t work before  It’s new and shiny  Someone I trust uses it
  • 24.
    Alternatives: Simplicity  The Emperor’s Old Clothes Charles Hoare, 1981 http://dl.acm.org/citation.cfm?id=358561&bnc=1
  • 25.
    Alternatives: Developer Happiness  Developers Are Happy with Their Own Choices Cutting Edge Technology
  • 26.
    Does it reallymatter?  Try It … Iterate … Keep It … Toss It Easy to Learn Frustration-less Quick to Leverage Vibrant Community Time Elegant Solutions Results Fighting Learning
  • 27.
    Day 4  Implement a Story w/ Tests  Setup Continuous Integration “Writing tests makes development faster, not slower from day one four.”
  • 28.
    Day 4  Continuous Deployment Development Staging Production Demo
  • 29.
    Day 5  Demo Day! Developers know how to get started. Developers can commit code with a peer code review. Every time a developer checks in code, continuous integration runs tests and e-mails results to the team. Every time continuous integration executed tests successfully, staging gets the latest code. We can deploy to production by hitting a button!
  • 30.
    A Sprint: Week3 & 4  User-Facing Stories  Under-Promise and Over-Deliver  Make People Happy  Keep Things Simple  Don’t Acquire Technical Debt
  • 31.
    People  People make all the difference  Cultural fit is more important than technical abilities  There’re excellent developers that are a bad cultural fit  There’re bad developers that are an excellent cultural fit  Generalists are Often Better than Specialists  Pigs, not Chickens
  • 32.
    Your Resume  Passion to Professionalism  Examples of Doing  Consistent Delivery  Demonstrable Experience  Strong References
  • 33.
    You  Doer  Humble Listens  Self-Sufficient  Thorough
  • 34.
    Questions name: Daniel Doubrovkine (aka. dB.) company: http://art.sy twitter: @dblockdotorg blog: http://code.dblock.org email: dblock@dblock.org slides: http://slideshare.net/dblockdotorg