Class 6: Introduction to web technology entrepreneurship

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

description

 

Transcript of Class 6: Introduction to web technology entrepreneurship

Page 1: Class 6: Introduction to web technology entrepreneurship

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

Page 2: Class 6: Introduction to web technology entrepreneurship

Question of the day:

How many ways can you explain to someone over the phone how to draw a house?

Humor of the day:

Page 3: Class 6: Introduction to web technology entrepreneurship

The Agenda Quiz

Quick review of last session

Advanced IDEs

Backend Programming

Databases

APIs

Technology Stacks

Page 4: Class 6: Introduction to web technology entrepreneurship

Quiz Time

Good luck!

10 minutes max

Page 5: Class 6: Introduction to web technology entrepreneurship

Quick review of prior material IDE = Integrated Development

Environment

Syntax highlighting

Auto-completion

Debugging

Notepad++

Source Control = Version Control

Dropbox

Subversion (SVN)

Mercurial

Git

Testing

Locally

QA = Quality Assurance

Staging

Production

Client Server Architecture Request, Response

Frontend Programming vs Backend Programming

HTML = Hypertext markup language

Content and structure

HTML 4.01

Tags, nesting

CSS = Cascading Style Sheets

Presentation

Cascading in layers

JS = Javascript

Interaction

HTML5

Makes plugins (like Flash) obsolete

Twitter Bootstrap

Jquery

Cross Browser Compatibility

Separation of concerns

Code re-use

Specification “the spec”

Page 6: Class 6: Introduction to web technology entrepreneurship
Page 7: Class 6: Introduction to web technology entrepreneurship

Review of Notepad++ General purpose IDE

Very Simple

Syntax highlight

Page 8: Class 6: Introduction to web technology entrepreneurship

NetBeans IDE mostly for Java, PHP, Python, C++

Page 9: Class 6: Introduction to web technology entrepreneurship

Visual Studio

Page 10: Class 6: Introduction to web technology entrepreneurship

IDEs summary There are lots of different IDEs

Generally used for different purposes

Some are easier to learn than others

Page 11: Class 6: Introduction to web technology entrepreneurship
Page 12: Class 6: Introduction to web technology entrepreneurship

Comparison Frontend Programming

(this session)

Backend programming

(next session)

Generally, easier to learn than backend programming

Programming how it looks

Visual

See what you’re doing

Easier to identify problems

Code runs on the browser

Mistakes are usually non-critical

HTML, CSS, JS

Generally, harder to learn than frontend programming

Programming how it works

Functional

Can’t see what you’re doing

Harder to identify problems

Code runs on the server

Mistakes break the website

PHP, SQL, C#, Python, Ruby on Rails, Java

Page 13: Class 6: Introduction to web technology entrepreneurship

Introduction to Backend Code Complicated!

One line of frontend many lines of backend… lots of files

Truly Requires Clarification of ideas

Page 14: Class 6: Introduction to web technology entrepreneurship

Complexity of Backend One line of frontend many lines of backend

Multiple conditions

Data Validation Error handling

Database access

Security

Each case must show different frontend

Every “fringe case” must be handled

http://danm.ucsc.edu/web/TechnicalHelp/php/upload_images.php

Page 15: Class 6: Introduction to web technology entrepreneurship

Programming Languages All programming languages have their own syntax

Each programing language has a different framework

Different frameworks are better at different things

Changes all the time

Each one has its own quirks

Page 16: Class 6: Introduction to web technology entrepreneurship

Different languages to do x! = x * (x-1)…

Page 17: Class 6: Introduction to web technology entrepreneurship

PHP Example

Page 18: Class 6: Introduction to web technology entrepreneurship

Open up Netbeans Sample Look at project organization

Look at code, totally different from frontend code

Look at visual editor

Page 19: Class 6: Introduction to web technology entrepreneurship

Open up Visual Studio Sample Look at project organization

Look at code, totally different from frontend code

Look at visual editor

PRACTICE: Program a calculator

Frontend first

Use the right words

Input validation

Error handling

Page 20: Class 6: Introduction to web technology entrepreneurship

Principles of Programming Many solutions Good Code

Simple Readable Modular Flexible Efficient Secure

More code != better code Bugs happen, but good programming avoids many

Page 21: Class 6: Introduction to web technology entrepreneurship

Mistakes have a high cost

Page 22: Class 6: Introduction to web technology entrepreneurship
Page 23: Class 6: Introduction to web technology entrepreneurship

