rolling up your sleeves

Post on 13-May-2015

394 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

These are slides from a class I presented alumni and incoming students at the Austin Center for Design. The goal was to provide an over view of software application development (architecture, languages, frameworks), how to augment your development with other people of shops, and some basic techniques for scaling up.

TRANSCRIPT

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Rolling Up Your Sleevesjesse@thesourcespring.com

www.thesourcespring.com

1

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Class StructurePart 1 - Options: A whirlwind tour of languages and frameworks (30 mins)

Part 2 - Help: Getting development assistance and managing it (30 mins)

Part 3 - Scaling: Success is a risk (30 mins)

Part 4 - Q&A: Pick my brain (30 mins?)

2

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

About Me

3

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Who Are You?Introduce yourself.

What experience in software development do you already have?

What are you hoping to get out of today?

4

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

{let’s do this}

5

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

OptionsA whirlwind tour of languages and frameworks

6

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Architecture for client/server apps

7

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

LanguagesClient-side vs Server-side

Interpreted vs Compiled

8

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

LanguagesPerl

PHP

Javascript (client-side)

Node.js (server-side Javascript)

Java

Python

Ruby

C / C++ / Objective C

C#

9

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Frameworks: terminologyWhat is a framework?

DRY (Don’t Repeat Yourself)

MVC (Model–View–Controller)

ORM (Object Relational Model)

Front Pattern (Routes)

10

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Frameworks: server-sideRuby on Rails

PHP + Symphony

PHP + Wordpress

Python + Django

Node.js + Express.js

Java + Spring/Hibernate/EE/???

C# + .Net

11

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Frameworks: client-sideJavascript + JQuery / Ember / Angular

Objective C + iOS SDK

Java + Android SDK

12

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Frameworks: mobile hybridsHTML5 in a wrapper

PhoneGap

Titanium

Adobe AIR

13

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

DatabasesSQL

Postgres, MySQL, Oracle

NoSQL

Mongo, Couch, Cassandra

Keystore

Memcache, Redis

14

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

HostingBare Metal

Rack ’em up

Virtual Servers

Rackspace, Amazon

App Platforms

Heroku, Appfog, Railyard

15

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

ConsiderationsPerformance (Speed vs Latency)

Agility

Maintainability

Cost of ownership

Owning your platform

What you know

What you can learn

Where you can learn it from

Your developers’ knowledge

Ease of finding developers

16

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

{breathe}

17

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

HelpGetting development assistance and managing it

18

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

OptionsDIY

Technical Co-Founder

Hiring FTEs

Hiring Contractors

Outsourcing(NB: This may or may not mean offshoring)

Volunteers

Open Source

19

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

ConsiderationsWhat you can offer: cash vs equity

Your savviness

Your ability to manage

Need for agility (how much work can you do up front?)

20

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

AgreementsStatement of work

Intellectual property

Equity or cash

Warranty and maintenance

Handling disputes

Documentation

21

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Finding DevelopersFriends, LinkedIn and Facebook

AngelList, GitHub

ODesk, Guru, VWorker, ELance

Head hunters

Craigslist

22

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

ProcessAgile / Scrum

The sprint cycle

Writing stories and documenting them

Velocity and points

Test Driven Development

Behavior Driven Development

23

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Version ControlWhy?

SVN vs Git

Github, Mercurial, Bitbucket, Sourceforge

24

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

QAPainful: they will not do it all for you

Bug tracking

Automated testing

Continuous integration

25

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

{breathe}

26

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

ScalingSuccess is a risk

27

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Serving AssetsMinification

CDNs - Content Distribution Networks

28

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

CachesBrowser Caching

Page Caching

Fragment Caching

Data Caching (memory, Memcache, Redis)

In-database Caching

29

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Background TasksWhy do now what you can do later?

30

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

More ConcurrencyRemember hosting?

Bare metal: add more servers behind a load balancer

Virtual servers: add more virtual servers behind a virtual load balancer

App platforms: press a button (in theory)

Failover

Geographic redundancy

Sticky Sessions

31

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

DatabaseAdd indices

(or remove them)

Find and optimize slow queries

Avoid the N+1 problem

Eager loading

Add databases:

Master and slave (and slave and slave)

Clusters

Vertical partitioning

Horizontal partitioning (sharding)

32

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Case StudyInstagram

http://www.slideshare.net/iammutex/scaling-instagram

33

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

{breathe}

34

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Want more?Startup Engineering: https://www.coursera.org/course/startup

UT on Rails: http://schneems.com/ut-rails

Contact me and ask about deep dives on other topics:

HTML, CSS, SQL, Rails, PHP, Wordpress, payment processing...?

35

source spring — jesse jack — jesse@thesourcespring.com — 2013 CC licensed

Thanks! Any questions?jesse@thesourcespring.com

www.thesourcespring.com

Liked this class? Please connect with me on LinkedIn and endorse me for teaching!

http://www.linkedin.com/in/jessejack

36

top related