rolling up your sleeves
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
![Page 1: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/1.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
Rolling Up Your [email protected]
www.thesourcespring.com
1
![Page 2: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/2.jpg)
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 4: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/4.jpg)
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 6: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/6.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
OptionsA whirlwind tour of languages and frameworks
6
![Page 7: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/7.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
Architecture for client/server apps
7
![Page 8: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/8.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
LanguagesClient-side vs Server-side
Interpreted vs Compiled
8
![Page 9: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/16.jpg)
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 18: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/18.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
HelpGetting development assistance and managing it
18
![Page 19: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/25.jpg)
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 28: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/28.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
Serving AssetsMinification
CDNs - Content Distribution Networks
28
![Page 29: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/33.jpg)
source spring — jesse jack — [email protected] — 2013 CC licensed
Case StudyInstagram
http://www.slideshare.net/iammutex/scaling-instagram
33
![Page 35: Rolling Up Your Sleeves](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022042518/55525db6b4c905d41d8b4a8b/html5/thumbnails/36.jpg)
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