SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
@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

Contenu connexe

Tendances

Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Wojciech Seliga
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmyWojciech Seliga
 
Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Wojciech Seliga
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?Kinshuk Adhikary
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship EssentialsEduards Sizovs
 
Continuous Delivery (The newest)
Continuous Delivery (The newest)Continuous Delivery (The newest)
Continuous Delivery (The newest)Eduards Sizovs
 
What skills and personality do you need for a career in DevOps?
What skills and personality do you need for a career in DevOps?What skills and personality do you need for a career in DevOps?
What skills and personality do you need for a career in DevOps?Puppet
 
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...Rosenfeld Media
 
OSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de PauwOSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de PauwNETWAYS
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotesEudris Cabrera
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debuggingLaurent Cerveau
 
Guided Path to DevOps Career.
Guided Path to DevOps Career.Guided Path to DevOps Career.
Guided Path to DevOps Career.wahabwelcome
 
How to hire and keep engineers happy public
How to hire and keep engineers happy publicHow to hire and keep engineers happy public
How to hire and keep engineers happy publicPiaw Na
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Alberto Brandolini
 

Tendances (20)

Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)Developer plantations - colonialism of XXI century (GeeCON 2017)
Developer plantations - colonialism of XXI century (GeeCON 2017)
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy
 
Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014
 
Architects and design-org
Architects and design-orgArchitects and design-org
Architects and design-org
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship Essentials
 
Continuous Delivery (The newest)
Continuous Delivery (The newest)Continuous Delivery (The newest)
Continuous Delivery (The newest)
 
What skills and personality do you need for a career in DevOps?
What skills and personality do you need for a career in DevOps?What skills and personality do you need for a career in DevOps?
What skills and personality do you need for a career in DevOps?
 
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...
Lean Engineering: Engineering for Learning & Experimentation in the Enterpris...
 
OSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de PauwOSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotes
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debugging
 
E245 syllabus rev15
E245 syllabus rev15E245 syllabus rev15
E245 syllabus rev15
 
Guided Path to DevOps Career.
Guided Path to DevOps Career.Guided Path to DevOps Career.
Guided Path to DevOps Career.
 
Biz Product Learnings
Biz Product LearningsBiz Product Learnings
Biz Product Learnings
 
How to hire and keep engineers happy public
How to hire and keep engineers happy publicHow to hire and keep engineers happy public
How to hire and keep engineers happy public
 
Intro to the class
Intro to the classIntro to the class
Intro to the class
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
 
Smart Housekeeping Apps
Smart Housekeeping AppsSmart Housekeeping Apps
Smart Housekeeping Apps
 
Plugin style EA
Plugin style EAPlugin style EA
Plugin style EA
 

Similaire à 15-10-5 years with Java from junior to master

From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerAlexandro Colorado
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny daybcoder
 
Friday final test
Friday final testFriday final test
Friday final testbcoder
 
Open Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration PresentationOpen Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration Presentationdarryl_lehmann
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?Kasra Khosravi
 
Technologies for startup
Technologies for startupTechnologies for startup
Technologies for startupDzung Nguyen
 
NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1Bert Jan Schrijver
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from IndustryGarth Gilmour
 
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...DevOpsDays Tel Aviv
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs CraftMagenTys
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)kevinjohngallagher
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Juraj Martinka
 
Flow: A living full-stack framework for the web
Flow: A living full-stack framework for the webFlow: A living full-stack framework for the web
Flow: A living full-stack framework for the websebastian sastre
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"Daniel Bryant
 

Similaire à 15-10-5 years with Java from junior to master (20)

From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
 
Why other ppl_dont_get_it
Why other ppl_dont_get_itWhy other ppl_dont_get_it
Why other ppl_dont_get_it
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
 
Friday final test
Friday final testFriday final test
Friday final test
 
Open Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration PresentationOpen Web Technologies and You - Durham College Student Integration Presentation
Open Web Technologies and You - Durham College Student Integration Presentation
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
 
Technologies for startup
Technologies for startupTechnologies for startup
Technologies for startup
 
NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from Industry
 
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs Craft
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
 
A New Hiring Paradigm
A New Hiring ParadigmA New Hiring Paradigm
A New Hiring Paradigm
 
