Class 7: Introduction to web technology entrepreneurship
description
Transcript of Class 7: Introduction to web technology entrepreneurship
Allan Chao Startup Consultant Startup V8 [email protected] 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 IDE Comparison
Notepad++
NetBeans
Visual Studio
Backend Programming
Truly requires clarification of ideas
Complexity
Programming Languages
Programming example (calculator)
Backend integration with frontend
ASP.NET
Error validation
Principles of Programming
Some code is better than others
Mistakes have a high cost
Databases
Database model
Entity relationship model
SQL
Database Engines
RDBMS
MYSQL
SQL Server
APIs
Application Programing Interface
Precautions
SDK = Software Development Kit
Technology Stacks
Many different options in different layers
LAMP = Linux Apache Mysql PHP
WINS = Windows IIS .NET SQL Server
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
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, shared, VPS)
Colocation (aka colo)
Cloud
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
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
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
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
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.)