SlideShare a Scribd company logo
1 of 29
Functional Programming 
at Verizon OnCue 
6th September 2014 
Timothy Perrett 
Service Architect 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement.
Secret project. 
Formally Intel Media; purchased by Verizon 
in early 2014. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 2
Completely “green field”. 
Every conceivable system component was being 
created from scratch. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 3
Scala Services. 
Using FP for all platform services from day one. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 4
Challenges. 
We’ve broken our fair share of eggs making this 
particular omelet. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 5
Explosion in team size. 
Engineering group expanded by an order of 
magnitude within the first year. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 6
Utilize market conditions. 
Market supply of specific skills is nearly always 
eclipsed by supply of candidates with strong 
engineering aptitude. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 7
Every engineer is unique. 
Engineers are people; not pluggable resources. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 8
Effort of learning FP 
Effort 
Time 
Time in a single language 
Ease of learning FP 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 9
Effort of learning FP 
Effort 
Time in a single language 
Ease of learning FP Less unlearning; 
FP more intuitive 
Time 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 10
Effort of learning FP 
Effort 
Time 
Time in a single language 
Large unlearning Ease of learning FP 
period; FP “is hard” 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 11
Perceived difficulty. 
“Constant struggle against your own instincts” 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 12
Effort of learning FP 
Cost of learning FP vs time in multiple PL paradigms 
Time in n-PL Ease of learning FP 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 13
Strong teams need both. 
Embrace change, tackle challenges together. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 14
Distribute team education. 
Centralized education alone is not enough. Use 
education, pair programming and team sessions. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 15
Provide space to learn. 
Be prepared to allow the team to make mistakes, give 
room to learn and encourage experimentation. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 16
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 17
Libraries can be dangerous. 
Encouraging reuse across a large team results in 
inconsistent, lossy abstractions. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 18
Functional core. Imperative API. 
Internally functional libraries can have optional 
imperative APIs for easier migration / learning curve. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 19
Code Example 
val config: Task[Config] = 
knobs.loadImmutable(Required(FileResource(...))) or 
knobs.loadImmutable(Required(ClassPathResource(...))) 
val connection: Task[Connection] = 
for { 
cfg <- config 
usr <- cfg.require[String]("db.username") 
pwd <- cfg.require[String]("db.password") 
prt <- cfg.lookup[String]("db.port") 
} yield Connection(usr,pwd,port) 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 20
Code Example 
import instruments.timer 
val taken = timer( 
name = "time-taken", 
description = "Time taken to compute Foos") 
def thing(x: Bar): Foo = 
taken.time { 
// compute Foo 
} 
def thingAsync(x: Bar): Task[Foo] = 
taken.timeTask(taskComputingFoo) 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 21
Writing from scratch is a win 
If you can: build it. Taylor to your orgs’ needs. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 22
Numerous internal libraries. 
Monitoring. Configuration. Graph Processing. 
Logging. Functional RPC system… and many more. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 23
Minimal external dependencies* 
Scalaz. Scalaz-Stream. Scodec. Shapeless. 
*working on the jvm often makes this problematic (log4j, slf4j etc). 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 24
Was it worth it? 
100% yes. Choosing to use functional programming 
has ultimately eased our lives considerably. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 25
Change is easy. 
So easy we don’t even notice the daily win. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 26
New and exciting wins the day. 
Happy teams are productive teams. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 27
We’re hiring! 
At every level of the stack. Yes, really. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 28
Q&A 
Thank you for listening. 
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 29

More Related Content

Similar to Functional Programming at Verizon

TVOT NYC Intensive T-Commerce Panel Presentation December, 2011
TVOT NYC Intensive T-Commerce Panel Presentation December, 2011TVOT NYC Intensive T-Commerce Panel Presentation December, 2011
TVOT NYC Intensive T-Commerce Panel Presentation December, 2011Interactive TV Commerce
 
