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_f...
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
@ni...
CARGO CULTING
• Reproducing outer form
in order to get some
benefits regardless of
contexts
http://en.wikipedia.org/wiki/F...
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 pur...
DO NOT BELIEVE ME!
You are not getting
sleepy!
I do not want to
spread more cargo
culting & memes
oTry…
http://en.wikipe...
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 peo...
And the birds of steel
have plenty of good
food inside
With no need to go
fishing…
http://en.wikipedia.org/wiki/File:Fis...
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...
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
...
Some years later, he
became an « expert »
And wrote some good
practices guidelines
Including declaring
local variables
...
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 narrow...
The « expert »
accepted the challenge
And coded a small
snippet to assert his
claims
It failed miserably…
JDK 1.4 was ...
The « expert » was
sorely disappointed
But realized a very
important fact
« There’s no
universal truth, it all
depends ...
Also applies to:
oFood
oReligion
oSports
oYou name it
http://en.wikipedia.org/wiki/File:Shunsuke1_20080622.jpg
20
@nicola...
FACTS
At this time, I don’t
know if that was ever
true
oI suppose it was
I found nothing
supporting this (or
the opposit...
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 ...
The birth of EJB 3
brought a new
Golden Age
And freed people of
the tyranny of the
EJB Container
Sadly, many
developers...
ALTERNATIVES
1. When no association
required
oUse the entity directly
2. Use eager associations
3. Use the
OpenSessionInVi...
XML IS BAD
10 years ago, it was
all XML
oCan be validated against
a schema
XML became evil with
the coming of
annotation...
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...
Pros Cons
Everything in the same place Couples code to Spring
Compiled Prevents reusability
Allows bad design
29
@nicolas_...
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 MyBe...
RELATED TO CARGO CULTING
Copy-Paste Driven
Programming
Reverse Cargo
Culting:
oForget the form because
the context is di...
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 argu...
MEMES
Cargo Culting can be
remedied if the cultist
is rational and willing
to listen
Memes are way more
pervasive
Based...
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 conditio...
Ref. Direct? Task
type
Sample
size
Pop. Measure Variation
Curtis 1981 N Debug 27 Pros Time-to-
compile
22:1
8:1
Mills 1983...
PRODUCTIVITY IN SOFTWARE
Which metrics?
oLOC?
oAny is trivial to game...
Which task?
oMust be the same in
order to compa...
MY EXPERIENCE
There’s a difference in
productivity
oBut I never could quantify
I can only say if one
developer is more
p...
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...
It makes sense that
uncertainty decreases
with time passing...
Does it make sense
that:
oIt is symmetric?
oIt follows f(...
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-ri...
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...
NO TRUE SCOTSMAN
“Scotsmen do not put
sugar on their porridge
- I’m a Scotsman and I
put sugar on my
porridge
- No true Sc...
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/wi...
IDEOLOGY
Memes and
ideologies are based
on faith
oMemes are largely
shared
oIdeologies are more
restricted
• Counter-ideo...
THIS IS CRAP
It’s not proper:
oObject-Oriented
Programming
oFunctional Programming
oYou name yours
http://en.wikipedia.or...
THOSE ARE WAYS!
My goal is to achieve
those properties:
oReadability
oTestability
oMaintainability
So long as I get
them...
SPOTTING MEMES
http://en.wikipedia.org/wiki/File:Foam_-_big.jpg
57
@nicolas_frankel
THANKS FOR YOUR INTEREST
58
@nicolas_frankel
Upcoming SlideShare
Loading in …5
×

2014 JavaLand - Cargo culting and memes in JavaLand

553
-1

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
553
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Windows & Solaris only
  • Who tests his JavaScript code?
  • Statistical outlier
  • Direct: direct observation or citing another studySample size: Measure: productivity depends on LOC? Interesting
  • 2014 JavaLand - Cargo culting and memes in JavaLand

    1. 1. CARGO CULTING AND MEMES IN FORGET EVERYTHING YOU THOUGHT YOU KNEW
    2. 2. ME, MYSELF AND I 13 years consulting Wide range of businesses & customers blog.frankel.ch & morevaadin.com 2 @nicolas_frankel
    3. 3. ALSO AN AUTHOR https://leanpub.com/integrationtest/ 3 @nicolas_frankel
    4. 4. MY JOB hybris: oE-commerce product 4 @nicolas_frankel
    5. 5. CARGO CULTING VS MEMES http://www.freedigitalphotos.net/images/athletes-at-starting-line-on-race-track-photo-p215478 5 @nicolas_frankel
    6. 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. 7. MEMES • Widespread ideas • With no (or shallow) scientific proof behind 7 @nicolas_frankel
    8. 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. 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. 10. CARGO CULTING Imagine living on a paradise island Free from daily world contingencies 10 @nicolas_frankel
    11. 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. 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. 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. 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. 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. 16. He was very happy And all developers happily followed his rules 16 @nicolas_frankel
    17. 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. 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. 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. 20. Also applies to: oFood oReligion oSports oYou name it http://en.wikipedia.org/wiki/File:Shunsuke1_20080622.jpg 20 @nicolas_frankel
    21. 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. 22. DATA TRANSFER OBJECT Once upon a time, there was platform called J2EE Which provided a bunch of API 22 @nicolas_frankel
    23. 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. 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. 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. 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. 27. CRITICS AGAINST XML Verbose Are not compiled oErrors (beyond grammar) are discovered at runtime 27 @nicolas_frankel
    28. 28. SELF-ANNOTATED CLASSES @Service @Scope("prototype") public class MyBean { @Autowired private MyRepository myRepo; ... } 28 @nicolas_frankel
    29. 29. Pros Cons Everything in the same place Couples code to Spring Compiled Prevents reusability Allows bad design 29 @nicolas_frankel
    30. 30. ALTERNATIVES XML JavaConfig oCompiled oWith no con of self- annotated classes 30 @nicolas_frankel
    31. 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. 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. 33. SPOTTING CARGO CULTING “We’ve always done like that” “It’s always been working” 33 @nicolas_frankel
    34. 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. 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. 36. MY ILLUMINATION The Leprechauns of Software Engineering https://leanpub.com/leprechauns 36 @nicolas_frankel
    37. 37. THE 10X PRODUCTIVITY RULE “A good programmer can be as 10X times more productive than a mediocre one” 37 @nicolas_frankel
    38. 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. 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. 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. 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. 42. BUT REJOICE! Other domains are not free of memes either oProject Management oGraphical Design 42 @nicolas_frankel
    43. 43. Source: http://www.peterbormer.com/ 43 @nicolas_frankel
    44. 44. THE SOURCE OF “TRUTH” Software Engineering Economics – Boehm, 1981 Made famous in Rapid Development – McConnell, 1996 44 @nicolas_frankel
    45. 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
    46. 46. MY EXPERIENCE 46 @nicolas_frankel
    47. 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. 48. Then came a device to follow eyes movements And they made an experience on the TV 48 @nicolas_frankel
    49. 49. 49 @nicolas_frankel
    50. 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. 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. 52. CODE IS SELF-DOCUMENTING “Yet I cannot make this code clear without comments. - Then it’s bad code!” 52 @nicolas_frankel
    53. 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. 54. IDEOLOGY Memes and ideologies are based on faith oMemes are largely shared oIdeologies are more restricted • Counter-ideologies 54 @nicolas_frankel
    55. 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. 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
    57. 57. SPOTTING MEMES http://en.wikipedia.org/wiki/File:Foam_-_big.jpg 57 @nicolas_frankel
    58. 58. THANKS FOR YOUR INTEREST 58 @nicolas_frankel
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×