SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a 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 a 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
 

Más de 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
 

Más de 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
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

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

Notas del editor

  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