WE16 - Cyber Security - Security is Everyone's Responsibility
WE16 - Cyber Security - Security is Everyone's ResponsibilityWE16 - Cyber Security - Security is Everyone's Responsibility
WE16 - Cyber Security - Security is Everyone's ResponsibilitySociety of Women Engineers
 
The Relationship of Video, Sound, Captions, & Everything Under the Sun
The Relationship of Video, Sound, Captions, & Everything Under the SunThe Relationship of Video, Sound, Captions, & Everything Under the Sun
The Relationship of Video, Sound, Captions, & Everything Under the Sun3Play Media
 
Cloud Edge Computing: Beyond the Data Center
Cloud Edge Computing: Beyond the Data CenterCloud Edge Computing: Beyond the Data Center
Cloud Edge Computing: Beyond the Data CenterMassTLC
 
bw23-nyfinalpresentation-verizon-130426104853-phpapp02
bw23-nyfinalpresentation-verizon-130426104853-phpapp02bw23-nyfinalpresentation-verizon-130426104853-phpapp02
bw23-nyfinalpresentation-verizon-130426104853-phpapp02Laurie Shook, MBA
 
BlogWell New York Social Media Case Study: Verizon, presented by Laurie Shook
BlogWell New York Social Media Case Study: Verizon, presented by Laurie ShookBlogWell New York Social Media Case Study: Verizon, presented by Laurie Shook
BlogWell New York Social Media Case Study: Verizon, presented by Laurie ShookSocialMedia.org
 
Mobile technology andy brady - chicago tour
Mobile technology   andy brady - chicago tour Mobile technology   andy brady - chicago tour
Mobile technology andy brady - chicago tour Ramon Ray
 
Cyber Threats Presentation Sample
Cyber Threats Presentation SampleCyber Threats Presentation Sample
Cyber Threats Presentation SampleRichard Smiraldi
 
Avoid the Distributed Monolith!!
Avoid the Distributed Monolith!!Avoid the Distributed Monolith!!
Avoid the Distributed Monolith!!DevOpsDays DFW
 
How to Deal with Constant Change by Verizon Product Manager
How to Deal with Constant Change by Verizon Product ManagerHow to Deal with Constant Change by Verizon Product Manager
How to Deal with Constant Change by Verizon Product ManagerProduct School
 
Smarter Security - A Practical Guide to Doing More with Less
Smarter Security - A Practical Guide to Doing More with LessSmarter Security - A Practical Guide to Doing More with Less
Smarter Security - A Practical Guide to Doing More with LessOmar Khawaja
 
Harnessing Hadoop Distuption: A Telco Case Study
Harnessing Hadoop Distuption: A Telco Case StudyHarnessing Hadoop Distuption: A Telco Case Study
Harnessing Hadoop Distuption: A Telco Case StudyDataWorks Summit
 
How Verizon Uses Disruptive Developments for Organized Progress
How Verizon Uses Disruptive Developments for Organized ProgressHow Verizon Uses Disruptive Developments for Organized Progress
How Verizon Uses Disruptive Developments for Organized ProgressMongoDB
 
Vnf onboarding - Current State and Path Forward
Vnf onboarding - Current State and Path ForwardVnf onboarding - Current State and Path Forward
Vnf onboarding - Current State and Path ForwardRavi kumar Chunduru
 
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...UXDXConf
 

Similar to Functional Programming at Verizon (20)

TVOT NYC Intensive T-Commerce Panel Presentation December, 2011
TVOT NYC Intensive T-Commerce Panel Presentation December, 2011TVOT NYC Intensive T-Commerce Panel Presentation December, 2011
TVOT NYC Intensive T-Commerce Panel Presentation December, 2011
 
WE16 - Cyber Security - Security is Everyone's Responsibility
WE16 - Cyber Security - Security is Everyone's ResponsibilityWE16 - Cyber Security - Security is Everyone's Responsibility
WE16 - Cyber Security - Security is Everyone's Responsibility
 
