Rolling Up Your Sleeves

36
source spring — jesse jack — [email protected] — 2013 CC licensed Rolling Up Your Sleeves [email protected] www.thesourcespring.com 1

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 of Rolling Up Your Sleeves

Page 1: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Rolling Up Your [email protected]

www.thesourcespring.com

1

Page 2: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 3: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

About Me

3

Page 4: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 5: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

{let’s do this}

5

Page 6: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

OptionsA whirlwind tour of languages and frameworks

6

Page 7: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Architecture for client/server apps

7

Page 8: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

LanguagesClient-side vs Server-side

Interpreted vs Compiled

8

Page 9: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

LanguagesPerl

PHP

Javascript (client-side)

Node.js (server-side Javascript)

Java

Python

Ruby

C / C++ / Objective C

C#

9

Page 10: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 11: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 12: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Frameworks: client-sideJavascript + JQuery / Ember / Angular

Objective C + iOS SDK

Java + Android SDK

12

Page 13: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Frameworks: mobile hybridsHTML5 in a wrapper

PhoneGap

Titanium

Adobe AIR

13

Page 14: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

DatabasesSQL

Postgres, MySQL, Oracle

NoSQL

Mongo, Couch, Cassandra

Keystore

Memcache, Redis

14

Page 15: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

HostingBare Metal

Rack ’em up

Virtual Servers

Rackspace, Amazon

App Platforms

Heroku, Appfog, Railyard

15

Page 16: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 17: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

{breathe}

17

Page 18: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

HelpGetting development assistance and managing it

18

Page 19: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

OptionsDIY

Technical Co-Founder

Hiring FTEs

Hiring Contractors

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

Volunteers

Open Source

19

Page 20: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 21: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

AgreementsStatement of work

Intellectual property

Equity or cash

Warranty and maintenance

Handling disputes

Documentation

21

Page 22: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Finding DevelopersFriends, LinkedIn and Facebook

AngelList, GitHub

ODesk, Guru, VWorker, ELance

Head hunters

Craigslist

22

Page 23: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

ProcessAgile / Scrum

The sprint cycle

Writing stories and documenting them

Velocity and points

Test Driven Development

Behavior Driven Development

23

Page 24: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Version ControlWhy?

SVN vs Git

Github, Mercurial, Bitbucket, Sourceforge

24

Page 25: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

QAPainful: they will not do it all for you

Bug tracking

Automated testing

Continuous integration

25

Page 26: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

{breathe}

26

Page 27: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

ScalingSuccess is a risk

27

Page 28: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Serving AssetsMinification

CDNs - Content Distribution Networks

28

Page 29: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

CachesBrowser Caching

Page Caching

Fragment Caching

Data Caching (memory, Memcache, Redis)

In-database Caching

29

Page 30: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Background TasksWhy do now what you can do later?

30

Page 31: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 32: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 33: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Case StudyInstagram

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

33

Page 34: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

{breathe}

34

Page 35: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 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

Page 36: Rolling Up Your Sleeves

source spring — jesse jack — [email protected] — 2013 CC licensed

Thanks! Any [email protected]

www.thesourcespring.com

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

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

36