SlideShare a Scribd company logo
Building a Company on
Scala
Dag Liodden
2
Scala Days Chicago 2017: Building a Company on Scala
Scaling from 1 dev to 50?
You need a FRAMEWORK
Having too many
degrees of
freedom hurts
productivity
Constraints will:
• Make developers focus on more on
design than implementation details
• Make your code base more
approachable
• Make your codebase easier to
maintain and refactor when you
change the constraintsConstraining patterns are good
Evolving
patterns
Step 1: What can this thing do?
Step 2: How do I do X?
Step 3: What other ways can I do X?
Step 4: What’s the best way to do X?
Step 5: Formalize 4 into pattern
Step 6a: Get work done
Step 6b: Revisit 4 at appropriate freq
Scala makes it particularly easy to get
stuck in 3 and 4!
Scala is incredibly flexible
That comes at a price
A framework is a
formalization of patterns and
best practices
It’s necessary to stay productive
There are few frameworks in
Scala-land
Toolkits rule the Scala domain
Constructing a framework
Because you have to
“FP” Mastery is not required
to Master Scala
Scala is not Java, but it’s also not Haskell
Don’t let the possibilities
intimidate or seduce you
Just because it’s possible, doesn’t make it right
Decide early how you want
to apply Scala
Figuring out where on the OO-FP scale you want to
be along the way is risky
Tools and toolkits are
means to an end
Eager awareness, careful adoption
Everything has trade-offs
The Actor
model
“Akka is a toolkit and runtime for building
highly concurrent, distributed, and
resilient message-driven applications on
the JVM.”
• Know what it is and isn’t
• Leverage it only if appropriate!
Reactive and
Async vs Sync
Make a firm decision early,
middle-ground does not work
Reactive programming comes with:
• Cognitive overhead
• Backpressure, anyone?
• Performance gotchas
• Compatibility issues
Don’t obsess
about terseness
Focus on clarity and
approachability
What do I need to import to make this
work?
1 second
// vs
FiniteDuration.seconds(1)
db ? (sql, "name" like "%Joe%")
// vs
db.selectOneWhere(
sql,
SqlField("name").like("%Joe%")
)
Premature and
one-off
abstractions
Building abstractions is SOO tempting in
Scala, but:
• A pattern is not a pattern until it has
been observed several times
• Assuming that you capture the
pattern right away is a bold one
• A function is often sufficient!
• Be very careful when promoting
patterns into the framework
Don’t reinvent
everything in
Scala
Borrow from the rest of the JVM
ecosystem
It’s fun to implement RFCs in Scala, but
is it productive?
• Dispatch vs Dispatch Reboot
• Static singletons -> Cake pattern ->
Guice
When to begin?
Allow evolution
to happen
Step 1: What can this thing do?
Step 2: How do I do X?
Step 3: What other ways can I do X?
Step 4: What’s the best way to do X?
Step 5: Promote pattern to framework`
Step 6a: Get work done
Step 6b: Revisit 4 at appropriate freq
In step 5, invest time in going back
and removing the anti-patterns
(this is hard)
Don’t leave it to a single
developer
Let the tools fade into the
background
Spend more time on higher level design
Train, explain, scrutinize,
evolve
As a team and a community
• You don’t have to master FP to master Scala
• Expect your mindset to evolve, but be rigorous
when you adopt new patterns
• Treat your tools as means to an end and allow
them to fade into the background
Key takeaways
Questions?
Scala Days Chicago 2017: Building a Company on Scala
Scala Days Chicago 2017: Building a Company on Scala

More Related Content

PDF
DevOps Anti-Patterns
PDF
Seven deadly wastes
PDF
Going faster with kanban
KEY
Driving application development through behavior driven development
PPTX
Scrum Plus Extreme Programming (XP) for Hyper Productivity
PDF
5 Best Practices DevOps Culture
PPTX
PPTX
Api360 Summit The Automated Monolith
DevOps Anti-Patterns
Seven deadly wastes
Going faster with kanban
Driving application development through behavior driven development
Scrum Plus Extreme Programming (XP) for Hyper Productivity
5 Best Practices DevOps Culture
Api360 Summit The Automated Monolith

What's hot (20)

PPTX
DevOps Patterns - Team Topologies
PDF
Intro to Kanban
PDF
Salesforce DevOps: Where Do You Start?
PDF
FAST Agile
PPTX
Lap around ALM with Visual Studio and TFS 2013
PDF
Getting Started with DevOps
PDF
Demystifying DevOps
PDF
DevOps: Building by feature with immutable infrastructure at Serv.sg
PPTX
It's XP Stupid (2019)
PPTX
Kanban like another approach for gaming projects, Катерина Гаськова
PPTX
The Clash Between Devops and Quality Assurance
PDF
The Perfect Neos Project Setup
PDF
Modern Module Development
PDF
Scrumban
PDF
Choosing Between Scrum and Kanban - TriAgile 2015
PPTX
Scrumban - applying agile and lean practices for daily uncertainty by Vidas V...
PDF
Scrumban - benefits of both the worlds
PDF
London Atlassian User Group - February 2014
PDF
Distributed Agility
DevOps Patterns - Team Topologies
Intro to Kanban
Salesforce DevOps: Where Do You Start?
FAST Agile
Lap around ALM with Visual Studio and TFS 2013
Getting Started with DevOps
Demystifying DevOps
DevOps: Building by feature with immutable infrastructure at Serv.sg
It's XP Stupid (2019)
Kanban like another approach for gaming projects, Катерина Гаськова
The Clash Between Devops and Quality Assurance
The Perfect Neos Project Setup
Modern Module Development
Scrumban
Choosing Between Scrum and Kanban - TriAgile 2015
Scrumban - applying agile and lean practices for daily uncertainty by Vidas V...
Scrumban - benefits of both the worlds
London Atlassian User Group - February 2014
Distributed Agility
Ad

Similar to Scala Days Chicago 2017: Building a Company on Scala (20)

PPTX
Generalization in Auto-Testing. How we put what we had into new Technological...
PDF
WTFAST Crack Latest Version FREE Downlaod 2025
PDF
uTorrent Pro Crack Latest Version free 2025
PDF
Adobe Master Collection CC Crack 2025 FREE
PDF
AOMEI Partition Assistant Crack 2025 FREE
PDF
K7 Total Security 16.0.1260 Crack + License Key Free
PPTX
Evolving Scala, Scalar conference, Warsaw, March 2025
PPT
SynapseIndia drupal presentation on drupal info
PPTX
Improving the Quality of Existing Software
KEY
Portable infrastructure with puppet
PDF
Java 9, JShell, and Modularity
PPTX
Scala adoption by enterprises
PDF
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
PDF
The JavaScript Delusion
PPTX
Introduction to the Managed Extensibility Framework in Silverlight
PPTX
Intro To AOP
PPTX
Testing with laravel
PPTX
The ABC's of IaC
PDF
Stackato
PPTX
Entity Framework: To the Unit of Work Design Pattern and Beyond
Generalization in Auto-Testing. How we put what we had into new Technological...
WTFAST Crack Latest Version FREE Downlaod 2025
uTorrent Pro Crack Latest Version free 2025
Adobe Master Collection CC Crack 2025 FREE
AOMEI Partition Assistant Crack 2025 FREE
K7 Total Security 16.0.1260 Crack + License Key Free
Evolving Scala, Scalar conference, Warsaw, March 2025
SynapseIndia drupal presentation on drupal info
Improving the Quality of Existing Software
Portable infrastructure with puppet
Java 9, JShell, and Modularity
Scala adoption by enterprises
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
The JavaScript Delusion
Introduction to the Managed Extensibility Framework in Silverlight
Intro To AOP
Testing with laravel
The ABC's of IaC
Stackato
Entity Framework: To the Unit of Work Design Pattern and Beyond
Ad

Recently uploaded (20)

PPTX
Spectroscopy.pptx food analysis technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
Teaching material agriculture food technology
PDF
Machine learning based COVID-19 study performance prediction
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Cloud computing and distributed systems.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
Spectroscopy.pptx food analysis technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Teaching material agriculture food technology
Machine learning based COVID-19 study performance prediction
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Per capita expenditure prediction using model stacking based on satellite ima...
Cloud computing and distributed systems.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation theory and applications.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
20250228 LYD VKU AI Blended-Learning.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Unlocking AI with Model Context Protocol (MCP)

Scala Days Chicago 2017: Building a Company on Scala

  • 1. Building a Company on Scala Dag Liodden
  • 2. 2
  • 4. Scaling from 1 dev to 50?
  • 5. You need a FRAMEWORK
  • 6. Having too many degrees of freedom hurts productivity Constraints will: • Make developers focus on more on design than implementation details • Make your code base more approachable • Make your codebase easier to maintain and refactor when you change the constraintsConstraining patterns are good
  • 7. Evolving patterns Step 1: What can this thing do? Step 2: How do I do X? Step 3: What other ways can I do X? Step 4: What’s the best way to do X? Step 5: Formalize 4 into pattern Step 6a: Get work done Step 6b: Revisit 4 at appropriate freq Scala makes it particularly easy to get stuck in 3 and 4!
  • 8. Scala is incredibly flexible That comes at a price
  • 9. A framework is a formalization of patterns and best practices It’s necessary to stay productive
  • 10. There are few frameworks in Scala-land Toolkits rule the Scala domain
  • 12. “FP” Mastery is not required to Master Scala Scala is not Java, but it’s also not Haskell
  • 13. Don’t let the possibilities intimidate or seduce you Just because it’s possible, doesn’t make it right
  • 14. Decide early how you want to apply Scala Figuring out where on the OO-FP scale you want to be along the way is risky
  • 15. Tools and toolkits are means to an end Eager awareness, careful adoption Everything has trade-offs
  • 16. The Actor model “Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.” • Know what it is and isn’t • Leverage it only if appropriate!
  • 17. Reactive and Async vs Sync Make a firm decision early, middle-ground does not work Reactive programming comes with: • Cognitive overhead • Backpressure, anyone? • Performance gotchas • Compatibility issues
  • 18. Don’t obsess about terseness Focus on clarity and approachability What do I need to import to make this work? 1 second // vs FiniteDuration.seconds(1) db ? (sql, "name" like "%Joe%") // vs db.selectOneWhere( sql, SqlField("name").like("%Joe%") )
  • 19. Premature and one-off abstractions Building abstractions is SOO tempting in Scala, but: • A pattern is not a pattern until it has been observed several times • Assuming that you capture the pattern right away is a bold one • A function is often sufficient! • Be very careful when promoting patterns into the framework
  • 20. Don’t reinvent everything in Scala Borrow from the rest of the JVM ecosystem It’s fun to implement RFCs in Scala, but is it productive? • Dispatch vs Dispatch Reboot • Static singletons -> Cake pattern -> Guice
  • 22. Allow evolution to happen Step 1: What can this thing do? Step 2: How do I do X? Step 3: What other ways can I do X? Step 4: What’s the best way to do X? Step 5: Promote pattern to framework` Step 6a: Get work done Step 6b: Revisit 4 at appropriate freq In step 5, invest time in going back and removing the anti-patterns (this is hard)
  • 23. Don’t leave it to a single developer
  • 24. Let the tools fade into the background Spend more time on higher level design
  • 25. Train, explain, scrutinize, evolve As a team and a community
  • 26. • You don’t have to master FP to master Scala • Expect your mindset to evolve, but be rigorous when you adopt new patterns • Treat your tools as means to an end and allow them to fade into the background Key takeaways