Seven Deadly Sins

myfear 1,625 views 30 slides Mar 28, 2013
Slide 1
Slide 1 of 30
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30

About This Presentation

Seven ways to kill you Java EE Project.


Slide Content

seven
Seven deadly sins.
Seven ways to die.

http://blog.eisele.net/
@myfear
http://myfear.com/+
[email protected]

http://www.devoxx.com/display/UK13/2013/03/22/Devoxx+Code+of+Conduct

http://www.omg-facts.com/Sex/Each-Of-The-Main-Characters-In-Spongebob/13033

Browser
JVM OS
OS
DB OS
HW
HW
HW
Network

LUST
Spongebob
~ „I'm ready. I'm ready. I'm ready. I'm ready. ”
a passionate desire for something
our absorbent yellow friend is an extremely lustful
creature
will often stop at nothing to complete a task

Lust or lechery (carnal "luxuria") is an intense desire. It is usually thought of as
excessive sexual wants, however the word was originally a general term for desire.
Therefore lust could involve the intense desire of money, fame, or power as well.
http://en.wikipedia.org/wiki/Seven_deadly_sins

LUST
Golden-taps
http://www.flickr.com/photos/sonictk/338406270/sizes/l/in/photostream/
Least valuable features at all
Not limited to UI – could also be another fancy
something.

Find metrics to identify them
Might be a needed thing.

LUST
Over Engineering
http://www.flickr.com/photos/argonne/3366236801/sizes/l/in/photostream/
(outdated) way of applying patterns
(too many) interfaces
Solving tomorrows problems
Premature optimization

Premature Technologies
Remember: We are building things for business
Know the technologies you use
Alpha, Beta, Snapshot have different meanings
Don’t use everything
you know
that looks fancy
http://www.flickr.com/photos/jdsmith1021/4058827158/sizes/l/in/photostream/
LUST

Not invented here
LUST
http://www.flickr.com/photos/jed-sullivan/5081024719/sizes/o/in/photostream/
Might be a corporate culture
Dangerous if applied to security

Gluttony
~ „Meow”
•Gary doesn’t do a whole lot besides eating and meowing,
and the meowing is often due to the fact that he is
hungry.
•Gary is shown eating parts of their couch!


Derived from the Latin gluttire, meaning to gulp down or wallow, gluttony
(Latin, gula) is the over-indulgence and over-consumption of anything to the
point of waste.
http://en.wikipedia.org/wiki/Seven_deadly_sins

Performance
Non-functional requirements are requirements
Not taking care of performance at all
Different kinds of performance (development, runtime,
etc.)
Throwing hardware at the problem
Caching (too much)

http://www.flickr.com/photos/ryanhayes/4340420545/sizes/z/in/photostream/
Gluttony

Memory
Is less expensive than it was
There are limitations
Avoid creating unnecessary objects and always prefer
to do Lazy Initialization
Always try to minimize mutability of a class
Don't try to outsmart the VM
Rely on your Application Server
Profile your code
http://www.flickr.com/photos/wuerzblog/4608933631/sizes/l/in/photostream/
Gluttony

HttpSession Size
There to track state
Not your “in memory” cache
Control session lifetime
Be java.io.Serializable

http://www.flickr.com/photos/amanky/353356162/sizes/m/in/photostream/
Gluttony

Infrastructure
Know and control your Pool Sizes
Every connection allocates a thread
Know your threads; watch Thread-Dumps
Don’t try to work with your own threads
Trust your application server

http://www.flickr.com/photos/ecstaticist/3751068291/sizes/l/in/photostream/
Gluttony

WRATH
Squidward
~ „Will you please stop leaving your
undergarments on my front lawn? ”
•hates his job at the Krusty Krab
•portrayed as a general failure who refuses to
acknowledge his own personal flaws.
•a sarcastic sense of humor and resentment
toward the society that doesn’t ‘appreciate’
his creativity

