SlideShare a Scribd company logo
1 of 58
CARGO CULTING
AND MEMES IN
FORGET EVERYTHING YOU THOUGHT YOU KNEW
ME, MYSELF AND I
13 years consulting
Wide range of
businesses &
customers
blog.frankel.ch &
morevaadin.com
2
@nicolas_frankel
ALSO AN AUTHOR
https://leanpub.com/integrationtest/
3
@nicolas_frankel
MY JOB
hybris:
oE-commerce product
4
@nicolas_frankel
CARGO CULTING VS MEMES
http://www.freedigitalphotos.net/images/athletes-at-starting-line-on-race-track-photo-p215478
5
@nicolas_frankel
CARGO CULTING
• Reproducing outer form
in order to get some
benefits regardless of
contexts
http://en.wikipedia.org/wiki/File:JohnFrumCrossTanna1967.jpg
6
@nicolas_frankel
MEMES
• Widespread ideas
• With no (or shallow)
scientific proof behind
7
@nicolas_frankel
DISCLAIMER
“All characters
appearing in this
work are fictitious.
Any resemblance to
real persons, living or
dead, is purely
coincidental.”
http://en.wikipedia.org/wiki/File:Morgan_County_-_Mann_road_-_horse_mannequin_-_P1080692.jpg
8
@nicolas_frankel
DO NOT BELIEVE ME!
You are not getting
sleepy!
I do not want to
spread more cargo
culting & memes
oTry…
http://en.wikipedia.org/wiki/File:Caf%C3%A9_wall.svg
9
@nicolas_frankel
CARGO CULTING
Imagine living on a
paradise island
Free from daily world
contingencies
10
@nicolas_frankel
Then come some
white people in birds
of steel
They build some
stuff, and bigger
birds of steel
come, with bunches
of people inside
11
@nicolas_frankel
And the birds of steel
have plenty of good
food inside
With no need to go
fishing…
http://en.wikipedia.org/wiki/File:FishingVillage_HaLongBay_Vietnam_%28pixinn.net%29.jpg
12
@nicolas_frankel
When they all go
away, what’s the
smart thing to do:
oGo fishing again?
oOr build the same stuff
and hope to attract
more birds of steel?
Very crude summary
of Cargo Culting
during WWII (in the
Pacific)
http://en.wikipedia.org/wiki/File:JohnFrumCrossTanna1967.jpg
13
@nicolas_frankel
THE DEVIL IS IN THE DETAIL
Once upon a
time, there was a
young developer
He started using Java
1.3
And was taught that
local variable
declaration was
heavy on
performance
http://bit.ly/NOv2cq
14
@nicolas_frankel
Some years later, he
became an « expert »
And wrote some good
practices guidelines
Including declaring
local variables
outside loops
int nb = 0;
for (int i = 0;
i<n; i++) {
...
}
15
@nicolas_frankel
He was very happy
And all developers
happily followed his
rules
16
@nicolas_frankel
Until… a new
developer came in
town
And threw the
gauntlet by claiming:
« You shall declare your
variables in the narrowest
scope possible »
This meant inside the
loop
17
@nicolas_frankel
The « expert »
accepted the challenge
And coded a small
snippet to assert his
claims
It failed miserably…
JDK 1.4 was smart
enough to produce the
exact same bytecode
regardless where the
variable was declared
18
@nicolas_frankel
The « expert » was
sorely disappointed
But realized a very
important fact
« There’s no
universal truth, it all
depends on the
context »
19
@nicolas_frankel
Also applies to:
oFood
oReligion
oSports
oYou name it
http://en.wikipedia.org/wiki/File:Shunsuke1_20080622.jpg
20
@nicolas_frankel
FACTS
At this time, I don’t
know if that was ever
true
oI suppose it was
I found nothing
supporting this (or
the opposite) on the
Internet
oDownloading and
installing Java 1.3 sucks
21
@nicolas_frankel
DATA TRANSFER OBJECT
Once upon a
time, there was
platform called J2EE
Which provided a
bunch of API
22
@nicolas_frankel
EJB Entity - a real
heavyweight
object, was bound to
the container
So Sun crafted a
magical artifact, the
DTO
To allow for data to
go outside the
container
23
@nicolas_frankel
The birth of EJB 3
brought a new
Golden Age
And freed people of
the tyranny of the
EJB Container
Sadly, many
developers still flock
to the banner of the
DTO
24
@nicolas_frankel
ALTERNATIVES
1. When no association
required
oUse the entity directly
2. Use eager associations
3. Use the
OpenSessionInView
filter
o…
4. Call getters to force load
5. Use JOIN FETCH
http://en.wikipedia.org/wiki/File:The_A34,_Donnington.jpg
25
@nicolas_frankel
XML IS BAD
10 years ago, it was
all XML
oCan be validated against
a schema
XML became evil with
the coming of
annotations in Java 5
http://en.wikipedia.org/wiki/File:XML.svg
26
@nicolas_frankel
CRITICS AGAINST XML
Verbose
Are not compiled
oErrors (beyond
grammar) are
discovered at runtime
27
@nicolas_frankel
SELF-ANNOTATED CLASSES
@Service
@Scope("prototype")
public class MyBean {
@Autowired
private MyRepository myRepo;
...
}
28
@nicolas_frankel
Pros Cons
Everything in the same place Couples code to Spring
Compiled Prevents reusability
Allows bad design
29
@nicolas_frankel
ALTERNATIVES
XML
JavaConfig
oCompiled
oWith no con of self-
annotated classes
30
@nicolas_frankel
JAVACONFIG EXAMPLE
@Configuration
public class JavaConfig {
@Bean(scope=PROTOTYPE)
public class myBean() {
return new MyBean(myRepo());
}
@Bean
public class myRepo() {
return new MyRepository();
}
}
31
@nicolas_frankel
RELATED TO CARGO CULTING
Copy-Paste Driven
Programming
Reverse Cargo
Culting:
oForget the form because
the context is different
http://en.wikipedia.org/wiki/File:Da_Vinci_Vitruve_Luc_Viatour.jpg
32
@nicolas_frankel
SPOTTING CARGO CULTING
“We’ve always done
like that”
“It’s always been
working”
33
@nicolas_frankel
HOW NOT TO CARGO CULT
Question reasons
behind decisions
You cannot always be
up-to-date
oListen to others and
their arguments
oAdmit you’re wrong
(when you are)
Yes, it’s hard and
time-consuming!
34
@nicolas_frankel
MEMES
Cargo Culting can be
remedied if the cultist
is rational and willing
to listen
Memes are way more
pervasive
Based on faith
And you never can
convince a faithful to
renounce his faith
oOnly if he’s not a true
faithful
35
@nicolas_frankel
MY ILLUMINATION
The Leprechauns of
Software Engineering
https://leanpub.com/leprechauns
36
@nicolas_frankel
THE 10X PRODUCTIVITY RULE
“A good programmer
can be as 10X times
more productive than
a mediocre one”
37
@nicolas_frankel
SACKMAN & AL. 1968
“exploratory experiments (...) to compare
debugging performances of programmers
working under conditions of online and
offline access to a computer”
Ratio of 28:1
oSubject 7 required 170 hours to program the
algebra program in a batch environment in
machine language
oSubject 3 required 6 hours to program the same
problem in ALGOL in a time-shared environment
38
@nicolas_frankel
Ref. Direct? Task
type
Sample
size
Pop. Measure Variation
Curtis 1981 N Debug 27 Pros Time-to-
compile
22:1
8:1
Mills 1983 Y ? ? ? ? 10:1
DeMarco &
Lister 1985
Y Program
to spec
166 Pros Time-to-
complete
5,6:1
Curtis & al.
1986
N N/A N/A N/A N/A Various
Card 1987 N Project ? Pros LOC per
staff hour
Not
claimed
Boehm &
Pappacio
1988
N N/A N/A N/A N/A Various
Valet &
McGarry
1989
N Project 150 Pros LOC per
staff hour
Not
claimed
Boehm
2000
Y Project 161
projects
Pros Manager’s
evaluation
Not
claimed
39
@nicolas_frankel
PRODUCTIVITY IN SOFTWARE
Which metrics?
oLOC?
oAny is trivial to game...
Which task?
oMust be the same in
order to compare
Which population?
oPros have other things
to do
40
@nicolas_frankel
MY EXPERIENCE
There’s a difference in
productivity
oBut I never could quantify
I can only say if one
developer is more
productive than
another in a specific
area
Software is a team
effort!
41
@nicolas_frankel
BUT REJOICE!
Other domains are
not free of memes
either
oProject Management
oGraphical Design
42
@nicolas_frankel
Source: http://www.peterbormer.com/
43
@nicolas_frankel
THE SOURCE OF “TRUTH”
Software Engineering Economics –
Boehm, 1981
Made famous in Rapid Development –
McConnell, 1996
44
@nicolas_frankel
It makes sense that
uncertainty decreases
with time passing...
Does it make sense
that:
oIt is symmetric?
oIt follows f(x) = -a/x?
45
@nicolas_frankel
MY EXPERIENCE
46
@nicolas_frankel
IMAGES ARE READ LTR
When I was younger (a long time
ago), I was told that images should be
designed to be read left-to-right
oAnd right-to-left for native Arab / Hebrew
speakers
47
@nicolas_frankel
Then came a device to follow eyes
movements
And they made an experience on the
TV
48
@nicolas_frankel
49
@nicolas_frankel
RELATED TO MEMES
“No True Scotsman”
Logical fallacy
Ideology
http://en.wikipedia.org/wiki/File:Bagpiper_in_Edinburgh_001.jpg
50
@nicolas_frankel
NO TRUE SCOTSMAN
“Scotsmen do not put
sugar on their porridge
- I’m a Scotsman and I
put sugar on my
porridge
- No true Scotsman
sugars his porridge”
https://yourlogicalfallacyis.com/
51
@nicolas_frankel
CODE IS SELF-DOCUMENTING
“Yet I cannot make this
code clear without
comments.
- Then it’s bad code!”
52
@nicolas_frankel
AGILE DELIVERS
“Yet my last Agile
project went wrong.
- Then it must not have
been truly Agile”
http://en.wikipedia.org/wiki/File:Pair_programming_1.jpg
53
@nicolas_frankel
IDEOLOGY
Memes and
ideologies are based
on faith
oMemes are largely
shared
oIdeologies are more
restricted
• Counter-ideologies
54
@nicolas_frankel
THIS IS CRAP
It’s not proper:
oObject-Oriented
Programming
oFunctional Programming
oYou name yours
http://en.wikipedia.org/wiki/File:Pet_Waste_Station.jpg
55
@nicolas_frankel
THOSE ARE WAYS!
My goal is to achieve
those properties:
oReadability
oTestability
oMaintainability
So long as I get
them, I don’t care
oBetter to have a unique
paradigm in an
application
56
@nicolas_frankel
SPOTTING MEMES
http://en.wikipedia.org/wiki/File:Foam_-_big.jpg
57
@nicolas_frankel
THANKS FOR YOUR INTEREST
58
@nicolas_frankel