The Relationship of Video, Sound, Captions, & Everything Under the Sun
The Relationship of Video, Sound, Captions, & Everything Under the SunThe Relationship of Video, Sound, Captions, & Everything Under the Sun
The Relationship of Video, Sound, Captions, & Everything Under the Sun
 
Cloud Edge Computing: Beyond the Data Center
Cloud Edge Computing: Beyond the Data CenterCloud Edge Computing: Beyond the Data Center
Cloud Edge Computing: Beyond the Data Center
 
Presentation
PresentationPresentation
Presentation
 
construction_1b
construction_1bconstruction_1b
construction_1b
 
Verizon January 8, 2014
Verizon   January 8, 2014Verizon   January 8, 2014
Verizon January 8, 2014
 
bw23-nyfinalpresentation-verizon-130426104853-phpapp02
bw23-nyfinalpresentation-verizon-130426104853-phpapp02bw23-nyfinalpresentation-verizon-130426104853-phpapp02
bw23-nyfinalpresentation-verizon-130426104853-phpapp02
 
BlogWell New York Social Media Case Study: Verizon, presented by Laurie Shook
BlogWell New York Social Media Case Study: Verizon, presented by Laurie ShookBlogWell New York Social Media Case Study: Verizon, presented by Laurie Shook
BlogWell New York Social Media Case Study: Verizon, presented by Laurie Shook
 
Mobile technology andy brady - chicago tour
Mobile technology   andy brady - chicago tour Mobile technology   andy brady - chicago tour
Mobile technology andy brady - chicago tour
 
Cyber Threats Presentation Sample
Cyber Threats Presentation SampleCyber Threats Presentation Sample
Cyber Threats Presentation Sample
 
Sample analyst deck
Sample analyst deckSample analyst deck
Sample analyst deck
 
Cyber threats sample
Cyber threats sampleCyber threats sample
Cyber threats sample
 
Avoid the Distributed Monolith!!
Avoid the Distributed Monolith!!Avoid the Distributed Monolith!!
Avoid the Distributed Monolith!!
 
How to Deal with Constant Change by Verizon Product Manager
How to Deal with Constant Change by Verizon Product ManagerHow to Deal with Constant Change by Verizon Product Manager
How to Deal with Constant Change by Verizon Product Manager
 
Smarter Security - A Practical Guide to Doing More with Less
Smarter Security - A Practical Guide to Doing More with LessSmarter Security - A Practical Guide to Doing More with Less
Smarter Security - A Practical Guide to Doing More with Less
 
Harnessing Hadoop Distuption: A Telco Case Study
Harnessing Hadoop Distuption: A Telco Case StudyHarnessing Hadoop Distuption: A Telco Case Study
Harnessing Hadoop Distuption: A Telco Case Study
 
How Verizon Uses Disruptive Developments for Organized Progress
How Verizon Uses Disruptive Developments for Organized ProgressHow Verizon Uses Disruptive Developments for Organized Progress
How Verizon Uses Disruptive Developments for Organized Progress
 
Vnf onboarding - Current State and Path Forward
Vnf onboarding - Current State and Path ForwardVnf onboarding - Current State and Path Forward
Vnf onboarding - Current State and Path Forward
 
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...
Strategic Alignment by Design - Short Term Fire Fighting versus Unified Direc...
 

More from Timothy Perrett

Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldTimothy Perrett
 
Online Experimentation with Immutable Infrastructure
Online Experimentation with Immutable InfrastructureOnline Experimentation with Immutable Infrastructure
Online Experimentation with Immutable InfrastructureTimothy Perrett
 
Enterprise Algebras, Scala World 2016
Enterprise Algebras, Scala World 2016Enterprise Algebras, Scala World 2016
Enterprise Algebras, Scala World 2016Timothy Perrett
 
Large-scale Infrastructure Automation at Verizon
Large-scale Infrastructure Automation at VerizonLarge-scale Infrastructure Automation at Verizon
Large-scale Infrastructure Automation at VerizonTimothy Perrett
 
Reasonable RPC with Remotely
Reasonable RPC with RemotelyReasonable RPC with Remotely
Reasonable RPC with RemotelyTimothy Perrett
 
