@wseliga#DevoxxPL
Platinum Sponsors:
5-10-15 years with Java
from junior to master and back again
Wojciech Seliga
Creative Commons Attribution-NonCommercial-ShareAlike 3.0
32years
Firstly, a digression
from code.org
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
Only in USA itself!
No balance between
supply and demand in the
IT job market
Photo by winnifredxoxo - Creative Commons Attribution 2.0
It’s easy to earn a lot
Photo by Andrew Magill - Creative Commons Attribution 2.0
but earning a shitload means usually
managerial path
–Richard Stallman
“The computer industry is the only
industry that is more fashion-driven than
women's fashion.”
Photo by Hartwig HKD - Creative Commons Attribution-NoDerivs 2.0
years
0
• Popular (unis, internet,
literature, open source, free)
• Cross-platform
• Relatively idiot proof
• Good (free) tools
• Good job market (salaries)
• Sexy???
Why Java?
• The language rather simple and easy to
learn
• Well, it’s quite backward and I cannot
boost my ego with fancy idioms; a lot of
crap in the language dated to 200x’s or
199x’s.
• Easy to (re)write lots of code (ideally
from scratch), yeah!!!
First Java thoughts and behaviours
• They often need to, but are afraid to ask
• Focus on how to write something tersely, neatly, in a
geeky way
• Concentration on “I” - their own education, benefits,
perspective, feelings
// an awesome trick from
// http://stackoverflow.com/questions….
// which allows us to make it way! faster.
!
// the code follows here ...
Picture by Patrick Barry CC BY SA 2.0
“They are stupid.!
They have fucked up
this code”
Focus on low level code quality
• naming convention,
• whitespaces,
• checkstyle rules
• unit test coverage,
• some low level metrics
Predictions provided quickly,
optimistically and eagerly
(rule of thumb)
Spread shallow
Zdjęcie jeffreyw - Creative Commons BY 2.0
I call them juniors
and (later)
grown-up juniors (mids)
The most numerous
group
“How” age
years
5
• Quite verbose and explicit language actually
makes it easier to understand and maintain the
code
• Language supports the understanding that
coding is about “write once, read many times”
• Remembering when writing code that it will be
read 100x more often
• Backward compatibility is not that bad after all…
Java afterthoughts and behaviours
• They need to ask others more seldom, but still are
reluctant as it if would reveal their weakness
• “We and Them Language” (devs vs. customers/users
or “the business”/management)
• Concentrated on the product and the domain
// it's safe to apply a simplified formula
// and thus reduce the complexity
// from O(n) into O(log(n)), which does help
// a lot for long-haul flights.
!
// the code follows here ...
Picture by Patrick Barry CC BY SA 2.0
“This code looks
broken. Let’s see if we
can fix it.”
Picture by Patrick Barry CC BY SA 2.0
Use The Force,
Read The Source
UTSL
Use the Source, Luke
Focus on higher level code quality
• correct design
• consistency
• adherence to requirements
• functional test coverage
• security
• maintainability
• provide predictions more carefully
• involve others
• think about happy and unhappy paths
• try to predict unpredictable
Knowledge depth
T-shaped man
I call them seniors
Seniors assume
responsibility
The group where most of us
consider themselves to belong
And where the majority stops…
“What” age
years
10
• Quite verbose and explicit language actually
makes it easier for newbies to pick up modules
of non-trivial size and understand them
• Good debuggers, stack traces, thread/
heapdumps and diagnosis tools are life savers.
• Backward compatibility (maybe not 10+ years
back…) is a really good thing in the wild
(Scala, I am looking at you…)
Further afterthoughts about Java
• They ask questions often, do not feel vulnerable
• “It depends” guys
• “We together” language (his dev team + business/management
+ customers/users)
• Concentration on their team and the users
// Because JAA aviation rules allow
// a simplified check here, together with
// aircraft performance department we decided
// (look at http://wiki....)
// to use a simplified formula which allows us
// to reduce O(n) complexity into O(log(n))
// and thus make it acceptably fast
// for long-haul flights.
!
// the code follows here ...
Picture by Patrick Barry CC BY SA 2.0
“This code looks strange. Let’s
find out why they decided to
implement it in this way”
• Fitting into the big picture
• Response to Market
Trends
• Discovering real (often
hidden) problems
• Addressing business risks
• Usability
• User adoption
• Upgrades/migrations
• Future usage growth
• Constant Learning
Feedback Loop
Mentors
Customers
Users
CI
CD
TDD
DevOps
Bug-fixing
Code Review
Release Cycle
Experiments
Great Team Player != Yes Man
The ability to say “no” is the
sign of true professionalism
Picture by Stephen Almond, CC BY-SA 3.0
• very reluctant to provide any estimations upfront
• eager to operate with ranges and probability
• narrow down the estimates along the way
Picture by FalseReflex, CC 3.0 BY-NC
–Niels Bohr
“Prediction is very difficult,
especially about the future”
PI-shaped man
Eat like a bird and poop like an elephant
Guy Kawasaki
Photo by Megan Coughlin - CC BY-ND 2.0 Photo by blmiers2 - CC BY-NC-SA 2.0
www.paulgraham.com/
I call them leaders
and/or principals
The group where most of
us aspire to belong, but
many will never be
“Why” age
years
15
• It’s a truly powerful platform. The language
itself hasn’t really changed, but the whole
ecosystem has changed tremendously!
• Amazing tools!
• No serious successor today for
enterprises
• Java 8 finally brought well balanced
language changes
Current afterthoughts about Java
Focus on true customer needs, people around them and their growth
Picture by Patrick Barry CC BY SA 2.0
“Wow, such an unusual code.
I didn’t think about it in this
way. Maybe I was wrong…”
• Noticing and predicting the changes of the trends
• Creating new trends
• ???
PiPi-shaped Man
I call them unicorns
“With whom” age
Seniority - summed up
Focus Technology Product
Solving	

