choosing the right tool for the job

35
Choosing the Right Tool for the Job Polyglot Programming on Heroku Brad Gyger, Heroku Manager of Customer Advocacy @bgyger

Upload: salesforce-developers

Post on 14-Jul-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Choosing the Right Tool for the Job

Choosing the Right Tool for the Job

Polyglot Programming on Heroku

Brad Gyger, Heroku – Manager of Customer Advocacy

@bgyger

Page 2: Choosing the Right Tool for the Job

Safe Harbor

Safe harbor statement under the Private Securities Litigation Reform Act of 1995:

This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties

materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results

expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be

deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other

financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any

statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services.

The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new

functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our

operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of

intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we

operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new

releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization

and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of

salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This

documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of

our Web site.

Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently

available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based

upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-

looking statements.

Page 3: Choosing the Right Tool for the Job

What’s a Polyglot

A person who speaks more than one language

A person who programs in more than one language

An app or a service that uses more than one language

A platform that speaks more than one language

Polyglōttus (Latin) – Many Tongued

Page 4: Choosing the Right Tool for the Job

Goals for Today

Grasp Open Languages/Frameworks in “Polyglot”

Understanding of Use Cases Applications

Approach when Determining “What’s the Correct Tool?”

Page 5: Choosing the Right Tool for the Job

Why It’s Important

Page 6: Choosing the Right Tool for the Job

Sharp Pointy Tools

Hammer and photo credit: Ian Baker @raindrift

Page 7: Choosing the Right Tool for the Job

Java & JVM-Based Languages

Page 8: Choosing the Right Tool for the Job

What Makes Sense, When?

Different apps require a different approach

Leverage Open Tools as often as possible

There may never be a perfect option, but one might be close!

Page 9: Choosing the Right Tool for the Job

Java: The Goodness

- Most widely adopted Open Source language

- Robust and established frameworks: Spring, Hibernate…and

Play!

- Great for Asynchronous & heavy processing apps

Page 10: Choosing the Right Tool for the Job

Java: The Badness

- “The SUV of Programming Languages”

- Long in the tooth technology

- Compilation…seriously?

- Resource (time, personnel and infrastructure) intensive

Page 11: Choosing the Right Tool for the Job

- Ruby / Java App

- Global Reach

- Different Usage Profiles

- Tons of UGC

Page 12: Choosing the Right Tool for the Job
Page 13: Choosing the Right Tool for the Job

Scala: The Goodness

- Baby steps from Java

- Leverage the JVM, write less code

- Write more efficient & less buggy code

- Leverage Functional & OOP

- Great for Asynchronous & heavy processing apps (Twitter)

Page 14: Choosing the Right Tool for the Job

Scala: The Badness

- Mr. Early Adopter I presume?

- Immature Toolset

- Limited Developer Pool

- Learning Curve

- If Scala, why not Java?

Page 15: Choosing the Right Tool for the Job
Page 16: Choosing the Right Tool for the Job

Clojure: The Goodness

- “Lisp for Java”

- Leverage the JVM, write less code

- Write more efficient & less buggy code (moreso than Scala)

- Great for Asynchronous & heavy processing apps (Twitter)

Page 17: Choosing the Right Tool for the Job

Clojure: The Badness

- Mr. Earlier Adopter I presume?

- Immature Toolset

- Limited Developer Pool

- Hardcore Hacker community

- If Clojure, why not common Lisp?

Page 18: Choosing the Right Tool for the Job

Demo #1

Page 19: Choosing the Right Tool for the Job

Single Threaded Languages

Page 20: Choosing the Right Tool for the Job

Ruby: The Goodness

- Easy entre to world of programming

- Even the most senior devs enjoy it

- Large community and relatively mature tools

- Empowers Agile

- Super easy to get started

- “Developer Happiness”

Page 21: Choosing the Right Tool for the Job

Ruby: The Badness

- Single threaded = blocking requests

- Good luck finding a Ruby dev

- Limited Developer Pool

- Most folks tooled up around Java

- Building on Windows can be a pain

Page 22: Choosing the Right Tool for the Job

- Ruby (Rails) App

- Started as Team of Three

- Instant & Enormous Scale

- APIs to Social Channels

- Now part of LinkedIn

Page 23: Choosing the Right Tool for the Job

Python: The Goodness

- Came from Enterprise (Publishing)

- Easy to integrate/extend with C or Java

- Very clean syntax

- Great for Content driven apps

- Myriad of frameworks

Page 24: Choosing the Right Tool for the Job

Python: The Badness

- Single threaded = blocking requests

- Garbage collection is suspect

- Not the best for CPU (Process) heavy apps

- Tends to be slower than most

Page 25: Choosing the Right Tool for the Job

- Ruby Front End / Python Backend

- Media Driven App

- Distributed Architecture

- Marquee Mobile App

Page 26: Choosing the Right Tool for the Job

Demo #2

Page 27: Choosing the Right Tool for the Job

JavaScript

Page 28: Choosing the Right Tool for the Job

Node.js: The Goodness

- Server-side Javascript

- Great for websockets

- Very familiar syntax

- Small learning curve

- Holy Concurrency Batman!

Page 29: Choosing the Right Tool for the Job

Node.js: The Badness

- Takes a lot more code vs. others

- Community and Resource pools

- Immature technology

- Stability

- “Rails in the early Days”

Page 30: Choosing the Right Tool for the Job

A Large Web Communication App

- Node.js App

- Global Reach

- 24x7 Usage

- JSON

- Serious Concurrency

Page 31: Choosing the Right Tool for the Job

Questions to ask…

Where am I currently invested (people and technology)?

What are others in my market using?

What is my team using away from work? OR What are

they asking for?

What projects are ‘quick wins’?

Page 32: Choosing the Right Tool for the Job

Deeper nuance…

What can I use as a differentiator

Internally, what will pass muster?

Externally, what resources are available to succeed?

What’s my use case, and what would technologies would

suit it?

Page 33: Choosing the Right Tool for the Job

Brad Gyger

@bgyger

Page 34: Choosing the Right Tool for the Job

What’s Next

CodeForAmerica.org – Extreme Heroku

The 12Factor App – www.12factor.net

Heroku DevCenter – devcenter.heroku.com

Page 35: Choosing the Right Tool for the Job