Building Enigma with State Monad & Lens
Building Enigma with State Monad & LensBuilding Enigma with State Monad & Lens
Building Enigma with State Monad & LensTimothy Perrett
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable WebTimothy Perrett
 
Javazone 2011: Goal Directed Web Applications
Javazone 2011: Goal Directed Web ApplicationsJavazone 2011: Goal Directed Web Applications
Javazone 2011: Goal Directed Web ApplicationsTimothy Perrett
 
Concurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaConcurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaTimothy Perrett
 
Scaladays 2011: Task Driven Scala Web Applications
Scaladays 2011: Task Driven Scala Web ApplicationsScaladays 2011: Task Driven Scala Web Applications
Scaladays 2011: Task Driven Scala Web ApplicationsTimothy Perrett
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicTimothy Perrett
 
Devoxx 2009: The Lift Framework
Devoxx 2009: The Lift FrameworkDevoxx 2009: The Lift Framework
Devoxx 2009: The Lift FrameworkTimothy Perrett
 

More from Timothy Perrett (15)

Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional World
 
Online Experimentation with Immutable Infrastructure
Online Experimentation with Immutable InfrastructureOnline Experimentation with Immutable Infrastructure
Online Experimentation with Immutable Infrastructure
 
Enterprise Algebras, Scala World 2016
Enterprise Algebras, Scala World 2016Enterprise Algebras, Scala World 2016
Enterprise Algebras, Scala World 2016
 
Large-scale Infrastructure Automation at Verizon
Large-scale Infrastructure Automation at VerizonLarge-scale Infrastructure Automation at Verizon
Large-scale Infrastructure Automation at Verizon
 
Reasonable RPC with Remotely
Reasonable RPC with RemotelyReasonable RPC with Remotely
Reasonable RPC with Remotely
 
Building Enigma with State Monad & Lens
Building Enigma with State Monad & LensBuilding Enigma with State Monad & Lens
Building Enigma with State Monad & Lens
 
Scalalable Language for a Scalable Web
Scalalable Language for a Scalable WebScalalable Language for a Scalable Web
Scalalable Language for a Scalable Web
 
BRUG - Hello, Scala
BRUG - Hello, ScalaBRUG - Hello, Scala
BRUG - Hello, Scala
 
Scala Helix
Scala HelixScala Helix
Scala Helix
 
Javazone 2011: Goal Directed Web Applications
Javazone 2011: Goal Directed Web ApplicationsJavazone 2011: Goal Directed Web Applications
Javazone 2011: Goal Directed Web Applications
 
Concurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaConcurrency and Parallelism with Scala
Concurrency and Parallelism with Scala
 
Scaladays 2011: Task Driven Scala Web Applications
Scaladays 2011: Task Driven Scala Web ApplicationsScaladays 2011: Task Driven Scala Web Applications
Scaladays 2011: Task Driven Scala Web Applications
 
Bathcamp 2010-riak
Bathcamp 2010-riakBathcamp 2010-riak
Bathcamp 2010-riak
 
Javazone 2010-lift-framework-public
Javazone 2010-lift-framework-publicJavazone 2010-lift-framework-public
Javazone 2010-lift-framework-public
 
Devoxx 2009: The Lift Framework
Devoxx 2009: The Lift FrameworkDevoxx 2009: The Lift Framework
Devoxx 2009: The Lift Framework
 