Wrath (Latin, ira), also known as "rage", may be described as inordinate and
uncontrolled feelings of hatred and anger. Wrath, in its purest form, presents with
self-destructiveness, violence, and hate that may provoke feuds that can go on for
centuries.
http://en.wikipedia.org/wiki/Seven_deadly_sins

Mixing Technologies
Tempted to use Spring in your EE app?
Broad JVM ecosystem (Scala, Play, Akka, GWT, ..)
Know the technologies you’re working with and
Choose the right tool for the right job
http://www.flickr.com/photos/jkunz/3488123225/sizes/l/in/photostream/

Threading and Concurrency
EE was designed to provide an easy abstraction on
concurrency and threading.
Don’t roll your own.
Don’t.
Ever.
If you need to: JCA


=> EE 7 will give you a valid opportunity to do it the right way (JSR 236)
http://www.flickr.com/photos/71262479@N03/6507218983/sizes/l/

Maintainability
Your no1 enemy is complexity!
Design for understandability
Less is more!
http://www.flickr.com/photos/james_gordon_losangeles/8411756513/sizes/o/in/photostream/

GREED
Mr.Krabs
~ „Oh, yes you do, no world means no money,
so either save the world, or you're fired! ”
•constantly thinking of ways to turn a profit, even if it
involves taking advantage of his friends or putting them in
harmful situations
Greed (Latin, avaritia), also known as avarice or covetousness, is, like lust and
gluttony, a sin of excess. However, greed (as seen by the church) is applied to a
very excessive or rapacious desire and pursuit of material possessions.
http://en.wikipedia.org/wiki/Seven_deadly_sins

People and Resources
People are people. They are not resources. They are
not capital. They are humans.
Too many people
Too many features
Two Juniors don’t make a Senior

Not licensing helpful tools
Cost cutting on environments / developer notebooks
http://www.flickr.com/photos/sukanto_debnath/519690623/sizes/o/in/photostream/

ENVY
~ „Lady, someone should put you in a box to
drift in the river! ”
•His life’s goal is to steal the Krabby Patty
formula from his Krabs and drive his primary
competitor out of business.

Like greed and lust, Envy (Latin, invidia) is characterized by an insatiable desire.
Envy is similar to jealousy in that they both feel discontent towards someones traits,
status, abilities, or rewards. The difference is the envious also desire that entity and
covet it.
http://en.wikipedia.org/wiki/Seven_deadly_sins

Weaknesses in EE Specifications
aka application server specific features
Will kill you effectively multiple times
New version of same server
Different server
Different spec version
http://www.flickr.com/photos/bright/106000370/sizes/l/in/photostream/

SLOTH
~ „ It's okay. Take your time. ”
•Patrick is given an award for ‘doing absolutely
nothing longer than anyone else’

Sloth (Latin, Socordia) can entail different vices. While sloth is sometimes defined
as physical laziness, spiritual laziness is emphasized. Failing to develop spiritually
is key to becoming guilty of sloth. In the Christian faith, sloth rejects grace and God.
http://en.wikipedia.org/wiki/Seven_deadly_sins

“Efficiency is intelligent laziness.”
No refactoring
No reuse
Copy and Paste
Too simple
No improvement
No peer reviews

PRIDE
~ „ See? He's worse than I thought. ”
•Sandy is quick to spout off about the greatness of the
Lone Star state or to show off her athleticism in a
karate match or a weightlifting contest.

In almost every list, pride (Latin, superbia), or hubris (Greek), is considered the
original and most serious of the seven deadly sins, and the source of the others.
http://en.wikipedia.org/wiki/Seven_deadly_sins

"No, nothing,' said Dumbledore, and a great
sadness filled his face”
No usability testing
No behavior testing
No acceptance testing
No business testing
No unit testing
No performance testing
No security testing

I can do it better … I am better …
See “lust” ..oO(“not invented here”)
 There shouldn’t be an “almighty”
architect/designer/anything
Development is a team effort

Q&A