More Related Content

Similar to 2014 JavaLand - Cargo culting and memes in JavaLand

The Biological Imperative for Intelligent Content
The Biological Imperative for Intelligent ContentThe Biological Imperative for Intelligent Content
The Biological Imperative for Intelligent ContentNoz Urbina
 
Impactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsImpactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsGail Murphy
 
Wicked Problems: The Black holes we're designing into our future tech
Wicked Problems: The Black holes we're designing into our future techWicked Problems: The Black holes we're designing into our future tech
Wicked Problems: The Black holes we're designing into our future techLola Oyelayo
 
Kim Solez DALL-E and Kidney Pathology Machine Fantasies Give Hint About What...
Kim Solez DALL-E  and Kidney Pathology Machine Fantasies Give Hint About What...Kim Solez DALL-E  and Kidney Pathology Machine Fantasies Give Hint About What...
Kim Solez DALL-E and Kidney Pathology Machine Fantasies Give Hint About What...Kim Solez ,
 
CityLIS talk, Feb 1st 2016
CityLIS talk, Feb 1st 2016CityLIS talk, Feb 1st 2016
CityLIS talk, Feb 1st 2016benosteen
 
The Power of the Junior
The Power of the JuniorThe Power of the Junior
The Power of the JuniorYves Hanoulle
 