Recently uploaded

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Recently uploaded (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

Functional Programming at Verizon

  • 1. Functional Programming at Verizon OnCue 6th September 2014 Timothy Perrett Service Architect Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement.
  • 2. Secret project. Formally Intel Media; purchased by Verizon in early 2014. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 2
  • 3. Completely “green field”. Every conceivable system component was being created from scratch. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 3
  • 4. Scala Services. Using FP for all platform services from day one. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 4
  • 5. Challenges. We’ve broken our fair share of eggs making this particular omelet. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 5
  • 6. Explosion in team size. Engineering group expanded by an order of magnitude within the first year. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 6
  • 7. Utilize market conditions. Market supply of specific skills is nearly always eclipsed by supply of candidates with strong engineering aptitude. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 7
  • 8. Every engineer is unique. Engineers are people; not pluggable resources. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 8
  • 9. Effort of learning FP Effort Time Time in a single language Ease of learning FP Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 9
  • 10. Effort of learning FP Effort Time in a single language Ease of learning FP Less unlearning; FP more intuitive Time Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 10
  • 11. Effort of learning FP Effort Time Time in a single language Large unlearning Ease of learning FP period; FP “is hard” Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 11
  • 12. Perceived difficulty. “Constant struggle against your own instincts” Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 12
  • 13. Effort of learning FP Cost of learning FP vs time in multiple PL paradigms Time in n-PL Ease of learning FP Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 13
  • 14. Strong teams need both. Embrace change, tackle challenges together. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 14
  • 15. Distribute team education. Centralized education alone is not enough. Use education, pair programming and team sessions. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 15
  • 16. Provide space to learn. Be prepared to allow the team to make mistakes, give room to learn and encourage experimentation. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 16
  • 17. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 17
  • 18. Libraries can be dangerous. Encouraging reuse across a large team results in inconsistent, lossy abstractions. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 18
  • 19. Functional core. Imperative API. Internally functional libraries can have optional imperative APIs for easier migration / learning curve. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 19
  • 20. Code Example val config: Task[Config] = knobs.loadImmutable(Required(FileResource(...))) or knobs.loadImmutable(Required(ClassPathResource(...))) val connection: Task[Connection] = for { cfg <- config usr <- cfg.require[String]("db.username") pwd <- cfg.require[String]("db.password") prt <- cfg.lookup[String]("db.port") } yield Connection(usr,pwd,port) Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 20
  • 21. Code Example import instruments.timer val taken = timer( name = "time-taken", description = "Time taken to compute Foos") def thing(x: Bar): Foo = taken.time { // compute Foo } def thingAsync(x: Bar): Task[Foo] = taken.timeTask(taskComputingFoo) Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 21
  • 22. Writing from scratch is a win If you can: build it. Taylor to your orgs’ needs. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 22
  • 23. Numerous internal libraries. Monitoring. Configuration. Graph Processing. Logging. Functional RPC system… and many more. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 23
  • 24. Minimal external dependencies* Scalaz. Scalaz-Stream. Scodec. Shapeless. *working on the jvm often makes this problematic (log4j, slf4j etc). Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 24
  • 25. Was it worth it? 100% yes. Choosing to use functional programming has ultimately eased our lives considerably. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 25
  • 26. Change is easy. So easy we don’t even notice the daily win. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 26
  • 27. New and exciting wins the day. Happy teams are productive teams. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 27
  • 28. We’re hiring! At every level of the stack. Yes, really. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 28
  • 29. Q&A Thank you for listening. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. 29

Editor's Notes

  1. How do you scale a large team doing functional programming? What are the risks? What are the benefits?
  2. Tell the story about kelly.
  3. Diverse set of technical backgrounds within engineering team Everything from seasoned C++ and Java veterans to Rubyists
  4. Strong teams need the experience and depth long-time platform users bring, but the organization also needs evangelists to keep the FP momentum going and to stop managers slipping into the “we only know Java, so that’s what we’ll hire for” mode.
  5. + Encourage a culture where staff can ask their desk neighbors questions and work together. + Pair juniors with both seniors and occasionally other juniors: everyone can be both a teacher and student.
  6. + The line between a generilized abstraction and obfuscation of well understood apis is far thinner than most give credit for. + Accept that you will acrew technical debt
  7. Despite this overhead, FP has still be a huge win within the organization for several reasons:
  8. in our daily work we find that changing things is very easy; so easy in fact that we dont even notice the daily wins. (e.g. knobs refactor)
  9. sense of newness keeps the team pumped and having a high morale ultimately makes the team more productive overall Ultimately its not Java!