SlideShare a Scribd company logo
Allan Chao
Startup Consultant
Startup V8
allan@startupv8.com

UC Berkeley Extension, Summer 2012
Question of the day:
How many people are involved
in building a web application?
The Agenda
 Quiz
 Quick review of last session


 Servers, Hosting
 Deployment
 Release Cycles, Project Management
 Engineering management
Quiz Time

  Good luck!

10 minutes max
Quick review of prior material
                                               Databases
 IDE Comparison
                                                  Database model
     Notepad++
                                                  Entity relationship model
     NetBeans
                                                  SQL
     Visual Studio
                                               Database Engines
 Backend Programming
                                                  RDBMS
     Truly requires clarification of ideas
                                                  MYSQL
     Complexity
                                                  SQL Server
     Programming Languages
                                               APIs
 Programming example (calculator)
                                                  Application Programing Interface
     Backend integration with frontend
                                                  Precautions
     ASP.NET
                                                  SDK = Software Development Kit
     Error validation
                                               Technology Stacks
 Principles of Programming
                                                  Many different options in different layers
     Some code is better than others
                                                  LAMP = Linux Apache Mysql PHP
     Mistakes have a high cost
                                                  WINS = Windows IIS .NET SQL Server
Class 7: Introduction to web technology entrepreneurship
What is Hosting?
 Where you store the code
 Makes the website publicly-accessible
 What you’re paying for:
   Physical components
       Disk space (space in GB)
       Memory (RAM)
       Processing power (CPU)
   Datacenter costs
     Electricity
     Cooling
     Network Bandwidth

   Administration (technical skill)
What is a server?
 Physical machine
 Usually horizontal, 1-2 inches tall
 Designed and built for reliability, not features
 Lots of redundant components
What is a data center?
 A.k.a. Server farm
 Lots of computers
 Room gets hot…
 Lots of fans, very
  loud
 High security
3 most common hosting options
 3 most common hosting options
    Dedicated Hosting
    Shared Hosting
    Virtual Private Server (VPS)


 Other hosting options
   Colocation
   Cloud hosting
Dedicated Hosting
 Means you rent a physical machine provided by the
  host
   Hardware options provided by the host, you pick one
   Tends to be around $200-1000/month per machine,
    depending on quality
 Great option for almost-total control


 When is it right?
   If you need lots of power and control.
    However, costs can be high.
Shared Hosting
 You “share” a dedicated host with other customers (you
  don’t know who they are)
    Share CPU-power
    Share network connection
    Sometimes, share IP address
 You have limited access to the computer, so less flexibility


 When is it right?
   Generally a poor choice for startups
   Better choice for small business websites
Virtual Private Server (VPS)
 Virtual Private Server = “virtual machine”
 Like having a dedicated server, except that there isn’t a
  physical machine you own.
 Your machine is a “virtual” machine, that lives inside
  of a physical machine.

 • When is it right?
    • Low cost way of having lots
      of control.
    • Great option to start
Class 7: Introduction to web technology entrepreneurship
Colocation
 Means you buy your own physical machine
    Much more expensive than consumer machines… generally costs
     at least $4,000, easily $10,000
    In addition to monthly fees to data center
 You choose the hardware
   Maximum flexibility regarding the hardware used (e.g. fancy servers and
    storage configurations)
 You manage everything.
   Requires more effort and management compared to cloud and managed


 When is it right?
   Best for maturing startups that can afford costly servers and hire
    staff to manage them
Cloud Hosting
 “Pay as you go”, pay-for-use
 Amazon EC2, S3
 Good for starting out when server needs are unknown and
  it’s easy to scale up and down quickly
 Best for environments that have differing scale needs on a
  regular basis
    (e.g. imagine you normally need 20 servers but for a few
     hours each night you need 100 servers to crunch data)

 When is it right?
   Great low-cost way to start, but limitations can be
    frustrating
   Excellent choice if sudden scale is needed
Comparison
                Managed (dedicated, Colocation      Cloud
                shared, VPS)        (aka colo)
Cost at first   Average             Very high       Very low
Cost at scale   Average-high        Low             Very high
Flexibility     Medium              Very flexible   Not flexible
Management      Depends on host     You manage      Harder to manage
Tools for hosting
 Who is hosting a website?
   http://www.whoishostingthis.com
   Note that high-traffic websites run their own data
    centers
