SlideShare a Scribd company logo
MODERN-DAY
JVM
CONTROVERSIES
MAVEN OR GRADLE?
BACKGROUND
+ CAVEATS
FLAME WAR STEPS
▸ The Talking Parrot Phase
▸ “It’s got Electrolytes” , “It’s Web-Scale”
▸ The Google Lookup Phase
▸ “X is better then Y”
▸ The Emotional Breakdown Phase
▸ “X sucks! , Y is evil!” , name calling …
▸ .. if you’re lucky “Goodwin’s Law”
MicroServices
Kubernetenes
Docker
Kotlin
LEVEL SET
▸ Economics 101
▸ Needs are infinite, resources are finite
▸ Probability 101
▸ Rule-of-Thumb, “In general,” , sensible defaults
▸ Human Nature 101
▸ Self-Interest / Identity
▸ Biases / Shiny-Objects
▸ Rules based -> Big Picture (Dreyfus Model)
DREYFUS MODEL OF SKILL ACQUISITION
Novice Begineer Competent Proficient Expert
Rigid Adherence to Rules
Holistic Picture
DEVELOPER PRODUCTIVITY
▸ Higher-Level Trend
▸ Key velocity driver
▸ Getting closer to “business value” / “English”
▸ Majority of time and cost is in Maintenance + Day 2
▸ Cost directly proportional to number of moving pieces /
LOC
▸ Average developer job length - ~2 years
DEVELOPER WASTE
▸ Eliminate Waste
▸ Time spent on non-value add items, is NOT spent on actual
business value
▸ Everything is a Trade-Off
▸ Hardware Costs (↓) vs Human Costs (↑)
▸ Flexibility is a Cost ! Change is Certain
▸ Reduce Cycle Time , MVP, YAGNI
DEVELOPER DECISIONS
▸ Leverage Industry Lessons
▸ What are Startups doing ?
▸ What are the Giants doing?**
▸ Proven tech instead of DIY
▸ Market Trends / Hiring
▸ StackOverflow / Google Trends
▸ Transparency around the Cons / Costs
▸ Include Alternatives!
** Keep in mind you’re NOT operating NetFlix scale!!
CONSTRUCTOR DEPENDENCY INJECTION
▸ Alternatives:
▸ Setter or Field
▸ @Required annotation
▸ More Readable ? Better for Testing?
▸ Less Error-Prone ?
▸ Just Stay Consistent !
▸ Stop Bike Shedding !!
EASY HARD
TRIVIAL
CONSEQUENTIAL
BIKE-SHEDDING
? ?
Modern day jvm controversies
SCALA
▸ More succinct then Java, focus on performance
▸ Steep Learning Curve / High Investment
▸ Non-Standard Stack (SBT, Akka, Actors, Play, etc)
▸ IDE Support / Backwards Compatibility Issues
▸ Questionable MarketTrend
▸ Questionable Performance
▸ Justify with real Metrics
Modern day jvm controversies
KOTLIN
▸ More succinct then Java, focus on developer productivity
▸ True Null-Safety (not Optional!)
▸ Low Learning Curve / Low Investment
▸ Works well with Java EcoSystem
▸ Great IDE Support! Backwards Compatibility !
▸ Positive Developer Productivity Improvements
▸ Positive MarketTrend
▸ Question of Political Capital .. (Esperanto)
DYNAMIC TYPING
▸ Less Code
▸ Not being forced to define full contract (JSON, XML, REST, DB, etc)
▸ SOAP (WSDL) -> REST -> Spring Cloud Contracts
▸ Checked vs Runtime Exceptions
▸ More Error-Prone
▸ Testing was suppose to negate this
▸ Alternatives exist:
▸ XPath, Optional Typing, etc
▸ Upfront Velocity Improvement , Long Term Maintenance Costs
▸ Minimize for Corporate
.NET (C#)
▸ More succinct code (historically)
▸ Lacking ecosystem (historically)
▸ Windows, IIS, Visual Studio, NuGet, OSS Support, Costs!
▸ Still Lagging with Cloud-Native
▸ Would a startup use .NET?
▸ StackOverflow aside!
▸ CEO Friday: Why we don’t hire .NET programmers
▸ Dependant on current developers / code / and market
PAIR PROGRAMMING
▸ Costs:
▸ Developers don’t type twice as fast with someone sitting beside them
▸ Design by Consensus
▸ Mitigates:
▸ Ivory Towers
▸ Knowledge Silos / Information Hoarding
▸ The Elephant in the Room :
▸ Highly Focused Development / Minimized Distractions
▸ Healthy Competition
▸ Give it a try !!
▸ Mandate helps
AUTOMATED TESTS
▸ Granular mock heavy Unit Tests, and BDD style (Cucumber Tests)
▸ Costs (often ignored!)
▸ Refactoring Costs / Avoidance
▸ Testing Plumbing instead of Business Value
▸ Additional Layers (BBD Cucumber)
▸ Alternatives Exist:
▸ Smoke Tests / Integration Tests
▸ Monitoring / Alerting
▸ What about TDD?
▸ Focus on ROI + delete Questionable Tests
Modern day jvm controversies
Modern day jvm controversies
COMMON CODE BASES
▸ Internal Frameworks, ORM’s, Platforms, Testing Libs, Common-Libs, etc
▸ Costs:
▸ Learning Curves for Developers
▸ Dependency on Current developers
▸ Not writing actual business value!
▸ Maintenance Costs
▸ Multiple Repos / Artifactory / CI requirements complexities
▸ Alternatives:
▸ Embed in Application (first 3 times)
▸ Use 3rd Party (often OSS) solutions, which will almost always be better documented / supported
GRADLE
▸ Benefits:
▸ Easier to Read (no XML), Less LOC
▸ Easier to Extend (instead of Bash scripts!)
▸ Significant Build Time Improvements! (X factor)
▸ Comes down to Political Capital
MULTIPLE SOURCE CODE REPOSITORIES
▸ For Same Team and Same Deliverable
▸ Costs:
▸ Lack of Atomicity between commits
▸ CI/CD overhead
▸ Local Development costs
▸ Would would Jesus Google do ?
MICROSERVICES
▸ Tackles challenges of Monoliths (especially large size ones)
▸ Costs (almost always ignored!)
▸ Performance, DevOps, Transactions, Versioning, Resource Costs, etc
▸ “You must be this tall to use”
▸ Alternatives Exist:
▸ Cookie Cutter Scaling (Easier Scaling!!)
▸ “Decouple” at Project Level
▸ Address fundamental issues first !
▸ Monoliths are not EVIL! - Can scale and cleanly separate / decouple code !
▸ Default to Pizza-Team Sized Services - “Right-Sized Services”
KUBERNETES (CAAS)
▸ Comparing to IaaS or PaaS?
▸ Higher Level of Abstraction then IaaS
▸ Orchestration, OS Abstraction, Availability
▸ Lower Level of Abstraction then PaaS
▸ Networking, Buildpacks, Pods, Docker Files, etc
▸ Stick to the Highest Possible Level of Abstraction
REACTIVE PROGRAMMING (WEBFLUX)
▸ “Non-blocking” stack to minimize thread usage and scale better (i.e. Performance Optimization)
▸ Costs
▸ Steep Learning Curve / Legibility / Testing
▸ Concurrency Performance Gains
▸ High Count (1000+) (↑) , Low Count (↓ ?)
▸ Limited Support (Database / FrontEnd)
▸ Positive MarketTrend
▸ Threads are NOT bad !!
▸ Consider the Trade-offs / you can mix and match (with Spring-MVC)
CONCURRENT REST CALLS EXAMPLE
Modern day jvm controversies
BUZZWORD POT-POURRI
▸ MicroServices
▸ Reactive + Non-Blocking
▸ NoSQL + CQRS + Event Sourcing
▸ Scala + Akka
▸ A “Manifesto” for good measure
LAGOM
▸ New Reactive Microservices Framework
▸ From Typesafe Lightbend
▸ Steep Learning Curve!
▸ Significant Risk + Cost !
▸ Unproven buzzword’y benefits
OTHER ITEMS OF CONTROVERSY
▸ Tabs vs Spaces
▸ EJBS’s
▸ IntelliJ vs Eclipse vs NetBeans
▸ Optionals
▸ Server Side vs Client Side (SPA)
▸ ReactJS vs Angular
▸ 10x Developers
▸ OOP vs Functional vs Procedural
▸ Branching
▸ CPU / Thread Optimization
▸ Immutable Types + “final” on everything
▸ Theory of Constraints
▸ …
KEY POINTS
▸ Think Big Picture + Context
▸ .. instead of Tech X Sucks / is Bad / etc
▸ Rules are great for beginners (pick the right ones!)
▸ Focus on ROI
▸ Trade-offs / Opportunity Costs
▸ Fundamentals
▸ Maintenance Costs (minimize Snowflakes)
▸ Metrics (instead of assumptions) to drive non-standard choices
▸ What’s your Developer “Identity”?
▸ Technologies come and go!
▸ Default to Simplicity instead of Rube-Goldberg Machines
BOOK RECOMMENDATIONS
DUNNING KRUGER EFFECT + IMPOSTER SYNDROME
Actual Ability
PerceivedAbility
Dunning Kruger Effect / Expert Beginner
Imposter Syndrome
Ad

More Related Content

Similar to Modern day jvm controversies (20)

Refactoring: the good, the bad and the ugly.
Refactoring: the good, the bad and the ugly.Refactoring: the good, the bad and the ugly.
Refactoring: the good, the bad and the ugly.
Jeroen Thora
 
The Best Feature of Go – A 5 Year Retrospective
The Best Feature of Go – A 5 Year RetrospectiveThe Best Feature of Go – A 5 Year Retrospective
The Best Feature of Go – A 5 Year Retrospective
Tahir Hashmi
 
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
ChrisJohnsonBidler
 
Page Performance
Page PerformancePage Performance
Page Performance
stk_jj
 
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS Chicago
 
War between Tools and Design 2016
War between Tools and Design 2016War between Tools and Design 2016
War between Tools and Design 2016
Mark Windholtz
 
Devops (start walking in the same direction) by ops
Devops (start walking in the same direction) by opsDevops (start walking in the same direction) by ops
Devops (start walking in the same direction) by ops
Demis Rizzotto
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
Bilgin Ibryam
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos Engineering
Diego Pacheco
 
A real-life account of moving 100% to a public cloud
A real-life account of moving 100% to a public cloudA real-life account of moving 100% to a public cloud
A real-life account of moving 100% to a public cloud
Julien SIMON
 
Making software maintainable
Making software maintainableMaking software maintainable
Making software maintainable
Peter Sumskas
 
Human scaling on the front end
Human scaling on the front endHuman scaling on the front end
Human scaling on the front end
Rudy Rigot
 
Migratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with NomadMigratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with Nomad
Philip Watts
 
A Java Developers first Clojure project
A Java Developers first Clojure projectA Java Developers first Clojure project
A Java Developers first Clojure project
Craig Malone
 
The road to continuous deployment: a case study (DPC16)
The road to continuous deployment: a case study (DPC16)The road to continuous deployment: a case study (DPC16)
The road to continuous deployment: a case study (DPC16)
Michiel Rook
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
VictorSzoltysek
 
Herding cats in the Cloud
Herding cats in the CloudHerding cats in the Cloud
Herding cats in the Cloud
Dewey Sasser
 
Migratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with NomadMigratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with Nomad
REAN Cloud
 
To AWS with Ansible
To AWS with AnsibleTo AWS with Ansible
To AWS with Ansible
☁️ Gerben Geijteman
 
Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys! Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys!
stevesloka
 
Refactoring: the good, the bad and the ugly.
Refactoring: the good, the bad and the ugly.Refactoring: the good, the bad and the ugly.
Refactoring: the good, the bad and the ugly.
Jeroen Thora
 
The Best Feature of Go – A 5 Year Retrospective
The Best Feature of Go – A 5 Year RetrospectiveThe Best Feature of Go – A 5 Year Retrospective
The Best Feature of Go – A 5 Year Retrospective
Tahir Hashmi
 
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
Serverless Chicago - Datomic Cloud and AWS AppSync - April 26 2018
ChrisJohnsonBidler
 
Page Performance
Page PerformancePage Performance
Page Performance
stk_jj
 
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS user group Serverless in September - Chris Johnson Bidler "Go Serverless ...
AWS Chicago
 
War between Tools and Design 2016
War between Tools and Design 2016War between Tools and Design 2016
War between Tools and Design 2016
Mark Windholtz
 
Devops (start walking in the same direction) by ops
Devops (start walking in the same direction) by opsDevops (start walking in the same direction) by ops
Devops (start walking in the same direction) by ops
Demis Rizzotto
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
Bilgin Ibryam
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos Engineering
Diego Pacheco
 
A real-life account of moving 100% to a public cloud
A real-life account of moving 100% to a public cloudA real-life account of moving 100% to a public cloud
A real-life account of moving 100% to a public cloud
Julien SIMON
 
Making software maintainable
Making software maintainableMaking software maintainable
Making software maintainable
Peter Sumskas
 
Human scaling on the front end
Human scaling on the front endHuman scaling on the front end
Human scaling on the front end
Rudy Rigot
 
Migratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with NomadMigratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with Nomad
Philip Watts
 
A Java Developers first Clojure project
A Java Developers first Clojure projectA Java Developers first Clojure project
A Java Developers first Clojure project
Craig Malone
 
The road to continuous deployment: a case study (DPC16)
The road to continuous deployment: a case study (DPC16)The road to continuous deployment: a case study (DPC16)
The road to continuous deployment: a case study (DPC16)
Michiel Rook
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
VictorSzoltysek
 
Herding cats in the Cloud
Herding cats in the CloudHerding cats in the Cloud
Herding cats in the Cloud
Dewey Sasser
 
Migratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with NomadMigratory Workloads Across Clouds with Nomad
Migratory Workloads Across Clouds with Nomad
REAN Cloud
 
Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys! Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys!
stevesloka
 

More from VictorSzoltysek (20)

The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
VictorSzoltysek
 
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No KubernetesJava on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
VictorSzoltysek
 
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
VictorSzoltysek
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
VictorSzoltysek
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
VictorSzoltysek
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
VictorSzoltysek
 
From SpaceX Launch Pads to Rapid Deployments
From SpaceX Launch Pads to Rapid DeploymentsFrom SpaceX Launch Pads to Rapid Deployments
From SpaceX Launch Pads to Rapid Deployments
VictorSzoltysek
 
The Future of JVM Languages
The Future of JVM Languages The Future of JVM Languages
The Future of JVM Languages
VictorSzoltysek
 
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
VictorSzoltysek
 
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
Spaceships, Pull Requests and Feature Branching  - A Principles-Based approac...Spaceships, Pull Requests and Feature Branching  - A Principles-Based approac...
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
VictorSzoltysek
 
Real-World Application Observability - 11 Practical Developer Focused Tips
Real-World Application Observability - 11 Practical Developer Focused TipsReal-World Application Observability - 11 Practical Developer Focused Tips
Real-World Application Observability - 11 Practical Developer Focused Tips
VictorSzoltysek
 
Victor's Awesome Retro Deck
Victor's Awesome Retro DeckVictor's Awesome Retro Deck
Victor's Awesome Retro Deck
VictorSzoltysek
 
Software Development in Internet Memes
Software Development in Internet MemesSoftware Development in Internet Memes
Software Development in Internet Memes
VictorSzoltysek
 
Big Bangs, Monorails and Microservices - Feb 2020
Big Bangs, Monorails and Microservices - Feb 2020Big Bangs, Monorails and Microservices - Feb 2020
Big Bangs, Monorails and Microservices - Feb 2020
VictorSzoltysek
 
Making your RDBMS fast!
Making your RDBMS fast! Making your RDBMS fast!
Making your RDBMS fast!
VictorSzoltysek
 
SQL Tips + Tricks for Developers
SQL Tips + Tricks for DevelopersSQL Tips + Tricks for Developers
SQL Tips + Tricks for Developers
VictorSzoltysek
 
Less is more the 7 wastes of lean software development
Less is more   the 7 wastes of lean software developmentLess is more   the 7 wastes of lean software development
Less is more the 7 wastes of lean software development
VictorSzoltysek
 
The Future of Java - and a look at the evolution of programming languages
The Future of Java - and a look at the evolution of programming languagesThe Future of Java - and a look at the evolution of programming languages
The Future of Java - and a look at the evolution of programming languages
VictorSzoltysek
 
Client Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future ReplacementClient Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future Replacement
VictorSzoltysek
 
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
VictorSzoltysek
 
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No KubernetesJava on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
VictorSzoltysek
 
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
VictorSzoltysek
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
VictorSzoltysek
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
VictorSzoltysek
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
VictorSzoltysek
 
From SpaceX Launch Pads to Rapid Deployments
From SpaceX Launch Pads to Rapid DeploymentsFrom SpaceX Launch Pads to Rapid Deployments
From SpaceX Launch Pads to Rapid Deployments
VictorSzoltysek
 
The Future of JVM Languages
The Future of JVM Languages The Future of JVM Languages
The Future of JVM Languages
VictorSzoltysek
 
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
VictorSzoltysek
 
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
Spaceships, Pull Requests and Feature Branching  - A Principles-Based approac...Spaceships, Pull Requests and Feature Branching  - A Principles-Based approac...
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
VictorSzoltysek
 
Real-World Application Observability - 11 Practical Developer Focused Tips
Real-World Application Observability - 11 Practical Developer Focused TipsReal-World Application Observability - 11 Practical Developer Focused Tips
Real-World Application Observability - 11 Practical Developer Focused Tips
VictorSzoltysek
 
Victor's Awesome Retro Deck
Victor's Awesome Retro DeckVictor's Awesome Retro Deck
Victor's Awesome Retro Deck
VictorSzoltysek
 
Software Development in Internet Memes
Software Development in Internet MemesSoftware Development in Internet Memes
Software Development in Internet Memes
VictorSzoltysek
 
Big Bangs, Monorails and Microservices - Feb 2020
Big Bangs, Monorails and Microservices - Feb 2020Big Bangs, Monorails and Microservices - Feb 2020
Big Bangs, Monorails and Microservices - Feb 2020
VictorSzoltysek
 
Making your RDBMS fast!
Making your RDBMS fast! Making your RDBMS fast!
Making your RDBMS fast!
VictorSzoltysek
 
SQL Tips + Tricks for Developers
SQL Tips + Tricks for DevelopersSQL Tips + Tricks for Developers
SQL Tips + Tricks for Developers
VictorSzoltysek
 
Less is more the 7 wastes of lean software development
Less is more   the 7 wastes of lean software developmentLess is more   the 7 wastes of lean software development
Less is more the 7 wastes of lean software development
VictorSzoltysek
 
The Future of Java - and a look at the evolution of programming languages
The Future of Java - and a look at the evolution of programming languagesThe Future of Java - and a look at the evolution of programming languages
The Future of Java - and a look at the evolution of programming languages
VictorSzoltysek
 
Client Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future ReplacementClient Technical Analysis of Legacy Software and Future Replacement
Client Technical Analysis of Legacy Software and Future Replacement
VictorSzoltysek
 
Ad

Recently uploaded (20)

The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Ad

Modern day jvm controversies

  • 3. FLAME WAR STEPS ▸ The Talking Parrot Phase ▸ “It’s got Electrolytes” , “It’s Web-Scale” ▸ The Google Lookup Phase ▸ “X is better then Y” ▸ The Emotional Breakdown Phase ▸ “X sucks! , Y is evil!” , name calling … ▸ .. if you’re lucky “Goodwin’s Law”
  • 5. LEVEL SET ▸ Economics 101 ▸ Needs are infinite, resources are finite ▸ Probability 101 ▸ Rule-of-Thumb, “In general,” , sensible defaults ▸ Human Nature 101 ▸ Self-Interest / Identity ▸ Biases / Shiny-Objects ▸ Rules based -> Big Picture (Dreyfus Model)
  • 6. DREYFUS MODEL OF SKILL ACQUISITION Novice Begineer Competent Proficient Expert Rigid Adherence to Rules Holistic Picture
  • 7. DEVELOPER PRODUCTIVITY ▸ Higher-Level Trend ▸ Key velocity driver ▸ Getting closer to “business value” / “English” ▸ Majority of time and cost is in Maintenance + Day 2 ▸ Cost directly proportional to number of moving pieces / LOC ▸ Average developer job length - ~2 years
  • 8. DEVELOPER WASTE ▸ Eliminate Waste ▸ Time spent on non-value add items, is NOT spent on actual business value ▸ Everything is a Trade-Off ▸ Hardware Costs (↓) vs Human Costs (↑) ▸ Flexibility is a Cost ! Change is Certain ▸ Reduce Cycle Time , MVP, YAGNI
  • 9. DEVELOPER DECISIONS ▸ Leverage Industry Lessons ▸ What are Startups doing ? ▸ What are the Giants doing?** ▸ Proven tech instead of DIY ▸ Market Trends / Hiring ▸ StackOverflow / Google Trends ▸ Transparency around the Cons / Costs ▸ Include Alternatives! ** Keep in mind you’re NOT operating NetFlix scale!!
  • 10. CONSTRUCTOR DEPENDENCY INJECTION ▸ Alternatives: ▸ Setter or Field ▸ @Required annotation ▸ More Readable ? Better for Testing? ▸ Less Error-Prone ? ▸ Just Stay Consistent ! ▸ Stop Bike Shedding !!
  • 13. SCALA ▸ More succinct then Java, focus on performance ▸ Steep Learning Curve / High Investment ▸ Non-Standard Stack (SBT, Akka, Actors, Play, etc) ▸ IDE Support / Backwards Compatibility Issues ▸ Questionable MarketTrend ▸ Questionable Performance ▸ Justify with real Metrics
  • 15. KOTLIN ▸ More succinct then Java, focus on developer productivity ▸ True Null-Safety (not Optional!) ▸ Low Learning Curve / Low Investment ▸ Works well with Java EcoSystem ▸ Great IDE Support! Backwards Compatibility ! ▸ Positive Developer Productivity Improvements ▸ Positive MarketTrend ▸ Question of Political Capital .. (Esperanto)
  • 16. DYNAMIC TYPING ▸ Less Code ▸ Not being forced to define full contract (JSON, XML, REST, DB, etc) ▸ SOAP (WSDL) -> REST -> Spring Cloud Contracts ▸ Checked vs Runtime Exceptions ▸ More Error-Prone ▸ Testing was suppose to negate this ▸ Alternatives exist: ▸ XPath, Optional Typing, etc ▸ Upfront Velocity Improvement , Long Term Maintenance Costs ▸ Minimize for Corporate
  • 17. .NET (C#) ▸ More succinct code (historically) ▸ Lacking ecosystem (historically) ▸ Windows, IIS, Visual Studio, NuGet, OSS Support, Costs! ▸ Still Lagging with Cloud-Native ▸ Would a startup use .NET? ▸ StackOverflow aside! ▸ CEO Friday: Why we don’t hire .NET programmers ▸ Dependant on current developers / code / and market
  • 18. PAIR PROGRAMMING ▸ Costs: ▸ Developers don’t type twice as fast with someone sitting beside them ▸ Design by Consensus ▸ Mitigates: ▸ Ivory Towers ▸ Knowledge Silos / Information Hoarding ▸ The Elephant in the Room : ▸ Highly Focused Development / Minimized Distractions ▸ Healthy Competition ▸ Give it a try !! ▸ Mandate helps
  • 19. AUTOMATED TESTS ▸ Granular mock heavy Unit Tests, and BDD style (Cucumber Tests) ▸ Costs (often ignored!) ▸ Refactoring Costs / Avoidance ▸ Testing Plumbing instead of Business Value ▸ Additional Layers (BBD Cucumber) ▸ Alternatives Exist: ▸ Smoke Tests / Integration Tests ▸ Monitoring / Alerting ▸ What about TDD? ▸ Focus on ROI + delete Questionable Tests
  • 22. COMMON CODE BASES ▸ Internal Frameworks, ORM’s, Platforms, Testing Libs, Common-Libs, etc ▸ Costs: ▸ Learning Curves for Developers ▸ Dependency on Current developers ▸ Not writing actual business value! ▸ Maintenance Costs ▸ Multiple Repos / Artifactory / CI requirements complexities ▸ Alternatives: ▸ Embed in Application (first 3 times) ▸ Use 3rd Party (often OSS) solutions, which will almost always be better documented / supported
  • 23. GRADLE ▸ Benefits: ▸ Easier to Read (no XML), Less LOC ▸ Easier to Extend (instead of Bash scripts!) ▸ Significant Build Time Improvements! (X factor) ▸ Comes down to Political Capital
  • 24. MULTIPLE SOURCE CODE REPOSITORIES ▸ For Same Team and Same Deliverable ▸ Costs: ▸ Lack of Atomicity between commits ▸ CI/CD overhead ▸ Local Development costs ▸ Would would Jesus Google do ?
  • 25. MICROSERVICES ▸ Tackles challenges of Monoliths (especially large size ones) ▸ Costs (almost always ignored!) ▸ Performance, DevOps, Transactions, Versioning, Resource Costs, etc ▸ “You must be this tall to use” ▸ Alternatives Exist: ▸ Cookie Cutter Scaling (Easier Scaling!!) ▸ “Decouple” at Project Level ▸ Address fundamental issues first ! ▸ Monoliths are not EVIL! - Can scale and cleanly separate / decouple code ! ▸ Default to Pizza-Team Sized Services - “Right-Sized Services”
  • 26. KUBERNETES (CAAS) ▸ Comparing to IaaS or PaaS? ▸ Higher Level of Abstraction then IaaS ▸ Orchestration, OS Abstraction, Availability ▸ Lower Level of Abstraction then PaaS ▸ Networking, Buildpacks, Pods, Docker Files, etc ▸ Stick to the Highest Possible Level of Abstraction
  • 27. REACTIVE PROGRAMMING (WEBFLUX) ▸ “Non-blocking” stack to minimize thread usage and scale better (i.e. Performance Optimization) ▸ Costs ▸ Steep Learning Curve / Legibility / Testing ▸ Concurrency Performance Gains ▸ High Count (1000+) (↑) , Low Count (↓ ?) ▸ Limited Support (Database / FrontEnd) ▸ Positive MarketTrend ▸ Threads are NOT bad !! ▸ Consider the Trade-offs / you can mix and match (with Spring-MVC)
  • 30. BUZZWORD POT-POURRI ▸ MicroServices ▸ Reactive + Non-Blocking ▸ NoSQL + CQRS + Event Sourcing ▸ Scala + Akka ▸ A “Manifesto” for good measure
  • 31. LAGOM ▸ New Reactive Microservices Framework ▸ From Typesafe Lightbend ▸ Steep Learning Curve! ▸ Significant Risk + Cost ! ▸ Unproven buzzword’y benefits
  • 32. OTHER ITEMS OF CONTROVERSY ▸ Tabs vs Spaces ▸ EJBS’s ▸ IntelliJ vs Eclipse vs NetBeans ▸ Optionals ▸ Server Side vs Client Side (SPA) ▸ ReactJS vs Angular ▸ 10x Developers ▸ OOP vs Functional vs Procedural ▸ Branching ▸ CPU / Thread Optimization ▸ Immutable Types + “final” on everything ▸ Theory of Constraints ▸ …
  • 33. KEY POINTS ▸ Think Big Picture + Context ▸ .. instead of Tech X Sucks / is Bad / etc ▸ Rules are great for beginners (pick the right ones!) ▸ Focus on ROI ▸ Trade-offs / Opportunity Costs ▸ Fundamentals ▸ Maintenance Costs (minimize Snowflakes) ▸ Metrics (instead of assumptions) to drive non-standard choices ▸ What’s your Developer “Identity”? ▸ Technologies come and go! ▸ Default to Simplicity instead of Rube-Goldberg Machines
  • 35. DUNNING KRUGER EFFECT + IMPOSTER SYNDROME Actual Ability PerceivedAbility Dunning Kruger Effect / Expert Beginner Imposter Syndrome