Examples Of High School Essays. Essays high school - College Homework Help an...
Examples Of High School Essays. Essays high school - College Homework Help an...Examples Of High School Essays. Essays high school - College Homework Help an...
Examples Of High School Essays. Essays high school - College Homework Help an...Lisa Phon
 
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft "The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft Dataconomy Media
 
Scientific and Academic Research: A Survival Guide 
Scientific and Academic Research:  A Survival Guide Scientific and Academic Research:  A Survival Guide 
Scientific and Academic Research: A Survival Guide PayamBarnaghi
 
Web414 For April 2009.
Web414 For April 2009.Web414 For April 2009.
Web414 For April 2009.heygabe
 
Perrone crafting outstandingpresentationsstorytelling
Perrone crafting outstandingpresentationsstorytellingPerrone crafting outstandingpresentationsstorytelling
Perrone crafting outstandingpresentationsstorytellingTihamer
 
Artificial Intelligence and Intuition
Artificial  Intelligence  and  IntuitionArtificial  Intelligence  and  Intuition
Artificial Intelligence and IntuitionViktor Dörfler
 
Boring presentations by whatzyourpoint inc
Boring presentations by whatzyourpoint incBoring presentations by whatzyourpoint inc
Boring presentations by whatzyourpoint incLMI Academy
 