Choosing the Right Tool for the Job
Choosing the Right Tool for the JobChoosing the Right Tool for the Job
Choosing the Right Tool for the Job
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
 
Flow: A living full-stack framework for the web
Flow: A living full-stack framework for the webFlow: A living full-stack framework for the web
Flow: A living full-stack framework for the web
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
 

Plus de Wojciech Seliga

Sprzedawanie własnego biznesu IT - Confitura 2023.pdf
Sprzedawanie własnego biznesu IT - Confitura 2023.pdfSprzedawanie własnego biznesu IT - Confitura 2023.pdf
Sprzedawanie własnego biznesu IT - Confitura 2023.pdfWojciech Seliga
 
Jak być zarąbistym developerem w oczach szefa i ... klienta
Jak być zarąbistym developerem w oczach szefa i ... klientaJak być zarąbistym developerem w oczach szefa i ... klienta
Jak być zarąbistym developerem w oczach szefa i ... klientaWojciech Seliga
 
How to impress your boss and your customer in a modern software development c...
How to impress your boss and your customer in a modern software development c...How to impress your boss and your customer in a modern software development c...
How to impress your boss and your customer in a modern software development c...Wojciech Seliga
 
Innowacja w praktyce - Infoshare 2014
Innowacja w praktyce - Infoshare 2014Innowacja w praktyce - Infoshare 2014
Innowacja w praktyce - Infoshare 2014Wojciech Seliga
 
Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Wojciech Seliga
 
Escaping Automated Test Hell - One Year Later
Escaping Automated Test Hell - One Year LaterEscaping Automated Test Hell - One Year Later
Escaping Automated Test Hell - One Year LaterWojciech Seliga
 
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKitAtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKitWojciech Seliga
 
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)Wojciech Seliga
 
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]Wojciech Seliga
 
Better Front-end Development in Atlassian Plugins
Better Front-end Development in Atlassian PluginsBetter Front-end Development in Atlassian Plugins
Better Front-end Development in Atlassian PluginsWojciech Seliga
 
Bringing Effectiveness and Sanity to Highly Distributed Agile Teams
Bringing Effectiveness and Sanity  to Highly Distributed Agile TeamsBringing Effectiveness and Sanity  to Highly Distributed Agile Teams
Bringing Effectiveness and Sanity to Highly Distributed Agile TeamsWojciech Seliga
 
JDD Effective Code Review In Agile Teams
JDD Effective Code Review In Agile TeamsJDD Effective Code Review In Agile Teams
JDD Effective Code Review In Agile TeamsWojciech Seliga
 

Plus de Wojciech Seliga (12)

Sprzedawanie własnego biznesu IT - Confitura 2023.pdf
Sprzedawanie własnego biznesu IT - Confitura 2023.pdfSprzedawanie własnego biznesu IT - Confitura 2023.pdf
Sprzedawanie własnego biznesu IT - Confitura 2023.pdf
 
Jak być zarąbistym developerem w oczach szefa i ... klienta
Jak być zarąbistym developerem w oczach szefa i ... klientaJak być zarąbistym developerem w oczach szefa i ... klienta
Jak być zarąbistym developerem w oczach szefa i ... klienta
 
How to impress your boss and your customer in a modern software development c...
How to impress your boss and your customer in a modern software development c...How to impress your boss and your customer in a modern software development c...
How to impress your boss and your customer in a modern software development c...
 
Innowacja w praktyce - Infoshare 2014
Innowacja w praktyce - Infoshare 2014Innowacja w praktyce - Infoshare 2014
Innowacja w praktyce - Infoshare 2014
 
Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013Escaping Test Hell - Our Journey - XPDays Ukraine 2013
Escaping Test Hell - Our Journey - XPDays Ukraine 2013
 
Escaping Automated Test Hell - One Year Later
Escaping Automated Test Hell - One Year LaterEscaping Automated Test Hell - One Year Later
Escaping Automated Test Hell - One Year Later
 
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKitAtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
AtlasCamp 2012 - Testing JIRA plugins smarter with TestKit
 
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)
How to be Awesome at a Java Developer Job Interview (Confitura 2012, Polish)
 
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]
InfoShare 2012 efektywne przeglądy kodu w zespołach agile [Polish]
 
