![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676911/nodeconfBarcelona.png)
SOFTWARE CRAFTSMANSHIp
workshop
Hola !!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
ouadie lahdioui
IT Consultant >
@lahdiouiouadie
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/4154620/OLA_9.png)
WHO WORK IN AGILE environment ?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683927/guy1.png)
What is software craftsmanship ?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3679313/Capture_d_e_cran_2017-04-06_a__21.58.53.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
coding dojo ?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3682669/karate-punch-icon-e1432126547434.png)
Are you ready for A ...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
Is a team practice format that accelerates knowledge transfer and sharing skills between team members, it is also a way of learning by applying various techniques
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
to do pair programming
So, Choose your partner
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
A social skill to create the code by two people working together on a single computer
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3682796/fullstack-infographic-week-9-pair-programming-01-1.jpg)
this is you >
> is your PARTNER
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
the next sprint
but
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3682796/fullstack-infographic-week-9-pair-programming-01-1.jpg)
your PARTNER will be the >
> will be you
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
write test first
Rule # 1 : You should
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
write test
write code
refactor
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3682862/images.png)
NAVIGATOR <> Driver
Test driven development (TDD)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
to give feedback to a lucky pair
Rule # 2 : In the end
we will do code review
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
let's go
<coding time>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
a two player game in which the players take turns dropping coloured tokens into a 7x6 grid of slots. The aim of the game is to be the first to form a horizontal, vertical, or diagonal line of four discs
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683869/connect-4-grid-10222-0-1415972128000.jpg)
kata : connect four
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683874/part1.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683875/part2.png)
See the test cases > https://agilekatas.co.uk/katas/ConnectFour-Kata
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
code review
</>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
A systematic examination of source code to find and FIX mistakes overlooked in the initial development phase and improving both the quality of software and the developers' skills
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
some PRINCIPLES
you SHOULD keep in mind
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
keep your code solid
PRINCIPLE # 1
S - single responsability
o - open closed
l - liskov substitution
i - interface segregation
D - dependency inversion
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
Don't live with broken windows
PRINCIPLE # 2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683848/images.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
YOU AREN'T GONNA TO NEED IT
PRINCIPLE # 3 : YAGNI
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
KEEP IT SIMPLE, STUPID
PRINCIPLE # 4 : KISS
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
DON'T REPEAT YOURSELF
PRINCIPLE # 4 : DRY
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
THE BOY SCOUT RULE
PRINCIPLE # 6 : BSR
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683096/3aa5ffb74581cffdb79cf2d186240bbc_-cartoon-boy-scout-clip-art-boy-scouts-clipart-png_382-579.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
Egoless Programming
I'M IN WITH THIS ONE
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3683075/1f60d.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
3) Understand and accept that you will make mistakes
4) You are not your code
5) Treat people who know less than you with respect, deference, and patience
1) Critique code instead of people – be kind to the coder, not to the code
2) No matter how much "karate" you know, someone else will always know more
6) The only true authority stems from knowledge, not from position
7) Don't be "the guy in the room"
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
9) The only constant in the world is change
10) Fight for what you believe, but gracefully accept defeat
8) Don't rewrite code without consultation
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676983/bcn-fondo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676977/Capture_d_e_cran_2017-04-06_a__10.15.46.png)
@lahdiouiouadie
Thanks for having me >
![](https://s3.amazonaws.com/media-p.slid.es/uploads/381089/images/3676911/nodeconfBarcelona.png)
Software Craftsmanship workshop
By Ouadie LAHDIOUI
Software Craftsmanship workshop
NodeConf Barcelona 2017
- 1,649