Functional programming has made great strides in the popular imagination, yet adoption of FP languages has often been challenging for companies, sputtering in fits and starts. Ken has been at the forefront of REA's successful adoption of FP over four years, and will share lessons learnt and traps avoided: how a human-first approach can succeed and scale.
44. Fundamental
software principles
Applicability
VS
Last week’s hot
web framework
Every single day
Every language
Every problem
Every context
Next 6 months, if you’re
lucky
Substance Eternal and unchanging
fabric of the universe
Eternal hamster wheel of
memorising steaming piles
of human error
Long-term
consequence
Happiness, productivity &
wisdom
Quit and become a dentist
like Mum always wanted
45.
46. ...It would be a mistake to
characterize lambda calculus
as a universal language,
because calling it universal is
too limiting.
Phil Wadler
47. @
FP Guild, team dojos Chat channels
Shared norms Central expert group
#
51. Should my team use Scala?
Hey do you mind
helping out with some
advice for my team?
We’re thinking about
using Scala for the new
service…
Sure!
52. Maybe
We’ve got a couple of
Scala devs, and the rest
of the team is keen.
We want more
maintainable assets.
I can pay for an up-front
learning curve.
Maybe. Here’s
some options,
tradeoffs etc...
53. We have tight deadlines, a
new team of junior Ruby
programmers, multiple
stakeholders, and half our
team is in Xi’an.
I heard Scala will make us
more productive.
How can I make them like it?
ABSOLUTELY NOT
54. Good signs Bad signs
• Stable, established team
• Existing FP/Scala experience
• Project can bear learning curve
• Good sentiment
• Local developers
• Realistic expectations
• Unstable team
• Nobody knows Scala/FP
• Very tight deadlines
• Mixed or negative sentiment
• Offshore developers
• “It’s the cool new thing”
• “We’ll be immediately more
productive”
55. Case study 1: Colliding teams
Chalk Services Cheese Experience
56. Time for a re-org!
You are now the
“Chalk & Cheese Dept”
62. 6 months later…
Oof. This is all
going a bit
slower than we
thought…
Not going to
lie, this
Scala/FP stuff
is tough
Is this really the right
approach for us?
Hmmm.
63. We have to
help our
teammates! I’ll
make
tutorials…
I’ll run a weekly
training
session!
64. 6 months later… Success!
Woohoo!
Productivity!
This
software is
rock solid!
Love it!
Devs are knocking
down the door to join.
Great results.
Future though?
65. Case study 2: Decay & drift
Time for
something new!
Let’s use Scala
66. Can you help us
with some weekly
training sessions?
Sure!
71. Case study 3: Empathy FTW
?
We do a lot of
maintenance, quality
matters.
A lot of our stuff is
already Scala.
We really want to learn.
I’m happy to
invest in our
skills!
72. Sure, I can fit
you in
once/week!
Could you help us
with some training?
73. It’s up to me to
make sure my
teammates are
having a good
time with this
104. 2017
f ◦ (g ◦ h) =
(f ◦ g) ◦ h
(theory)17x
(7x first time speakers)
105. Low bar
• Timebox to 2 hours prep, max
• Lower bar means more speakers
• More diverse speakers
• Sanity for organisers
106. Consistency
“The show doesn’t go on because it’s
ready; it goes on because it’s 11:30.”
- Lorne Michaels, SNL creator
107. Consistency
• Consistency is really important for building
confidence in a group
• Every Wednesday 4pm without fail, 4 years
running
• (except for Christmas & Hackathons)
108. Consistency
1. Call for talks on Monday
2. Pester individuals
3. Riff on something off the top of head
4. Watch video
Fallbacks:
114. Blah blah monad stack,
typeclass coherence
I’ll bet I’m the only
person who
doesn’t understand
this
Imagined:
115. Blah blah monad stack,
typeclass coherence
I’ll bet I’m the only
person who
doesn’t understand
this
Actual: I’ll bet I’m the only
person who
doesn’t understand
this
I’ll bet I’m the only
person who
doesn’t understand
this
I’ll bet I’m the only
person who
doesn’t understand
this
I’ll bet I’m the only
person who
doesn’t understand
this
116. • Natural bias toward advanced talks
• Encourage beginner talks
• Encourage beginners talking!
• Bigger, more diverse crowds
117. • Functional programming is totally awesome
• Technical benefits are worth pursuing
• None of it matters a damn unless you can make it help people
• By taking a human-first approach, a sustainable, self-perpetuating
culture of learning and achievement is possible, to everyone’s
benefit
Conclusion