Class 7: Introduction to web technology entrepreneurship

46
Allan Chao Startup Consultant Startup V8 [email protected] UC Berkeley Extension, Summer 2012

description

 

Transcript of Class 7: Introduction to web technology entrepreneurship

Page 1: Class 7: Introduction to web technology entrepreneurship

Allan Chao Startup Consultant Startup V8 [email protected] UC Berkeley Extension, Summer 2012

Page 2: Class 7: Introduction to web technology entrepreneurship

Question of the day:

How many people are involved in building a web application?

Page 3: Class 7: Introduction to web technology entrepreneurship

The Agenda Quiz

Quick review of last session

Servers, Hosting

Deployment

Release Cycles, Project Management

Engineering management

Page 4: Class 7: Introduction to web technology entrepreneurship

Quiz Time

Good luck!

10 minutes max

Page 5: Class 7: Introduction to web technology entrepreneurship

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

Page 6: Class 7: Introduction to web technology entrepreneurship
Page 7: 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)

Page 8: Class 7: Introduction to web technology entrepreneurship

What is a server? Physical machine

Usually horizontal, 1-2 inches tall

Designed and built for reliability, not features

Lots of redundant components

Page 9: Class 7: Introduction to web technology entrepreneurship

What is a data center? A.k.a. Server farm

Lots of computers

Room gets hot…

Lots of fans, very loud

High security

Page 10: Class 7: Introduction to web technology entrepreneurship

3 most common hosting options 3 most common hosting options

Dedicated Hosting

Shared Hosting

Virtual Private Server (VPS)

Other hosting options

Colocation

Cloud hosting

Page 11: Class 7: Introduction to web technology entrepreneurship

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.

Page 12: Class 7: Introduction to web technology entrepreneurship

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

Page 13: Class 7: Introduction to web technology entrepreneurship

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

Page 14: Class 7: Introduction to web technology entrepreneurship
Page 15: 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

Page 16: Class 7: Introduction to web technology entrepreneurship

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

Page 17: Class 7: Introduction to web technology entrepreneurship

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

Page 18: Class 7: Introduction to web technology entrepreneurship

Tools for hosting Who is hosting a website?

http://www.whoishostingthis.com

Note that high-traffic websites run their own data centers

Page 19: Class 7: Introduction to web technology entrepreneurship

Rackspace http://www.rackspacestartups.com/

Page 20: Class 7: Introduction to web technology entrepreneurship

Try Buying Hosting Cheaper and lower-quality options

Your domain registrant

Bluehost, dreamhost, etc.

Better and more expensive options

Rackspace

Softlayer

Page 21: Class 7: Introduction to web technology entrepreneurship
Page 22: 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

Page 23: Class 7: Introduction to web technology entrepreneurship

FTP File Transfer Protocol

Very old way of transferring files

We’ll use Filezilla

Page 24: Class 7: Introduction to web technology entrepreneurship

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

Page 25: Class 7: Introduction to web technology entrepreneurship

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”

Page 26: Class 7: Introduction to web technology entrepreneurship

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

Page 27: Class 7: Introduction to web technology entrepreneurship
Page 28: Class 7: Introduction to web technology entrepreneurship

Release Planning and Cycles Planning process of what

to deploy and when

MVP

Version 2

Version 3…

Page 29: Class 7: Introduction to web technology entrepreneurship

Case study: firefox

Page 30: Class 7: Introduction to web technology entrepreneurship

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.

Page 31: Class 7: Introduction to web technology entrepreneurship

Gantt chart Like a waterfall process

Great for known projects

Less applicable for ongoing development

Page 32: Class 7: Introduction to web technology entrepreneurship

Agile Development Small, incremental Iterations

1-2 weeks

Standing meetings

“Product owner”

Burndown charts

Page 33: Class 7: Introduction to web technology entrepreneurship

Tools for Project Management FugBugz

BaseCamp

Trello

Pivotal Tracker

Page 34: Class 7: Introduction to web technology entrepreneurship

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?

Page 35: Class 7: Introduction to web technology entrepreneurship

Ninety-ninety rule

Page 36: Class 7: Introduction to web technology entrepreneurship

Good project management Setting milestones

Hitting the milestones

Lots of communication

Don’t change the features

Go through the design process

Page 37: Class 7: Introduction to web technology entrepreneurship

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!

Page 38: Class 7: Introduction to web technology entrepreneurship

Deployments on closed platforms

E.g. Apple App Store

Unclear requirements

Time consuming and frustrating

Page 39: Class 7: Introduction to web technology entrepreneurship
Page 40: 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

Page 41: Class 7: Introduction to web technology entrepreneurship

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

Page 42: Class 7: Introduction to web technology entrepreneurship

Extreme Programming A subtype of agile development

Adds some elements

Pair programming

Extensive unit testing

Flat management

Page 43: Class 7: Introduction to web technology entrepreneurship

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

Page 44: Class 7: Introduction to web technology entrepreneurship

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

Page 45: Class 7: Introduction to web technology entrepreneurship
Page 46: 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.)