Similar to 2014 JavaLand - Cargo culting and memes in JavaLand (14)

The Biological Imperative for Intelligent Content
The Biological Imperative for Intelligent ContentThe Biological Imperative for Intelligent Content
The Biological Imperative for Intelligent Content
 
Los argumentos del ensayo academico
Los argumentos del ensayo academicoLos argumentos del ensayo academico
Los argumentos del ensayo academico
 
Impactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsImpactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'ts
 
Wicked Problems: The Black holes we're designing into our future tech
Wicked Problems: The Black holes we're designing into our future techWicked Problems: The Black holes we're designing into our future tech
Wicked Problems: The Black holes we're designing into our future tech
 
Kim Solez DALL-E and Kidney Pathology Machine Fantasies Give Hint About What...
Kim Solez DALL-E  and Kidney Pathology Machine Fantasies Give Hint About What...Kim Solez DALL-E  and Kidney Pathology Machine Fantasies Give Hint About What...
Kim Solez DALL-E and Kidney Pathology Machine Fantasies Give Hint About What...
 
CityLIS talk, Feb 1st 2016
CityLIS talk, Feb 1st 2016CityLIS talk, Feb 1st 2016
CityLIS talk, Feb 1st 2016
 
The Power of the Junior
The Power of the JuniorThe Power of the Junior
The Power of the Junior
 
Examples Of High School Essays. Essays high school - College Homework Help an...
Examples Of High School Essays. Essays high school - College Homework Help an...Examples Of High School Essays. Essays high school - College Homework Help an...
Examples Of High School Essays. Essays high school - College Homework Help an...
 
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft "The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft
"The Data Janitor 101", Daniel Molnar, Senior Data Scientist at Microsoft
 
Scientific and Academic Research: A Survival Guide 
Scientific and Academic Research:  A Survival Guide Scientific and Academic Research:  A Survival Guide 
Scientific and Academic Research: A Survival Guide 
 
Web414 For April 2009.
Web414 For April 2009.Web414 For April 2009.
Web414 For April 2009.
 
Perrone crafting outstandingpresentationsstorytelling
Perrone crafting outstandingpresentationsstorytellingPerrone crafting outstandingpresentationsstorytelling
Perrone crafting outstandingpresentationsstorytelling
 
Artificial Intelligence and Intuition
Artificial  Intelligence  and  IntuitionArtificial  Intelligence  and  Intuition
Artificial Intelligence and Intuition
 
Boring presentations by whatzyourpoint inc
Boring presentations by whatzyourpoint incBoring presentations by whatzyourpoint inc
Boring presentations by whatzyourpoint inc
 

More from Nicolas Fränkel

SnowCamp - Adding search to a legacy application
SnowCamp - Adding search to a legacy applicationSnowCamp - Adding search to a legacy application
SnowCamp - Adding search to a legacy applicationNicolas Fränkel
 
Un CV de dévelopeur toujours a jour
Un CV de dévelopeur toujours a jourUn CV de dévelopeur toujours a jour
Un CV de dévelopeur toujours a jourNicolas Fränkel
 
Zero-downtime deployment on Kubernetes with Hazelcast
Zero-downtime deployment on Kubernetes with HazelcastZero-downtime deployment on Kubernetes with Hazelcast
Zero-downtime deployment on Kubernetes with HazelcastNicolas Fränkel
 
jLove - A Change-Data-Capture use-case: designing an evergreen cache
jLove - A Change-Data-Capture use-case: designing an evergreen cachejLove - A Change-Data-Capture use-case: designing an evergreen cache
jLove - A Change-Data-Capture use-case: designing an evergreen cacheNicolas Fränkel
 
BigData conference - Introduction to stream processing
BigData conference - Introduction to stream processingBigData conference - Introduction to stream processing
BigData conference - Introduction to stream processingNicolas Fränkel
 
ADDO - Your own Kubernetes controller, not only in Go
ADDO - Your own Kubernetes controller, not only in GoADDO - Your own Kubernetes controller, not only in Go
ADDO - Your own Kubernetes controller, not only in GoNicolas Fränkel
 