Better Front-end Development in Atlassian Plugins
Better Front-end Development in Atlassian PluginsBetter Front-end Development in Atlassian Plugins
Better Front-end Development in Atlassian Plugins
 
Bringing Effectiveness and Sanity to Highly Distributed Agile Teams
Bringing Effectiveness and Sanity  to Highly Distributed Agile TeamsBringing Effectiveness and Sanity  to Highly Distributed Agile Teams
Bringing Effectiveness and Sanity to Highly Distributed Agile Teams
 
JDD Effective Code Review In Agile Teams
JDD Effective Code Review In Agile TeamsJDD Effective Code Review In Agile Teams
JDD Effective Code Review In Agile Teams
 

Dernier

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 

Dernier (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 

15-10-5 years with Java from junior to master

  • 1. @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
  • 3.
  • 5. from code.org Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License Only in USA itself!
  • 6. No balance between supply and demand in the IT job market Photo by winnifredxoxo - Creative Commons Attribution 2.0
  • 7. It’s easy to earn a lot Photo by Andrew Magill - Creative Commons Attribution 2.0 but earning a shitload means usually managerial path
  • 8. –Richard Stallman “The computer industry is the only industry that is more fashion-driven than women's fashion.”
  • 9. Photo by Hartwig HKD - Creative Commons Attribution-NoDerivs 2.0
  • 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 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
  • 13. • 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
  • 14. // an awesome trick from // http://stackoverflow.com/questions…. // which allows us to make it way! faster. ! // the code follows here ...
  • 15. Picture by Patrick Barry CC BY SA 2.0 “They are stupid.! They have fucked up this code”
  • 16. Focus on low level code quality • naming convention, • whitespaces, • checkstyle rules • unit test coverage, • some low level metrics
  • 17. Predictions provided quickly, optimistically and eagerly (rule of thumb)
  • 18. Spread shallow Zdjęcie jeffreyw - Creative Commons BY 2.0
  • 19.
  • 20.
  • 21. I call them juniors and (later) grown-up juniors (mids)
  • 24.
  • 26. • 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
  • 27. • 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
  • 28. // 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 ...
  • 29. Picture by Patrick Barry CC BY SA 2.0 “This code looks broken. Let’s see if we can fix it.”
  • 30. Picture by Patrick Barry CC BY SA 2.0 Use The Force, Read The Source UTSL Use the Source, Luke
  • 31. Focus on higher level code quality • correct design • consistency • adherence to requirements • functional test coverage • security • maintainability
  • 32. • provide predictions more carefully • involve others • think about happy and unhappy paths • try to predict unpredictable
  • 34.
  • 35.
  • 36. I call them seniors
  • 38. The group where most of us consider themselves to belong And where the majority stops…
  • 40.
  • 42. • 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
  • 43. • 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
  • 44. // 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 ...
  • 45. 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”
  • 46. • 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
  • 48. Great Team Player != Yes Man
  • 49. The ability to say “no” is the sign of true professionalism Picture by Stephen Almond, CC BY-SA 3.0
  • 50. • 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
  • 51. –Niels Bohr “Prediction is very difficult, especially about the future”
  • 53. 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
  • 54.
  • 56. I call them leaders and/or principals
  • 57. The group where most of us aspire to belong, but many will never be
  • 59.
  • 61. • 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
  • 62. Focus on true customer needs, people around them and their growth
  • 63. 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…”
  • 64. • Noticing and predicting the changes of the trends • Creating new trends • ???
  • 66. I call them unicorns
  • 68. 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
  • 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 - coding passion Junior Application Code Mid Reusable Libraries Senior Reusable Frameworks Principal Buy over Build… LoC
  • 73. –Heraclitus “There is nothing permanent except change.”
  • 74. Don’t concentrate on mastering only
 a technology Learn to learn constantly
  • 75. 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
  • 77.
  • 78. –Mahatma Gandhi “Live as if you were to die tomorrow. Learn as if you were to live forever.”
  • 79. Questions ? @wseliga We are hiring in Gdańsk! Shameless plug