Introduction to Databases Databases stays behind your application

Database stores the data

Users

Allows multi-access

High performance

Very reliable

Enormous size

Page 24: Class 6: Introduction to web technology entrepreneurship

Database Model Example

Page 25: Class 6: Introduction to web technology entrepreneurship

Designing a Database “Entity Relationship Model”

Figure out everything you need to store Anything you don’t plan to store will not be stored

Figure out what “data type” each one is

An integer?

A number?

A time?

Words? How many letters long?

Figure out how it’s all related Draw a little picture with lines

Page 26: Class 6: Introduction to web technology entrepreneurship

SQL = DB programming language SQL = Structured Query Language

Page 27: Class 6: Introduction to web technology entrepreneurship

Database Engines RDBMS = Relational Database Management System

The program that runs the database Distinct from the program that runs the website

MYSQL Free, open source

Most common place to start

SQL Server Expensive, Microsoft-owned

Many others PostgreSQL, MongoDB

Page 28: Class 6: Introduction to web technology entrepreneurship
Page 29: Class 6: Introduction to web technology entrepreneurship

Introduction to APIs API = Application Programming Interface

Integrate a 3rd party app with your app

Generally, can use any programming language

Generally, requires API support for features

Page 30: Class 6: Introduction to web technology entrepreneurship

Examples Facebook OpenGraph

Integrate Facebook

Paypal

eBay

LinkedIn

Twitter

YouTube

Google Search

Google Maps

Page 31: Class 6: Introduction to web technology entrepreneurship

SDK SDK = Software development kit

When you want to learn to program with any particular technology, you need to find the SDK

E.g. Want to build a Facebook app?

Find the Facebook app SDK

E.g. Want to use Google maps on your website?

Find the Google Maps SDK

Page 32: Class 6: Introduction to web technology entrepreneurship

Precautions Generally, APIs are generally poorly documented

Generally, APIs will change without warning, breaking your code… very hard to debug

Generally, programming on APIs takes a lot longer

Generally, APIs make any project much more complicated

Page 33: Class 6: Introduction to web technology entrepreneurship
Page 34: Class 6: Introduction to web technology entrepreneurship

Introduction to Technology Stacks So many technologies!!

Make some choices… Source Control (SVN, Git, Mercurial)

Development Environment (Netbeans, Eclipse, Visual Studio)

Server OS (Linux, Windows, Cloud)

Server Physicality (Dedicated, shared, virtual, cloud)

HTTP Server (Apache, nginx, IIS, node.js)

Database Engine (MYSQL, SQL Server, MongoDB)

Database Access Layer (SQL, stored procedures, LINQ, etc.)

Server side framework (PHP, python, C#, Ruby on Rails)

Client side framework (javascript, jQuery)

Page 35: Class 6: Introduction to web technology entrepreneurship

LAMP Linux

Apache

MySQL

PHP

(sometimes perl or python)

Free, open source tools

Easy to start

Page 36: Class 6: Introduction to web technology entrepreneurship

WINS Windows

IIS

.NET

SQL Server

“Microsoft stack”

Less popular among startups because of the cost

More commonly used for enterprise level apps

Page 37: Class 6: Introduction to web technology entrepreneurship

Choosing a Technology Stack How well does it scale? (x 1...000)

This is a useless question… all technology stacks must be very significantly changed in order to scale

How much does it cost? How easy will it be to get developers?

Most stacks are free Microsoft stack costs $$$$$, but BizSpark program makes it free for the first 2 years

Importance of the architect >> the stack Find the best developer you can, and let them choose. One caveat… keep it simple and don’t experiment

Page 38: Class 6: Introduction to web technology entrepreneurship
Page 39: Class 6: Introduction to web technology entrepreneurship

Final Project Presentations Present your startup to an investment firm

Target a 15 minute presentation

Pitch deck

Business plan

Demo (wireframes, mockups?)

How far you’ve gotten in your project (code, deployed?)

5-10 minutes of questions and discussions

Alternative Final Project Presentation

15 minutes about a startup case study or research subject

Page 40: Class 6: Introduction to web technology entrepreneurship

Homework (Team) Keep Programming!

Build as many pages as you can.

Design the database model

Choose a backend framework and start putting it together

(Team) Keep Going!!

Keep working on the pitch deck

Keep marketing your new startup

Occasionally review the market research data (Google Analytics, etc.)