Anonymous in the IT crowd

thank you Jarek

Tomasz Borek, @LAFK pl,

We’re the crowd, we’re anonymous,
There’s always a mountain of things to learn,
The learning process, it must be continuous,
(New Java version now comes twice a year)

Must we so suffer? When does it end?
Till death do us part? Till we croak and break?
DDD? BDD? Docker? What else?
(I hear that AI is an ascending trend)

But were we to happen upon a wishing well,
A genie, a goldfish, you know now the tale,
Then I think I know what we would’ve said:
Stop that vicious cycle, that unending hell

of new versions, new frameworks, new paradigms
new ecosystems, new crackers' attacks,
new changes in AWS, Azure, new cloud,
new languages, new tools or new updates that
like Intellij’s, every quarter now
make me wonder what’ll break this time?

The list does go on, but you know IT now,
The question is where YOU fit in my friend,
What’s your learning path and how
It shall bring you pleasure with a bit of pain

To push you forward, to 'skilled' not experienced,
To broaden your deadly comfort zone
So that - when faced with the unexpected -
you’re able to challenge it as well as bemoan

Nowadays education systems teach passivity,
That’s perfect for killing your curiosity,
Who’s in charge of your learning? Your manager or you?
Does your job tell you to eat or sleep too?

RPGs are great because it’s up to you,
Where to put your skill points or max attributes
IRL you should be doing this too
Play the long game - and that means: YOU CHOOSE.

Where are your Shu-Ha-Ris, what’s your T composed of,
Have you codified your knowledge, where’s the bazaar you work on,
What are you curious of, where your masteries lie,

'Tis about your buccaneer-scholar path.

by yours truly

Galaxies far, far away

Sun 2ndLargestStar

Will you wait?

  1. for a meteor or a supernova?

    1. to end the Flash "galaxy",

    2. or applets or CORBA "planets",

    3. or Java EE / app server "solar system" or …​?

  2. jump planets / systems / galaxies, even if just for fun


  1. plan your learning in advance - you choose

  2. learn enough to jump ship if needed

  3. learn enough to use the good bits from other places

Yet Another

Of your own work: A humorous allusion often used in titles to acknowledge that the topic is not original, though the content is.
Of others' work: Describes something of which there are already far too many.
— Jargon file



yet another compiler-compiler (a UNIX parser-generator)

Web servers - my first YA


YA Web Server (an Erlang web-server)

Apache / IIS, Tomcat, TomEE, Nginx
Undertow, Jetty, Netty*, VertX*, NodeJS*, YAWS, Mochiweb, Mongrel, Passenger*…​


YA Resource Negotiator (Hadoop)


YA indexer (a search engine / indexer)

Recent annoyance


YA Markup Language → YAML Ain’t Markup Language


YA Java Service Wrapper

Pleased to annoyed

  1. at first you’re pleased

  2. then you’re feeling reluctant, annoyed

  3. then you wonder "why it’s better than X"

  4. then you avoid and rationalize


  1. positive restraint - learn one, but well

  2. learn one among many, then apply to others when needed

  3. you do your Yet Another to learn it

    1. by doing

    2. and to codify the knowledge

A GEF training story

  1. email in November

  2. call in February

  3. training in August

  4. forgotten in November


    Graphical Editing Framework by Eclipse Foundation

We forget things

  1. we don’t use

  2. we don’t like

  3. we didn’t really made ours

Your brain’s "you get it" trap

  1. GEF training was forgotten in mere 2 months

  2. but is it really a trap?

  3. did I made that knowledge mine?

So far, this year I dabbled in

Java 12-15, Python 3, Flask+Jinja (Python), SQLite, few microframeworks like Spark (Java)
Conflict resolution, boosting team initiative, leading by stepping away, microexpressions, learning and teaching
Remote everything (tools, practices, interaction); COVID-related stuff (epidemiology, viruses, WHO’s inner workings),
Local events, geopolitics, gender
Poetry (you’ve experienced that one yourself), songs, Tolkien’s Arda, …​

What will I forget?


is key in this century. It’s not about reading and writing now, it’s about re-learning.

What helps?

  1. everything’s a narrative, stories, alegories

  2. make a base of resources for deeper learning and re-learning

  3. devise practice: examples repo, doctest, experiment!

  4. blog to not forget, use personal wiki, mind-map, write

  5. alternate: learn - do - learn - …​

  6. set aside some time: TO WASTE IT!


Codify your knowledge

  1. when you’re at your local peak

  2. apprentice has 'proof of mastery'

    1. master tools

    2. master work

  3. to get back to, to "jump in" again

  4. what’s interesting - follow your curiosity

  5. following the experts - mimicry, skill-stealing, mentoring

climbed it all
Advanced beginner’s perspective. Credits: Eugene Yan

To Do!

  1. Deliberate practice

  2. Beginner’s mind!

    1. Where senior says no way, send in a junior!

  3. Find your experts to follow and steal from

  4. Read deliberately, selectively, continuously

    1. drop what doesn’t work / interest you


  1. JAlba, JCrete, Devoxx BE, Code 1, Strange Loop…​

  2. Google JAM / Summer of Code / AI, Challenge 24 for more

  3. Codility, TopCoder, Project Euler, SPOJ, Hackerrank, dozens of others

    1. also a great entry to competitive programming


  1. Not bad! Some of them are really well structured and pass the well-chosen knowledge!

  2. Some formely famous 'transformed' into pure business now (with steps like associate programmer or business engineer)


  1. Guide: Writing Testable Code

  2. The CAP Theorem

  3. MapReduce

  4. Working Effectively with Legacy Code

  5. Fallacies of Distributed Computing Explained

Software Crafstmanship Kraków is now remote! Also, see Papers we Love

Technical and algorithmic

  1. Memory Barriers

  2. One VM To Rule Them All

  3. Conflict-free Replicated Data Types

  4. Hierarchical Temporal Memory

  5. B-Queue

  6. BitCoin

Or from software engineering

  1. Domain Driven Design Quickly

  2. DDD Sagas

  3. Mock Roles not Objects

  4. Out of the Tar Pit

Distributed programming

  1. Life beyond Distributed Transactions

  2. Warp: Lightweight Multi-Key Transactions…​

  3. Access Path Selection in a RDBMS

  4. Differential Synchronization

  5. BASE - an ACID alternative 2PC ACID CAP

  6. A Note on Distributed Computing

  7. Raft

The Paxos Saga

  • Time, Clocks and the Ordering of Events in a Distributed System

  • Reaching Agreement in the Presence of Faults

  • The Byzantine Generals Problem

  • FLP Impossibility Result

  • The Part-Time Parliament

  • Paxos Made Simple (…​ and 7 more)


  1. read deliberately and voraciously

  2. find (conferences, other events) people to learn from and mimic

  3. practice your skills: not naively, but deliberately


  1. architects have their buildings, bridges, famous designs

    1. bad bridge falls - architect falls with it

    2. programmer hangs with his program? :P

  2. we have no fame - build your rep!

    1. fame comes from our skills

    2. be another Torvalds!

Every good project

starts from a personal itch

(paraphrased from CatB)


  1. Cathedral and the Bazaar - E.S. Raymond

  2. Secrets of a Buccaneer-Scholar - James Bach

  3. Peak - Anders Ericsson, Robert Pool

  4. Pragmatic Thinking and Learning - Andy Hunt

remember other green slides!


question mark