problem
Customer	

Defining the right problem
Needs	

assistance
Independent
Teaching	

others
Impacting 	

the company
Technical
capability
Quality Code L&F
Low Level	

System Design
Usability	

Extensibility
Architecture	

Maintainability
Technical
innovation
Passive
Local	

Introduction
Team	

Buy-in
Company 	

Community
Junior Mid Senior Principal
Knowledge
Span
Fragments 	

of a single stack
Most of the	

stack, some element	

of other stacks
Complete stack	

and a lot of elements 	

of other stacks
Various stacks	

(deeply!)
Bugs Surprised Disappointed Expecting Leveraging
Seniority - cont.
Watching
Questioning	

& proposing
Changing	

teammates
Changing 	

company
Process
Improvement
Change Agent
Big Picture
Doesn’t care	

or learning
System/Product 	

understanding
Domain	

understanding
Domain expert	

(innovation)
Stance Arrogant “Socrates”
Open to	

Criticism
Critical
Typical
Experience
1K - 5K hours 3K - 12K hours 7K-20K hours 15K+ hours
Junior Mid Senior Principal
Teaching/
mentoring
Receiver Interns & Juniors Whole team
All people	

(also outside)
Estimation
!
Eager & Naive	

 Careful
Reluctant	

Pessimistic
Iterative	

Narrowing
Seniority - coding passion
Junior
Application
Code
Mid
Reusable
Libraries
Senior
Reusable
Frameworks
Principal
Buy over Build…
LoC
A few closing
thoughts
Yes, you can!
–Heraclitus
“There is nothing permanent except change.”
Don’t concentrate on
mastering only

a technology
Learn to learn
constantly
Summary
• Juniors assume other people ignorance, principals assume
their own ignorance
• Java as a platform and a language is far from dead
• Mastering only Java puts you in a rut. A rut turns silently into
a grave. Overheated job market is your secret enemy - it’s
too easy to rest on laurels.
• After 32 years of coding, I still know nothing
Technical
Skills
Communication
Skills
–Mahatma Gandhi
“Live as if you were to die tomorrow.
Learn as if you were to live forever.”
Questions
?
@wseliga We are
hiring
in Gdańsk!
Shameless
plug