TestCon Europe - Mutation Testing to the Rescue of Your Tests
TestCon Europe - Mutation Testing to the Rescue of Your TestsTestCon Europe - Mutation Testing to the Rescue of Your Tests
TestCon Europe - Mutation Testing to the Rescue of Your TestsNicolas Fränkel
 
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationOSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationNicolas Fränkel
 
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cacheGeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cacheNicolas Fränkel
 
JavaDay Istanbul - 3 improvements in your microservices architecture
JavaDay Istanbul - 3 improvements in your microservices architectureJavaDay Istanbul - 3 improvements in your microservices architecture
JavaDay Istanbul - 3 improvements in your microservices architecture Nicolas Fränkel
 
OSCONF Hyderabad - Shorten all URLs!
OSCONF Hyderabad - Shorten all URLs!OSCONF Hyderabad - Shorten all URLs!
OSCONF Hyderabad - Shorten all URLs!Nicolas Fränkel
 
Devclub.lv - Introduction to stream processing
Devclub.lv - Introduction to stream processingDevclub.lv - Introduction to stream processing
Devclub.lv - Introduction to stream processingNicolas Fränkel
 
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring BootOSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring BootNicolas Fränkel
 
JOnConf - A CDC use-case: designing an Evergreen Cache
JOnConf - A CDC use-case: designing an Evergreen CacheJOnConf - A CDC use-case: designing an Evergreen Cache
JOnConf - A CDC use-case: designing an Evergreen CacheNicolas Fränkel
 
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...Nicolas Fränkel
 
JUG Tirana - Introduction to data streaming
JUG Tirana - Introduction to data streamingJUG Tirana - Introduction to data streaming
JUG Tirana - Introduction to data streamingNicolas Fränkel
 
Java.IL - Your own Kubernetes controller, not only in Go!
Java.IL - Your own Kubernetes controller, not only in Go!Java.IL - Your own Kubernetes controller, not only in Go!
Java.IL - Your own Kubernetes controller, not only in Go!Nicolas Fränkel
 
vJUG - Introduction to data streaming
vJUG - Introduction to data streamingvJUG - Introduction to data streaming
vJUG - Introduction to data streamingNicolas Fränkel
 
London Java Community - An Experiment in Continuous Deployment of JVM applica...
London Java Community - An Experiment in Continuous Deployment of JVM applica...London Java Community - An Experiment in Continuous Deployment of JVM applica...
London Java Community - An Experiment in Continuous Deployment of JVM applica...Nicolas Fränkel
 
OSCONF - Your own Kubernetes controller: not only in Go
OSCONF - Your own Kubernetes controller: not only in GoOSCONF - Your own Kubernetes controller: not only in Go
OSCONF - Your own Kubernetes controller: not only in GoNicolas Fränkel
 

More from Nicolas Fränkel (20)

SnowCamp - Adding search to a legacy application
SnowCamp - Adding search to a legacy applicationSnowCamp - Adding search to a legacy application
SnowCamp - Adding search to a legacy application
 
Un CV de dévelopeur toujours a jour
Un CV de dévelopeur toujours a jourUn CV de dévelopeur toujours a jour
Un CV de dévelopeur toujours a jour
 
Zero-downtime deployment on Kubernetes with Hazelcast
Zero-downtime deployment on Kubernetes with HazelcastZero-downtime deployment on Kubernetes with Hazelcast
Zero-downtime deployment on Kubernetes with Hazelcast
 
jLove - A Change-Data-Capture use-case: designing an evergreen cache
jLove - A Change-Data-Capture use-case: designing an evergreen cachejLove - A Change-Data-Capture use-case: designing an evergreen cache
jLove - A Change-Data-Capture use-case: designing an evergreen cache
 
BigData conference - Introduction to stream processing
BigData conference - Introduction to stream processingBigData conference - Introduction to stream processing
BigData conference - Introduction to stream processing
 
ADDO - Your own Kubernetes controller, not only in Go
ADDO - Your own Kubernetes controller, not only in GoADDO - Your own Kubernetes controller, not only in Go
ADDO - Your own Kubernetes controller, not only in Go
 
TestCon Europe - Mutation Testing to the Rescue of Your Tests
TestCon Europe - Mutation Testing to the Rescue of Your TestsTestCon Europe - Mutation Testing to the Rescue of Your Tests
TestCon Europe - Mutation Testing to the Rescue of Your Tests
 
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationOSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
 
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cacheGeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
GeekcampSG 2020 - A Change-Data-Capture use-case: designing an evergreen cache
 
