Software Craftsmanship – Growing a Technical Culture
victor.rentea@gmail.com ♦ ♦ @victorrentea ♦ VictorRentea.ro
Hi, I'm Victor Rentea
Java Champion – drinking since 2006
Trainer – 3000+ devs in 80+ companies
Speaker – Conferences & Meetups
Hibernate
Spring FP
Java Performance Secure Coding
Reactive
Architecture Clean Code Unit Testing
(paid stuff)
Hibernate
Spring Advanced FP
Architecture Clean Code Unit Testing
Masterclass
Company
Training
Video
Lessons
@victorrentea
VictorRentea.ro
victorrentea@gmail.com
Java Performance Secure Coding
Reactive
victorrentea.ro/community
Join My
Community
Bucharest Software Craftsmanship Community (4000+ devs)
YouTube
Channel
youtube.com/user/vrentea
VictorRentea.ro
5
A bit of history
VictorRentea.ro
6
At the beginning there were only Craftspersons
VictorRentea.ro
7
They had to do everything
Most were women
But then, it all changed…
Craftsmanship
Craftsperson
VictorRentea.ro
8
A Gentle Introduction to
Conflicts and Toxicity in IT
VictorRentea.ro
9
VictorRentea.ro
10
VictorRentea.ro
11
VictorRentea.ro
12
Admins vs Devs
Admins
hate change
Developer’s job is
to change things
Developers without admin rights on their machines
Restricted software, email blocking
😶 Zip>Encrypt>Base64encode>Email
Aberrations
VictorRentea.ro
13
VictorRentea.ro
14
DBA vs Dev
DBA = profession invented in 2000s by Oracle
“Keep everything IN DB” “DB is a detail”
Conservative A (worse) Extreme:
Let's rewrite it all in noSQL
VictorRentea.ro
15
Developer Island
Tester
DBA
SysAdmin
But even developers...
VictorRentea.ro
16
Isolated Communities
Developer Island
VictorRentea.ro
17
Isolated Communities
Open vs Proprietary Languages
Static vs Dynamic Languages
Game studios
NodeJS devs reinventing a lot
VictorRentea.ro
18
Since 2010s:
VictorRentea.ro
19
If you ask frontends...
VictorRentea.ro
20
If you ask frontends...
VictorRentea.ro
21
If you ask backends...
VictorRentea.ro
22
The truth:
VictorRentea.ro
23
VictorRentea.ro
24
The Triad of Waste
Android + iOS + Web
Companies reimplement similar UI 3 times
Different teams 3x more bugs
VictorRentea.ro
25
Sometimes, even in the same system…
VictorRentea.ro
26
Functional Programming
Rocks 🤘
Sometimes, even in the same system…
VictorRentea.ro
27
Choose
One
27
Procedural
Object-Oriented
Functional
Programming
Each has its pros/cons: master all and mix them to KISS
VictorRentea.ro
28
FE Dev
Tester
DBA
SysAdmin
BE Dev
iOS Dev
Android Dev
FP Dev
OOP Dev
VictorRentea.ro
29
All of this means one thing
VictorRentea.ro
30
Overspecialization
VictorRentea.ro
31
Overspecialization
Slow projects
Large teams
Low truck factor
# developers that if you loose,
the project has serious problems
leads to
VictorRentea.ro
32
Overengineering
(reinventing the wheel)
VictorRentea.ro
33
Solution?
VictorRentea.ro
34
Collective Code Ownership
You learn all aspects of your project
You can help in any area
You don’t delegate
You control
You have Power Responsibility
VictorRentea.ro
35
Full-stack Developer
VictorRentea.ro
36
Don't aim to become a
Full-Stack Expert
∄
VictorRentea.ro
37
A Java developer looking at
npm install
https://twitter.com/garrows/status/1065217184643768320
VictorRentea.ro
38
The "T" Shaped Developer
eam
starting point:
"I" Shaped
Developer
VictorRentea.ro
39
Why Full-Stack?
Technologies change; learning keeps you flexible
Better welded teams
You are more useful, adaptable, thu$ earn mor€
Learning calms down egos
VictorRentea.ro
40
Full-Stack Life
You fix the real problem, not patch over it
You keep the code simple (KISS)
You pick the right tools for the job
You become pragmatic
But you have to learn
VictorRentea.ro
41
VictorRentea.ro
42
“What to Learn next?”
Master technologies of your current project
Deepest learning happens on the job
Study hard the bugs🐜 you find
Keep looking for alternative designs
VictorRentea.ro
43
but that's Technical
VictorRentea.ro
44
Other walls to tear down?
VictorRentea.ro
45
No Ambiguity Can Pass Through Them
Humans – Developers – Machine
Developers are special
VictorRentea.ro
48
Developer
Client
Intermediary
Dialog
Negotiation
VictorRentea.ro
52
VictorRentea.ro
54
2001
https://agilemanifesto.org/
VictorRentea.ro
55
Are you Agile?
VictorRentea.ro
56
Are you Agile?
Yeah, but, you know, we do SCRUM…
A kind of.. We have sprints
Agileish, we move fast
Transitioning...
What is Agile ?
The Developer
Velocity
Late Changes
The Developer
Business
VictorRentea.ro
59
Scrum
Pushed on developers
Management Buzzword
VictorRentea.ro
61
Where is
Technical Excellence?
VictorRentea.ro
62
Software Craftsmanship
restores the focus on the lost technical practices
VictorRentea.ro
63
Software Craftsmanship
means professionalism
64 © VictorRentea.ro
a training by
I will NOT
ship SH*T
I will only push
with reliable tests
I will not harm
a colleague
VictorRentea.ro
65
https://manifesto.softwarecraftsmanship.org/
2008
VictorRentea.ro
66
2008
https://manifesto.softwarecraftsmanship.org/
VictorRentea.ro
67
Skills of a Craftsperson
● Talk to customers directly
● Understand the real business problem
● Propose solutions (not only coding)
● Break the problem into small user-centric stories
● Design UI flow
● Write working code
● Write automated tests to avoid regressions
● Evolve the system architecture by refactoring
● Deploy the system to the end users (“DevOps”)
Classic software developer
68 © VictorRentea.ro
a training by
What's my next step?
(
(some ideas)
VictorRentea.ro
69
You have a bug.
You reproduce it.
You fix it => 😊.
Write a failing Unit Test 🔴 for it! 💪
... Then, you fix it è🟢 test
VictorRentea.ro
70
DEBUGGING SUCKS
TESTING ROCKS
VictorRentea.ro
71
(your CI pipeline)
VictorRentea.ro
73
The Lack of Refactoring
VictorRentea.ro
74
Underdesign
Emerging Architecture that never emerges
Lack of Knowledge
Lack of Skills
è Lack of Practice ç
VictorRentea.ro
75
Problem
The performance of your daily
programming activities does not give
you room to learn by making mistakes.
It’s as if you’re always on stage.
VictorRentea.ro
76
Developers at Work
VictorRentea.ro
77
But who owns
your career?
They don't give me
time to learn.
I see.
😧
VictorRentea.ro
78
Reflect on your how you Work
VictorRentea.ro
79
VictorRentea.ro
80
VictorRentea.ro
81
81
Coding Kata
No Rush
No Risks
Aim for Perfection
Reflect on
HOW you work
= Practice
Not Production Code
Refactoring
Test-Driven Development
Testing Legacy Code
VictorRentea.ro
82
Coding Katas
https://kata-log.rocks/refactoring
https://github.com/victorrentea/kata-trivia-java
Practice Alone
VictorRentea.ro
83
Pair Programming
Mob Programming
Practice Together
VictorRentea.ro
90
Challenge Yourself
Coding Katas: Refactoring, Testable Design
New Language: TypeScript, Java, Kotlin, SQL, C#, Clojure, Swift, ...
Communication: Explain stuff to [non-technical] others
Reasoning: Start a pet project, contribute to Open-Source
Economics: Think about starting a business
VictorRentea.ro
91
But all this requires
Continuous Learning
VictorRentea.ro
92
Growing a Culture of Learning
Start a book📚 club : debate 1 chapter / week
Brown-bag session 🍔 – present your problem
Rotate Project ↔
Hackathons 🌙 – technical or business
Group Code Reviews 👨🦰👨🦱🧔🧔‍‍‍‍‍
Establish Communities of Practice (eg React ⚛ Guild)
Motivate people to share/teach others
Join a Craftsmanship Community http://victorrentea.ro/community
🌟Pair-Programming: planned or ad-hoc
As a senior/lead/head/manager/CTO:
VictorRentea.ro
100
Craftsmanship means more than just loving to code
But it usually starts with that
VictorRentea.ro
101
Juniors are eager to write more code
Seniors can’t wait to delete it
VictorRentea.ro
102
VictorRentea.ro
103
We don’t just write code
We solve problems
VictorRentea.ro
104
Take-Aways 🍔
• Study Code Smells, Clean Code & Refactoring
• Write 1000 unit tests
• Solve a Kata twice https://kata-log.rocks/
• Pair/Mob Program start with 2h/week
• "I" shaped to "T" shaped : fuller-stack
• Engage customer more
VictorRentea.ro
105
First Half Chapter 3
+ links
Exercises
Entry-Level
More books: https://victorrentea.ro/blog/books-about-technical-culture/
VictorRentea.ro
106
Thank you!
Let's keep in touch
Training for you: victorrentea.teachable.com ♦ For your company: VictorRentea.ro
Join the largest
Software Craftsmanship Community
in Eastern Europe
victorrentea.ro/community

Software Craftsmanship @Code Camp Festival 2022.pdf