Devoxx Poland 2015: 5-10-15 years with Java

  • 1.
    @wseliga#DevoxxPL Platinum Sponsors: 5-10-15 yearswith Java from junior to master and back again Wojciech Seliga Creative Commons Attribution-NonCommercial-ShareAlike 3.0
  • 2.
  • 4.
  • 5.
    from code.org Creative CommonsAttribution-NonCommercial-ShareAlike 3.0 Unported License Only in USA itself!
  • 6.
    No balance between supplyand demand in the IT job market Photo by winnifredxoxo - Creative Commons Attribution 2.0
  • 7.
    It’s easy toearn a lot Photo by Andrew Magill - Creative Commons Attribution 2.0 but earning a shitload means usually managerial path
  • 8.
    –Richard Stallman “The computerindustry is the only industry that is more fashion-driven than women's fashion.”
  • 9.
    Photo by HartwigHKD - Creative Commons Attribution-NoDerivs 2.0
  • 10.
  • 11.
    • Popular (unis,internet, literature, open source, free) • Cross-platform • Relatively idiot proof • Good (free) tools • Good job market (salaries) • Sexy??? Why Java?
  • 12.
    • The languagerather simple and easy to learn • Well, it’s quite backward and I cannot boost my ego with fancy idioms; a lot of crap in the language dated to 200x’s or 199x’s. • Easy to (re)write lots of code (ideally from scratch), yeah!!! First Java thoughts and behaviours
  • 13.
    • They oftenneed to, but are afraid to ask • Focus on how to write something tersely, neatly, in a geeky way • Concentration on “I” - their own education, benefits, perspective, feelings
  • 14.
    // an awesometrick from // http://stackoverflow.com/questions…. // which allows us to make it way! faster. ! // the code follows here ...
  • 15.
    Picture by PatrickBarry CC BY SA 2.0 “They are stupid.! They have fucked up this code”
  • 16.
    Focus on lowlevel code quality • naming convention, • whitespaces, • checkstyle rules • unit test coverage, • some low level metrics
  • 17.
  • 18.
    Spread shallow Zdjęcie jeffreyw- Creative Commons BY 2.0
  • 21.
    I call themjuniors and (later) grown-up juniors (mids)
  • 22.
  • 23.
  • 25.
  • 26.
    • Quite verboseand explicit language actually makes it easier to understand and maintain the code • Language supports the understanding that coding is about “write once, read many times” • Remembering when writing code that it will be read 100x more often • Backward compatibility is not that bad after all… Java afterthoughts and behaviours
  • 27.
    • They needto ask others more seldom, but still are reluctant as it if would reveal their weakness • “We and Them Language” (devs vs. customers/users or “the business”/management) • Concentrated on the product and the domain
  • 28.
    // it's safeto apply a simplified formula // and thus reduce the complexity // from O(n) into O(log(n)), which does help // a lot for long-haul flights. ! // the code follows here ...
  • 29.
    Picture by PatrickBarry CC BY SA 2.0 “This code looks broken. Let’s see if we can fix it.”
  • 30.
    Picture by PatrickBarry CC BY SA 2.0 Use The Force, Read The Source UTSL Use the Source, Luke
  • 31.
    Focus on higherlevel code quality • correct design • consistency • adherence to requirements • functional test coverage • security • maintainability
  • 32.
    • provide predictionsmore carefully • involve others • think about happy and unhappy paths • try to predict unpredictable
  • 33.
  • 36.
    I call themseniors
  • 37.
  • 38.
    The group wheremost of us consider themselves to belong And where the majority stops…
  • 39.
  • 41.
  • 42.
    • Quite verboseand explicit language actually makes it easier for newbies to pick up modules of non-trivial size and understand them • Good debuggers, stack traces, thread/ heapdumps and diagnosis tools are life savers. • Backward compatibility (maybe not 10+ years back…) is a really good thing in the wild (Scala, I am looking at you…) Further afterthoughts about Java
  • 43.
    • They askquestions often, do not feel vulnerable • “It depends” guys • “We together” language (his dev team + business/management + customers/users) • Concentration on their team and the users
  • 44.
    // Because JAAaviation rules allow // a simplified check here, together with // aircraft performance department we decided // (look at http://wiki....) // to use a simplified formula which allows us // to reduce O(n) complexity into O(log(n)) // and thus make it acceptably fast // for long-haul flights. ! // the code follows here ...
  • 45.
    Picture by PatrickBarry CC BY SA 2.0 “This code looks strange. Let’s find out why they decided to implement it in this way”
  • 46.
    • Fitting intothe big picture • Response to Market Trends • Discovering real (often hidden) problems • Addressing business risks • Usability • User adoption • Upgrades/migrations • Future usage growth • Constant Learning
  • 47.
  • 48.
  • 49.
    The ability tosay “no” is the sign of true professionalism Picture by Stephen Almond, CC BY-SA 3.0
  • 50.
    • very reluctantto provide any estimations upfront • eager to operate with ranges and probability • narrow down the estimates along the way Picture by FalseReflex, CC 3.0 BY-NC
  • 51.
    –Niels Bohr “Prediction isvery difficult, especially about the future”
  • 52.
  • 53.
    Eat like abird and poop like an elephant Guy Kawasaki Photo by Megan Coughlin - CC BY-ND 2.0 Photo by blmiers2 - CC BY-NC-SA 2.0
  • 55.
  • 56.
    I call themleaders and/or principals
  • 57.
    The group wheremost of us aspire to belong, but many will never be
  • 58.
  • 60.
  • 61.
    • It’s atruly powerful platform. The language itself hasn’t really changed, but the whole ecosystem has changed tremendously! • Amazing tools! • No serious successor today for enterprises • Java 8 finally brought well balanced language changes Current afterthoughts about Java
  • 62.
    Focus on truecustomer needs, people around them and their growth
  • 63.
    Picture by PatrickBarry CC BY SA 2.0 “Wow, such an unusual code. I didn’t think about it in this way. Maybe I was wrong…”
  • 64.
    • Noticing andpredicting the changes of the trends • Creating new trends • ???
  • 65.
  • 66.
    I call themunicorns
  • 67.
  • 68.
    Seniority - summedup Focus Technology Product Solving problem Customer Defining the right problem Needs assistance Independent Teaching others Impacting the company Technical capability Quality Code L&F Low Level System Design Usability Extensibility Architecture Maintainability Technical innovation Passive Local Introduction Team Buy-in Company Community Junior Mid Senior Principal Knowledge Span Fragments of a single stack Most of the stack, some element of other stacks Complete stack and a lot of elements of other stacks Various stacks (deeply!) Bugs Surprised Disappointed Expecting Leveraging
  • 69.
    Seniority - cont. Watching Questioning &proposing Changing teammates Changing company Process Improvement Change Agent Big Picture Doesn’t care or learning System/Product understanding Domain understanding Domain expert (innovation) Stance Arrogant “Socrates” Open to Criticism Critical Typical Experience 1K - 5K hours 3K - 12K hours 7K-20K hours 15K+ hours Junior Mid Senior Principal Teaching/ mentoring Receiver Interns & Juniors Whole team All people (also outside) Estimation ! Eager & Naive Careful Reluctant Pessimistic Iterative Narrowing
  • 70.
    Seniority - codingpassion Junior Application Code Mid Reusable Libraries Senior Reusable Frameworks Principal Buy over Build… LoC
  • 71.
  • 72.
  • 73.
    –Heraclitus “There is nothingpermanent except change.”
  • 74.
    Don’t concentrate on masteringonly
 a technology Learn to learn constantly
  • 75.
    Summary • Juniors assumeother people ignorance, principals assume their own ignorance • Java as a platform and a language is far from dead • Mastering only Java puts you in a rut. A rut turns silently into a grave. Overheated job market is your secret enemy - it’s too easy to rest on laurels. • After 32 years of coding, I still know nothing
  • 76.
  • 78.
    –Mahatma Gandhi “Live asif you were to die tomorrow. Learn as if you were to live forever.”
  • 79.