79
@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

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

Embed Size (px)

Citation preview

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

@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

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

32 years

Page 3: Devoxx Poland 2015: 5-10-15 years with Java
Page 4: Devoxx Poland 2015: 5-10-15 years with Java

Firstly, a digression

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

from code.org Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

Only in USA itself!

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

No balance between supply and demand in the

IT job market

Photo by winnifredxoxo - Creative Commons Attribution 2.0

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

It’s easy to earn a lot

Photo by Andrew Magill - Creative Commons Attribution 2.0

but earning a shitload means usually managerial path

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

–Richard Stallman

“The computer industry is the only industry that is more fashion-driven than

women's fashion.”

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

Photo by Hartwig HKD - Creative Commons Attribution-NoDerivs 2.0

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

years0

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

• Popular (unis, internet, literature, open source, free)

• Cross-platform

• Relatively idiot proof

• Good (free) tools

• Good job market (salaries)

• Sexy???

Why Java?

Page 12: Devoxx Poland 2015: 5-10-15 years with 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

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

• 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

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

// an awesome trick from // http://stackoverflow.com/questions…. // which allows us to make it way! faster. !

// the code follows here ...

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

Picture by Patrick Barry CC BY SA 2.0

“They are stupid.!They have fucked up

this code”

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

Focus on low level code quality• naming convention, • whitespaces, • checkstyle rules

• unit test coverage, • some low level metrics

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

Predictions provided quickly, optimistically and eagerly

(rule of thumb)

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

Spread shallow

Zdjęcie jeffreyw - Creative Commons BY 2.0

Page 19: Devoxx Poland 2015: 5-10-15 years with Java
Page 20: Devoxx Poland 2015: 5-10-15 years with Java
Page 21: Devoxx Poland 2015: 5-10-15 years with Java

I call them juniors and (later)

grown-up juniors (mids)

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

The most numerous group

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

“How” age

Page 24: Devoxx Poland 2015: 5-10-15 years with Java
Page 25: Devoxx Poland 2015: 5-10-15 years with Java

years5

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

• 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

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

• 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

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

// 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 ...

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

Picture by Patrick Barry CC BY SA 2.0

“This code looks broken. Let’s see if we

can fix it.”

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

Picture by Patrick Barry CC BY SA 2.0

Use The Force, Read The Source

UTSL

Use the Source, Luke

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

Focus on higher level code quality

• correct design • consistency • adherence to requirements

• functional test coverage • security • maintainability

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

• provide predictions more carefully

• involve others

• think about happy and unhappy paths

• try to predict unpredictable

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

Knowledge depth

T-shaped man

Page 34: Devoxx Poland 2015: 5-10-15 years with Java
Page 35: Devoxx Poland 2015: 5-10-15 years with Java
Page 36: Devoxx Poland 2015: 5-10-15 years with Java

I call them seniors

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

Seniors assume responsibility

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

The group where most of us consider themselves to belong

And where the majority stops…

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

“What” age

Page 40: Devoxx Poland 2015: 5-10-15 years with Java
Page 41: Devoxx Poland 2015: 5-10-15 years with Java

years10

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

• 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

Page 43: Devoxx Poland 2015: 5-10-15 years with 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

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

// 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 ...

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

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”

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

• 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

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

Feedback Loop

Mentors

Customers

Users

CI

CD

TDD

DevOps

Bug-fixing

Code Review

Release Cycle

Experiments

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

Great Team Player != Yes Man

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

The ability to say “no” is the sign of true professionalism

Picture by Stephen Almond, CC BY-SA 3.0

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

• 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

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

–Niels Bohr

“Prediction is very difficult, especially about the future”

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

PI-shaped man

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

Eat like a bird and poop like an elephantGuy Kawasaki

Photo by Megan Coughlin - CC BY-ND 2.0 Photo by blmiers2 - CC BY-NC-SA 2.0

Page 54: Devoxx Poland 2015: 5-10-15 years with Java
Page 55: Devoxx Poland 2015: 5-10-15 years with Java

www.paulgraham.com/

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

I call them leaders and/or principals

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

The group where most of us aspire to belong, but

many will never be

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

“Why” age

Page 59: Devoxx Poland 2015: 5-10-15 years with Java
Page 60: Devoxx Poland 2015: 5-10-15 years with Java

years15

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

• 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

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

Focus on true customer needs, people around them and their growth

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

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…”

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

• Noticing and predicting the changes of the trends

• Creating new trends

• ???

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

PiPi-shaped Man

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

I call them unicorns

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

“With whom” age

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

Seniority - summed up

Focus Technology ProductSolving

problemCustomer

Defining the right problem

Needs assistance

Independent Teaching others

Impacting the company

Technical capability

Quality Code L&FLow Level

System DesignUsability

ExtensibilityArchitecture

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

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

Seniority - cont.

WatchingQuestioning & 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 CriticismCritical

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 CarefulReluctant Pessimistic

Iterative Narrowing

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

Seniority - coding passionJunior

Application Code

MidReusable Libraries

Senior

Reusable Frameworks

Principal

Buy over Build…

LoC

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

A few closing thoughts

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

Yes, you can!

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

–Heraclitus

“There is nothing permanent except change.”

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

Don’t concentrate on mastering only a technology

Learn to learn constantly

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

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

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

Technical Skills

Communication Skills

Page 77: Devoxx Poland 2015: 5-10-15 years with Java
Page 78: Devoxx Poland 2015: 5-10-15 years with Java

–Mahatma Gandhi

“Live as if you were to die tomorrow. Learn as if you were to live forever.”

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

Questions?@wseliga We are

hiring

in Gdańsk!

Shameless plug