Class 7: Introduction to web technology entrepreneurship


Published on

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Class 7: Introduction to web technology entrepreneurship

  1. 1. Allan ChaoStartup ConsultantStartup V8allan@startupv8.comUC Berkeley Extension, Summer 2012
  2. 2. Question of the day:How many people are involvedin building a web application?
  3. 3. The Agenda Quiz Quick review of last session Servers, Hosting Deployment Release Cycles, Project Management Engineering management
  4. 4. Quiz Time Good luck!10 minutes max
  5. 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
  6. 6. 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)
  7. 7. What is a server? Physical machine Usually horizontal, 1-2 inches tall Designed and built for reliability, not features Lots of redundant components
  8. 8. What is a data center? A.k.a. Server farm Lots of computers Room gets hot… Lots of fans, very loud High security
  9. 9. 3 most common hosting options 3 most common hosting options  Dedicated Hosting  Shared Hosting  Virtual Private Server (VPS) Other hosting options  Colocation  Cloud hosting
  10. 10. 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.
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. Comparison Managed (dedicated, Colocation Cloud shared, VPS) (aka colo)Cost at first Average Very high Very lowCost at scale Average-high Low Very highFlexibility Medium Very flexible Not flexibleManagement Depends on host You manage Harder to manage
  16. 16. Tools for hosting Who is hosting a website?   Note that high-traffic websites run their own data centers
  17. 17. Rackspace
  18. 18. Try Buying Hosting Cheaper and lower-quality options  Your domain registrant  Bluehost, dreamhost, etc. Better and more expensive options  Rackspace  Softlayer
  19. 19. 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
  20. 20. FTP File Transfer Protocol  Very old way of transferring files We’ll use Filezilla
  21. 21. Practice Deploying FTP Connect to Username class Password: same password as classroom computers Create a folder with your name (lowercase, one word) Upload your HTML files Test it at
  22. 22. 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”
  23. 23. 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
  24. 24. Release Planning and Cycles Planning process of what to deploy and when  MVP  Version 2  Version 3…
  25. 25. Case study: firefox
  26. 26. 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.
  27. 27. Gantt chart Like a waterfall process Great for known projects Less applicable for ongoing development
  28. 28. Agile Development Small, incremental Iterations 1-2 weeks Standing meetings “Product owner” Burndown charts
  29. 29. Tools for Project Management FugBugz BaseCamp Trello Pivotal Tracker
  30. 30. 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?
  31. 31. Ninety-ninety rule
  32. 32. Good project management Setting milestones Hitting the milestones Lots of communication Don’t change the features Go through the design process
  33. 33. 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!
  34. 34. Deploymentson closedplatforms E.g. Apple App Store  Unclear requirements  Time consuming and frustrating
  35. 35. 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
  36. 36. 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
  37. 37. Extreme Programming A subtype of agile development Adds some elements  Pair programming  Extensive unit testing  Flat management
  38. 38. 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
  39. 39. 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
  40. 40. Homework Individual, read the following:  Read Michael Wolfe’s answer... are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3  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.)