JavaDay Istanbul - 3 improvements in your microservices architecture
JavaDay Istanbul - 3 improvements in your microservices architectureJavaDay Istanbul - 3 improvements in your microservices architecture
JavaDay Istanbul - 3 improvements in your microservices architecture
 
OSCONF Hyderabad - Shorten all URLs!
OSCONF Hyderabad - Shorten all URLs!OSCONF Hyderabad - Shorten all URLs!
OSCONF Hyderabad - Shorten all URLs!
 
Devclub.lv - Introduction to stream processing
Devclub.lv - Introduction to stream processingDevclub.lv - Introduction to stream processing
Devclub.lv - Introduction to stream processing
 
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring BootOSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
OSCONF Koshi - Zero downtime deployment with Kubernetes, Flyway and Spring Boot
 
JOnConf - A CDC use-case: designing an Evergreen Cache
JOnConf - A CDC use-case: designing an Evergreen CacheJOnConf - A CDC use-case: designing an Evergreen Cache
JOnConf - A CDC use-case: designing an Evergreen Cache
 
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
London In-Memory Computing Meetup - A Change-Data-Capture use-case: designing...
 
JUG Tirana - Introduction to data streaming
JUG Tirana - Introduction to data streamingJUG Tirana - Introduction to data streaming
JUG Tirana - Introduction to data streaming
 
Java.IL - Your own Kubernetes controller, not only in Go!
Java.IL - Your own Kubernetes controller, not only in Go!Java.IL - Your own Kubernetes controller, not only in Go!
Java.IL - Your own Kubernetes controller, not only in Go!
 
vJUG - Introduction to data streaming
vJUG - Introduction to data streamingvJUG - Introduction to data streaming
vJUG - Introduction to data streaming
 
London Java Community - An Experiment in Continuous Deployment of JVM applica...
London Java Community - An Experiment in Continuous Deployment of JVM applica...London Java Community - An Experiment in Continuous Deployment of JVM applica...
London Java Community - An Experiment in Continuous Deployment of JVM applica...
 
OSCONF - Your own Kubernetes controller: not only in Go
OSCONF - Your own Kubernetes controller: not only in GoOSCONF - Your own Kubernetes controller: not only in Go
OSCONF - Your own Kubernetes controller: not only in Go
 

Recently uploaded

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
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
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...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
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 