Rackspace
 http://www.rackspacestartups.com/
Try Buying Hosting
 Cheaper and lower-quality options
    Your domain registrant
    Bluehost, dreamhost, etc.


 Better and more expensive options
    Rackspace
    Softlayer
Class 7: Introduction to web technology entrepreneurship
Deployment
 Deployment = Release = Shipping


 The process of getting a website from your local
 machine to the host
   Once it is on the host, it’s viewable by the public
FTP
 File Transfer Protocol
    Very old way of transferring files
 We’ll use Filezilla
Practice Deploying
 FTP Connect to 208.79.77.29
 Username class
 Password: same password as classroom computers




 Create a folder with your name (lowercase, one word)
 Upload your HTML files
 Test it at http://class.testing.startupv8.com/yourname
Multiple Environments
 Risks of single-environment
    Accidental deployment
    Very hard to recover in production
        High cost, high pressure, lots of “site is down” time
 Dev > QA > Staging > Production
   The “build” process
   Automated tests
   Automatic documentation and/or release notes
   Automatically moving from one stage to another
        “latest build”, “nightly build”, “build 142”
Advanced Deployment Tools
 Beyond Compare (like FTP, but highlights line-by-line
  differences)
 Custom programs
   Write your own script that copies files
 Available software
    xCopy / robocopy
    MSDeploy
    UrbanCode www.urbancode.com
Class 7: Introduction to web technology entrepreneurship
Release Planning and Cycles
 Planning process of what
 to deploy and when
   MVP
   Version 2
   Version 3…
Case study: firefox
Project Management
 Starts off as…
    1 product owner, 1 designer, 1 engineer = 3 people
 Soon afterward…
    1 product owner, 1 designer, 3 engineers = 5 people
 Company grows…
    1 product owner, 2 designers, 4 engineers,
     1 project manager, 1 tester = 9 people

 Project management = coordination and allocation of
  people, time, money.
Gantt chart
 Like a waterfall process
 Great for known projects
 Less applicable for ongoing development
Agile Development
 Small, incremental Iterations
 1-2 weeks
 Standing meetings
 “Product owner”
 Burndown charts
Tools for Project Management
 FugBugz
 BaseCamp
 Trello
 Pivotal Tracker
Budgeting
 Very hard to budget new development projects
    How much does it cost to build a house? It depends


 Do a bottom up estimate, not a top down estimate
   A 2-story house in a specific subdivision with a garage
    and 3 bed 2 bath with the same interior that all the other
    houses in the subdivision have?
Ninety-ninety rule
Good project management
 Setting milestones
 Hitting the milestones
 Lots of communication


 Don’t change the features
 Go through the design process
Tips on Shipping
 Stick to a feature-set, and build it.
 Adding developers doesn’t always make the project finish sooner
 “The mythical man-month”

 Q: How does a large software project get to be one year late?
 A: One day at a time!
Deployments
on closed
platforms
 E.g. Apple App Store
    Unclear requirements
    Time consuming and
     frustrating
Class 7: Introduction to web technology entrepreneurship
Hiring Developers
 Hiring full time developers
   Very hard, very expensive


 Part-time developers (freelancers)
    Tends to be the best option for startups


 Difficult even for engineers to assess skill in an interview
 Developers are almost never effective on joining a
  project… always takes training time
Managing Developers
 Great developers are very self-motivated
    They like to work on things they think are important
    They like to solve interesting problems
 Constant pressure is annoying
Extreme Programming
 A subtype of agile development
 Adds some elements
    Pair programming
    Extensive unit testing
    Flat management
Code Reviews
 Engineers look over each other’s code as a “second pair
  of eyes”
 Tends to result in much better code
 Also enables peer-to-peer training
Outsourcing
 Tends to be very difficult for startups
    Low quality work
        Offshore companies do not design
        And they produce low-quality code
   Poor communication
 The takeaway: tempting, but usually a net loss
