tales from a radically polyglot team

63
RADICALLY Polyglot TEAM

Upload: thoughtworks

Post on 22-Nov-2014

3.670 views

Category:

Engineering


1 download

DESCRIPTION

Arranging software development around a wide mix of programming languages and technologies offers both challenges and rewards. In this talk Ryan will explore the pros and cons that the 6Wunderkinder team found when working with over 10 different programming languages in a single product.

TRANSCRIPT

Page 1: Tales from a radically polyglot team

RADICALLYPolyglot

TEAM

Page 2: Tales from a radically polyglot team

RYAN LEVICK@itchyankles

Page 3: Tales from a radically polyglot team
Page 4: Tales from a radically polyglot team

OVER ten LANGUAGES

Page 5: Tales from a radically polyglot team
Page 6: Tales from a radically polyglot team
Page 7: Tales from a radically polyglot team
Page 8: Tales from a radically polyglot team
Page 9: Tales from a radically polyglot team
Page 10: Tales from a radically polyglot team

Why?

Page 11: Tales from a radically polyglot team

Software Crisis

Page 12: Tales from a radically polyglot team

The major cause of the software crisis is that the machines have become several

orders of magnitude more powerful! To put it quite bluntly: as long as there

were no machines, programming was no problem at all…

Page 13: Tales from a radically polyglot team

…When we had a few weak computers, programming became a mild problem, and now we have gigantic computers,

programming has become an equally

gigantic problem.

Edsger W. Dijkstra

Page 14: Tales from a radically polyglot team
Page 15: Tales from a radically polyglot team

void quick_sort (int *a, int n) { if (n < 2) return; int p = a[n / 2]; int *l = a; int *r = a + n - 1; while (l <= r) { if (*l < p) { l++; } else if (*r > p) { r--; } else { int t = *l; *l = *r; *r = t; l++; r--; } } quick_sort(a, r - a + 1); quick_sort(l, a + n - l); }

Page 16: Tales from a radically polyglot team

qsort :: Ord a => [a] -> [a] qsort [] = [] qsort (x:xs) = qsort less ++ [x] ++ qsort greater where less = [ y | y <- xs, y < x ] greater = [ y | y <- xs, y >= x ]

Page 17: Tales from a radically polyglot team

Internet

Page 18: Tales from a radically polyglot team
Page 19: Tales from a radically polyglot team
Page 20: Tales from a radically polyglot team

New Problems

Page 21: Tales from a radically polyglot team
Page 22: Tales from a radically polyglot team
Page 23: Tales from a radically polyglot team
Page 24: Tales from a radically polyglot team
Page 25: Tales from a radically polyglot team

Client Teams

Page 26: Tales from a radically polyglot team

Backend Team

Page 27: Tales from a radically polyglot team

OVER ten LANGUAGES

Page 28: Tales from a radically polyglot team

Bash Clojure

C# Go

Haskell Java

JavaScript/Node.js

Objective-C Python Ruby Scala

Page 29: Tales from a radically polyglot team

Trivial

Page 30: Tales from a radically polyglot team

Your Responsibility

Page 31: Tales from a radically polyglot team

1

2

3

4

5

Page 32: Tales from a radically polyglot team

Why?

Page 33: Tales from a radically polyglot team

We have to

Page 34: Tales from a radically polyglot team
Page 35: Tales from a radically polyglot team

We want to

develop quicker

Page 36: Tales from a radically polyglot team
Page 37: Tales from a radically polyglot team

We want the system to

run faster

Page 38: Tales from a radically polyglot team
Page 39: Tales from a radically polyglot team

We want to

be more expressive

Page 40: Tales from a radically polyglot team
Page 41: Tales from a radically polyglot team

We want to

learn

Page 42: Tales from a radically polyglot team
Page 43: Tales from a radically polyglot team
Page 44: Tales from a radically polyglot team

Is this really a good thing ?

Page 45: Tales from a radically polyglot team

Challenges

Page 46: Tales from a radically polyglot team

Deployment Woes

Page 47: Tales from a radically polyglot team

Context Switching

Page 48: Tales from a radically polyglot team

Jack-of-All-Trades !

Master-of-None

Page 49: Tales from a radically polyglot team

Benefits

Page 50: Tales from a radically polyglot team
Page 51: Tales from a radically polyglot team

Value Rigidity

Page 52: Tales from a radically polyglot team

The Fallacy of

General Purpose

Page 53: Tales from a radically polyglot team

The Spread of Ideas

Page 54: Tales from a radically polyglot team

Avoid Group Think

Page 55: Tales from a radically polyglot team
Page 56: Tales from a radically polyglot team

The Best People

Page 57: Tales from a radically polyglot team

The Right Tool

!

for the Job

Page 58: Tales from a radically polyglot team

Happier !

Employees

Page 59: Tales from a radically polyglot team
Page 60: Tales from a radically polyglot team

Your Future

Page 61: Tales from a radically polyglot team

Benefits of Polyglotism

Page 62: Tales from a radically polyglot team

Be Happy

Page 63: Tales from a radically polyglot team

Thank You