Recently uploaded (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
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...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

2014 JavaLand - Cargo culting and memes in JavaLand

  • 1. CARGO CULTING AND MEMES IN FORGET EVERYTHING YOU THOUGHT YOU KNEW
  • 2. ME, MYSELF AND I 13 years consulting Wide range of businesses & customers blog.frankel.ch & morevaadin.com 2 @nicolas_frankel
  • 5. CARGO CULTING VS MEMES http://www.freedigitalphotos.net/images/athletes-at-starting-line-on-race-track-photo-p215478 5 @nicolas_frankel
  • 6. CARGO CULTING • Reproducing outer form in order to get some benefits regardless of contexts http://en.wikipedia.org/wiki/File:JohnFrumCrossTanna1967.jpg 6 @nicolas_frankel
  • 7. MEMES • Widespread ideas • With no (or shallow) scientific proof behind 7 @nicolas_frankel
  • 8. DISCLAIMER “All characters appearing in this work are fictitious. Any resemblance to real persons, living or dead, is purely coincidental.” http://en.wikipedia.org/wiki/File:Morgan_County_-_Mann_road_-_horse_mannequin_-_P1080692.jpg 8 @nicolas_frankel
  • 9. DO NOT BELIEVE ME! You are not getting sleepy! I do not want to spread more cargo culting & memes oTry… http://en.wikipedia.org/wiki/File:Caf%C3%A9_wall.svg 9 @nicolas_frankel
  • 10. CARGO CULTING Imagine living on a paradise island Free from daily world contingencies 10 @nicolas_frankel
  • 11. Then come some white people in birds of steel They build some stuff, and bigger birds of steel come, with bunches of people inside 11 @nicolas_frankel
  • 12. And the birds of steel have plenty of good food inside With no need to go fishing… http://en.wikipedia.org/wiki/File:FishingVillage_HaLongBay_Vietnam_%28pixinn.net%29.jpg 12 @nicolas_frankel
  • 13. When they all go away, what’s the smart thing to do: oGo fishing again? oOr build the same stuff and hope to attract more birds of steel? Very crude summary of Cargo Culting during WWII (in the Pacific) http://en.wikipedia.org/wiki/File:JohnFrumCrossTanna1967.jpg 13 @nicolas_frankel
  • 14. THE DEVIL IS IN THE DETAIL Once upon a time, there was a young developer He started using Java 1.3 And was taught that local variable declaration was heavy on performance http://bit.ly/NOv2cq 14 @nicolas_frankel
  • 15. Some years later, he became an « expert » And wrote some good practices guidelines Including declaring local variables outside loops int nb = 0; for (int i = 0; i<n; i++) { ... } 15 @nicolas_frankel
  • 16. He was very happy And all developers happily followed his rules 16 @nicolas_frankel
  • 17. Until… a new developer came in town And threw the gauntlet by claiming: « You shall declare your variables in the narrowest scope possible » This meant inside the loop 17 @nicolas_frankel
  • 18. The « expert » accepted the challenge And coded a small snippet to assert his claims It failed miserably… JDK 1.4 was smart enough to produce the exact same bytecode regardless where the variable was declared 18 @nicolas_frankel
  • 19. The « expert » was sorely disappointed But realized a very important fact « There’s no universal truth, it all depends on the context » 19 @nicolas_frankel
  • 20. Also applies to: oFood oReligion oSports oYou name it http://en.wikipedia.org/wiki/File:Shunsuke1_20080622.jpg 20 @nicolas_frankel
  • 21. FACTS At this time, I don’t know if that was ever true oI suppose it was I found nothing supporting this (or the opposite) on the Internet oDownloading and installing Java 1.3 sucks 21 @nicolas_frankel
  • 22. DATA TRANSFER OBJECT Once upon a time, there was platform called J2EE Which provided a bunch of API 22 @nicolas_frankel
  • 23. EJB Entity - a real heavyweight object, was bound to the container So Sun crafted a magical artifact, the DTO To allow for data to go outside the container 23 @nicolas_frankel
  • 24. The birth of EJB 3 brought a new Golden Age And freed people of the tyranny of the EJB Container Sadly, many developers still flock to the banner of the DTO 24 @nicolas_frankel
  • 25. ALTERNATIVES 1. When no association required oUse the entity directly 2. Use eager associations 3. Use the OpenSessionInView filter o… 4. Call getters to force load 5. Use JOIN FETCH http://en.wikipedia.org/wiki/File:The_A34,_Donnington.jpg 25 @nicolas_frankel
  • 26. XML IS BAD 10 years ago, it was all XML oCan be validated against a schema XML became evil with the coming of annotations in Java 5 http://en.wikipedia.org/wiki/File:XML.svg 26 @nicolas_frankel
  • 27. CRITICS AGAINST XML Verbose Are not compiled oErrors (beyond grammar) are discovered at runtime 27 @nicolas_frankel
  • 28. SELF-ANNOTATED CLASSES @Service @Scope("prototype") public class MyBean { @Autowired private MyRepository myRepo; ... } 28 @nicolas_frankel
  • 29. Pros Cons Everything in the same place Couples code to Spring Compiled Prevents reusability Allows bad design 29 @nicolas_frankel
  • 30. ALTERNATIVES XML JavaConfig oCompiled oWith no con of self- annotated classes 30 @nicolas_frankel
  • 31. JAVACONFIG EXAMPLE @Configuration public class JavaConfig { @Bean(scope=PROTOTYPE) public class myBean() { return new MyBean(myRepo()); } @Bean public class myRepo() { return new MyRepository(); } } 31 @nicolas_frankel
  • 32. RELATED TO CARGO CULTING Copy-Paste Driven Programming Reverse Cargo Culting: oForget the form because the context is different http://en.wikipedia.org/wiki/File:Da_Vinci_Vitruve_Luc_Viatour.jpg 32 @nicolas_frankel
  • 33. SPOTTING CARGO CULTING “We’ve always done like that” “It’s always been working” 33 @nicolas_frankel
  • 34. HOW NOT TO CARGO CULT Question reasons behind decisions You cannot always be up-to-date oListen to others and their arguments oAdmit you’re wrong (when you are) Yes, it’s hard and time-consuming! 34 @nicolas_frankel
  • 35. MEMES Cargo Culting can be remedied if the cultist is rational and willing to listen Memes are way more pervasive Based on faith And you never can convince a faithful to renounce his faith oOnly if he’s not a true faithful 35 @nicolas_frankel
  • 36. MY ILLUMINATION The Leprechauns of Software Engineering https://leanpub.com/leprechauns 36 @nicolas_frankel
  • 37. THE 10X PRODUCTIVITY RULE “A good programmer can be as 10X times more productive than a mediocre one” 37 @nicolas_frankel
  • 38. SACKMAN & AL. 1968 “exploratory experiments (...) to compare debugging performances of programmers working under conditions of online and offline access to a computer” Ratio of 28:1 oSubject 7 required 170 hours to program the algebra program in a batch environment in machine language oSubject 3 required 6 hours to program the same problem in ALGOL in a time-shared environment 38 @nicolas_frankel
  • 39. Ref. Direct? Task type Sample size Pop. Measure Variation Curtis 1981 N Debug 27 Pros Time-to- compile 22:1 8:1 Mills 1983 Y ? ? ? ? 10:1 DeMarco & Lister 1985 Y Program to spec 166 Pros Time-to- complete 5,6:1 Curtis & al. 1986 N N/A N/A N/A N/A Various Card 1987 N Project ? Pros LOC per staff hour Not claimed Boehm & Pappacio 1988 N N/A N/A N/A N/A Various Valet & McGarry 1989 N Project 150 Pros LOC per staff hour Not claimed Boehm 2000 Y Project 161 projects Pros Manager’s evaluation Not claimed 39 @nicolas_frankel
  • 40. PRODUCTIVITY IN SOFTWARE Which metrics? oLOC? oAny is trivial to game... Which task? oMust be the same in order to compare Which population? oPros have other things to do 40 @nicolas_frankel
  • 41. MY EXPERIENCE There’s a difference in productivity oBut I never could quantify I can only say if one developer is more productive than another in a specific area Software is a team effort! 41 @nicolas_frankel
  • 42. BUT REJOICE! Other domains are not free of memes either oProject Management oGraphical Design 42 @nicolas_frankel
  • 44. THE SOURCE OF “TRUTH” Software Engineering Economics – Boehm, 1981 Made famous in Rapid Development – McConnell, 1996 44 @nicolas_frankel
  • 45. It makes sense that uncertainty decreases with time passing... Does it make sense that: oIt is symmetric? oIt follows f(x) = -a/x? 45 @nicolas_frankel
  • 47. IMAGES ARE READ LTR When I was younger (a long time ago), I was told that images should be designed to be read left-to-right oAnd right-to-left for native Arab / Hebrew speakers 47 @nicolas_frankel
  • 48. Then came a device to follow eyes movements And they made an experience on the TV 48 @nicolas_frankel
  • 50. RELATED TO MEMES “No True Scotsman” Logical fallacy Ideology http://en.wikipedia.org/wiki/File:Bagpiper_in_Edinburgh_001.jpg 50 @nicolas_frankel
  • 51. NO TRUE SCOTSMAN “Scotsmen do not put sugar on their porridge - I’m a Scotsman and I put sugar on my porridge - No true Scotsman sugars his porridge” https://yourlogicalfallacyis.com/ 51 @nicolas_frankel
  • 52. CODE IS SELF-DOCUMENTING “Yet I cannot make this code clear without comments. - Then it’s bad code!” 52 @nicolas_frankel
  • 53. AGILE DELIVERS “Yet my last Agile project went wrong. - Then it must not have been truly Agile” http://en.wikipedia.org/wiki/File:Pair_programming_1.jpg 53 @nicolas_frankel
  • 54. IDEOLOGY Memes and ideologies are based on faith oMemes are largely shared oIdeologies are more restricted • Counter-ideologies 54 @nicolas_frankel
  • 55. THIS IS CRAP It’s not proper: oObject-Oriented Programming oFunctional Programming oYou name yours http://en.wikipedia.org/wiki/File:Pet_Waste_Station.jpg 55 @nicolas_frankel
  • 56. THOSE ARE WAYS! My goal is to achieve those properties: oReadability oTestability oMaintainability So long as I get them, I don’t care oBetter to have a unique paradigm in an application 56 @nicolas_frankel
  • 58. THANKS FOR YOUR INTEREST 58 @nicolas_frankel

Editor's Notes

  1. Windows &amp; Solaris only
  2. Who tests his JavaScript code?
  3. Statistical outlier
  4. Direct: direct observation or citing another studySample size: Measure: productivity depends on LOC? Interesting