Class 7: Introduction to web technology entrepreneurship
Homework
 Individual, read the following:
    Read Michael Wolfe’s answer... http://www.quora.com/Engineering-Management/Why-
     are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3
    Mythical man-month… http://en.wikipedia.org/wiki/The_Mythical_Man-Month


 (Team) Deploy your application
    If there’s no backend, that’s OK


 (Team) Keep Going!!
    Keep programming
    Keep working on the pitch deck
    Keep marketing your new startup
    Occasionally review the market research data (Google Analytics, etc.)

More Related Content

Class 7: Introduction to web technology entrepreneurship

  • 1. Allan Chao Startup Consultant Startup V8 allan@startupv8.com UC Berkeley Extension, Summer 2012
  • 2. Question of the day: How many people are involved in building a web application?
  • 3. The Agenda  Quiz  Quick review of last session  Servers, Hosting  Deployment  Release Cycles, Project Management  Engineering management
  • 4. Quiz Time Good luck! 10 minutes max
  • 5. Quick review of prior material  Databases  IDE Comparison  Database model  Notepad++  Entity relationship model  NetBeans  SQL  Visual Studio  Database Engines  Backend Programming  RDBMS  Truly requires clarification of ideas  MYSQL  Complexity  SQL Server  Programming Languages  APIs  Programming example (calculator)  Application Programing Interface  Backend integration with frontend  Precautions  ASP.NET  SDK = Software Development Kit  Error validation  Technology Stacks  Principles of Programming  Many different options in different layers  Some code is better than others  LAMP = Linux Apache Mysql PHP  Mistakes have a high cost  WINS = Windows IIS .NET SQL Server
  • 7. What is Hosting?  Where you store the code  Makes the website publicly-accessible  What you’re paying for:  Physical components  Disk space (space in GB)  Memory (RAM)  Processing power (CPU)  Datacenter costs  Electricity  Cooling  Network Bandwidth  Administration (technical skill)
  • 8. What is a server?  Physical machine  Usually horizontal, 1-2 inches tall  Designed and built for reliability, not features  Lots of redundant components
  • 9. What is a data center?  A.k.a. Server farm  Lots of computers  Room gets hot…  Lots of fans, very loud  High security
  • 10. 3 most common hosting options  3 most common hosting options  Dedicated Hosting  Shared Hosting  Virtual Private Server (VPS)  Other hosting options  Colocation  Cloud hosting
  • 11. Dedicated Hosting  Means you rent a physical machine provided by the host  Hardware options provided by the host, you pick one  Tends to be around $200-1000/month per machine, depending on quality  Great option for almost-total control  When is it right?  If you need lots of power and control. However, costs can be high.
  • 12. Shared Hosting  You “share” a dedicated host with other customers (you don’t know who they are)  Share CPU-power  Share network connection  Sometimes, share IP address  You have limited access to the computer, so less flexibility  When is it right?  Generally a poor choice for startups  Better choice for small business websites
  • 13. Virtual Private Server (VPS)  Virtual Private Server = “virtual machine”  Like having a dedicated server, except that there isn’t a physical machine you own.  Your machine is a “virtual” machine, that lives inside of a physical machine. • When is it right? • Low cost way of having lots of control. • Great option to start
  • 15. Colocation  Means you buy your own physical machine  Much more expensive than consumer machines… generally costs at least $4,000, easily $10,000  In addition to monthly fees to data center  You choose the hardware  Maximum flexibility regarding the hardware used (e.g. fancy servers and storage configurations)  You manage everything.  Requires more effort and management compared to cloud and managed  When is it right?  Best for maturing startups that can afford costly servers and hire staff to manage them
  • 16. Cloud Hosting  “Pay as you go”, pay-for-use  Amazon EC2, S3  Good for starting out when server needs are unknown and it’s easy to scale up and down quickly  Best for environments that have differing scale needs on a regular basis  (e.g. imagine you normally need 20 servers but for a few hours each night you need 100 servers to crunch data)  When is it right?  Great low-cost way to start, but limitations can be frustrating  Excellent choice if sudden scale is needed
  • 17. Comparison Managed (dedicated, Colocation Cloud shared, VPS) (aka colo) Cost at first Average Very high Very low Cost at scale Average-high Low Very high Flexibility Medium Very flexible Not flexible Management Depends on host You manage Harder to manage
  • 18. Tools for hosting  Who is hosting a website?  http://www.whoishostingthis.com  Note that high-traffic websites run their own data centers
  • 20. Try Buying Hosting  Cheaper and lower-quality options  Your domain registrant  Bluehost, dreamhost, etc.  Better and more expensive options  Rackspace  Softlayer
  • 22. Deployment  Deployment = Release = Shipping  The process of getting a website from your local machine to the host  Once it is on the host, it’s viewable by the public
  • 23. FTP  File Transfer Protocol  Very old way of transferring files  We’ll use Filezilla
  • 24. Practice Deploying  FTP Connect to 208.79.77.29  Username class  Password: same password as classroom computers  Create a folder with your name (lowercase, one word)  Upload your HTML files  Test it at http://class.testing.startupv8.com/yourname
  • 25. Multiple Environments  Risks of single-environment  Accidental deployment  Very hard to recover in production  High cost, high pressure, lots of “site is down” time  Dev > QA > Staging > Production  The “build” process  Automated tests  Automatic documentation and/or release notes  Automatically moving from one stage to another  “latest build”, “nightly build”, “build 142”
  • 26. Advanced Deployment Tools  Beyond Compare (like FTP, but highlights line-by-line differences)  Custom programs  Write your own script that copies files  Available software  xCopy / robocopy  MSDeploy  UrbanCode www.urbancode.com
  • 28. Release Planning and Cycles  Planning process of what to deploy and when  MVP  Version 2  Version 3…
  • 30. Project Management  Starts off as…  1 product owner, 1 designer, 1 engineer = 3 people  Soon afterward…  1 product owner, 1 designer, 3 engineers = 5 people  Company grows…  1 product owner, 2 designers, 4 engineers, 1 project manager, 1 tester = 9 people  Project management = coordination and allocation of people, time, money.
  • 31. Gantt chart  Like a waterfall process  Great for known projects  Less applicable for ongoing development
  • 32. Agile Development  Small, incremental Iterations  1-2 weeks  Standing meetings  “Product owner”  Burndown charts
  • 33. Tools for Project Management  FugBugz  BaseCamp  Trello  Pivotal Tracker
  • 34. Budgeting  Very hard to budget new development projects  How much does it cost to build a house? It depends  Do a bottom up estimate, not a top down estimate  A 2-story house in a specific subdivision with a garage and 3 bed 2 bath with the same interior that all the other houses in the subdivision have?
  • 36. Good project management  Setting milestones  Hitting the milestones  Lots of communication  Don’t change the features  Go through the design process
  • 37. Tips on Shipping  Stick to a feature-set, and build it.  Adding developers doesn’t always make the project finish sooner  “The mythical man-month”  Q: How does a large software project get to be one year late?  A: One day at a time!
  • 38. Deployments on closed platforms  E.g. Apple App Store  Unclear requirements  Time consuming and frustrating
  • 40. Hiring Developers  Hiring full time developers  Very hard, very expensive  Part-time developers (freelancers)  Tends to be the best option for startups  Difficult even for engineers to assess skill in an interview  Developers are almost never effective on joining a project… always takes training time
  • 41. Managing Developers  Great developers are very self-motivated  They like to work on things they think are important  They like to solve interesting problems  Constant pressure is annoying
  • 42. Extreme Programming  A subtype of agile development  Adds some elements  Pair programming  Extensive unit testing  Flat management
  • 43. Code Reviews  Engineers look over each other’s code as a “second pair of eyes”  Tends to result in much better code  Also enables peer-to-peer training
  • 44. Outsourcing  Tends to be very difficult for startups  Low quality work  Offshore companies do not design  And they produce low-quality code  Poor communication  The takeaway: tempting, but usually a net loss
  • 46. Homework  Individual, read the following:  Read Michael Wolfe’s answer... http://www.quora.com/Engineering-Management/Why- are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3  Mythical man-month… http://en.wikipedia.org/wiki/The_Mythical_Man-Month  (Team) Deploy your application  If there’s no backend, that’s OK  (Team) Keep Going!!  Keep programming  Keep working on the pitch deck  Keep marketing your new startup  Occasionally review the market research data (Google Analytics, etc.)