Slide 1

Slide 1 text

Being an Apprentice Software CraftER erkan_erol_

Slide 2

Slide 2 text

erkan_erol_ Co-organizer ScTurkey Software Developer SAP DCT

Slide 3

Slide 3 text

DISCLAIMER This presentation contains so much copy/paste content from some conference talks, blog posts and books. References are available in the speaker notes. bit.ly/erkanerol-apprenticeship Opinions are my own and not the views of my employer.

Slide 4

Slide 4 text

Apprenticeship Software Development Craftsmanship

Slide 5

Slide 5 text

SOFTWARE DEVELOPMENT as a profession

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

The Greek physician Hippocrates (460–370 BC) Hippocratic Oath MEDICINE: patient confidentiality

Slide 8

Slide 8 text

Cicero Denounces Catiline, fresco by Cesare Maccari 1882–1888 Code of Hammurabi 1754 BCE LEGAL: presumption of innocence

Slide 9

Slide 9 text

DO WE HAVE SUCH PROFESSION RULES?

Slide 10

Slide 10 text

DO WE HAVE CERTAIN PRACTICES WHICH EVERYBODY ALWAYS FOLLOWS?

Slide 11

Slide 11 text

IS “SOFTWARE DEVELOPMENT” a PROFESSION?

Slide 12

Slide 12 text

Let’s take a closer look

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

1936

Slide 15

Slide 15 text

universal computing machine ● m-configurations ● states ● a tape ● symbols ● scanned from a square ● printed to a square

Slide 16

Slide 16 text

1939: THE BOMBE

Slide 17

Slide 17 text

1942: COLLOSUS

Slide 18

Slide 18 text

1945: MERCURY DELAY LINES

Slide 19

Slide 19 text

1945: CRT MEMORY

Slide 20

Slide 20 text

1945: Automatic Computing Engine

Slide 21

Slide 21 text

1945: TURING WRITES CODE ● In binary. (base 32 reversed) ● Uses integer “add” and logical “not” ● Invents subroutine ● Invents code stack ● Invents floating point

Slide 22

Slide 22 text

1945 “We shall need a great number of mathematicians of ability because there will probably be a good deal of work of this kind to be done.”

Slide 23

Slide 23 text

1945 “One of our difficulties will be the maintenance of an appropriate discipline, so that we do not lose track of what we are doing”

Slide 24

Slide 24 text

1945 # of computers in the world: n n ∈ N, 1 < n < 10

Slide 25

Slide 25 text

1951: Core MEMORY

Slide 26

Slide 26 text

1950S

Slide 27

Slide 27 text

1953 FORTRAN

Slide 28

Slide 28 text

1912-1954

Slide 29

Slide 29 text

1958: LISP FUNCTIONAL PROGRAMMING

Slide 30

Slide 30 text

1954 - 1960

Slide 31

Slide 31 text

1960 # of computers in the world: 100n n ∈ N, 1 < n < 10

Slide 32

Slide 32 text

1960 # of programmers in the world: 1000n n ∈ N, 1 < n < 10

Slide 33

Slide 33 text

1950S Programmers were drawn from: ● Engineers ● Scientists ● Mathematicians

Slide 34

Slide 34 text

TRANSISTORS

Slide 35

Slide 35 text

1965

Slide 36

Slide 36 text

1965 # of computers in the world: 10,000n n ∈ N, 1 < n < 10

Slide 37

Slide 37 text

1965 # of programmers in the world: 100,000n n ∈ N, 1 < n < 10

Slide 38

Slide 38 text

1965 ● Not Enough: Engineers, Scientists, Mathematicians ● No CS Grads ● Programmers drawn from: Best and brightest Accountants, Planners, etc.

Slide 39

Slide 39 text

1965 Though not mathematicians, they were. They are experienced, disciplined and professionals. Turing would likely have approved.

Slide 40

Slide 40 text

1966 IBM SELLS 1000 S/360 EVERY MONTH

Slide 41

Slide 41 text

1966 - SIMULA-67 OLE-JOHAN DAHL KRISTEN NYGARD OBJECT ORIENTATION

Slide 42

Slide 42 text

1968 - GOTO EDSGER DIJKSTRA - STRUCTURED PROGRAMMING

Slide 43

Slide 43 text

1968 - C aND UNIX KEN THOMPSON DENNIS RITCHIE

Slide 44

Slide 44 text

1970

Slide 45

Slide 45 text

1970 # of computers in the world: 100,000n n ∈ N, 1 < n < 10

Slide 46

Slide 46 text

1970 # of programmers in the world: 1,000,000n n ∈ N, 1 < n < 10

Slide 47

Slide 47 text

Now Remember ● Up to now programmers were disciplined professionals. ● They didn’t need a lot of management ● They knew how to manage their time, communicate, and work together.

Slide 48

Slide 48 text

MIRACLES! ● IBM 360 Virtual Memory OS ● NASA: Mercury, Gemini, Apollo ● Structured, Functional, Object-Oriented ● Fortran, Cobol, Algol, Lisp, C, Unix

Slide 49

Slide 49 text

1970s Tens of thousands of new CS & EE Grads They were all young and almost all male.

Slide 50

Slide 50 text

1970- 1995 Number of programmers doubles every five years.

Slide 51

Slide 51 text

1970- 1995 It means Half of them have less than five years experience!

Slide 52

Slide 52 text

1970s-1990s foundational theories and practices of software engineering came into being

Slide 53

Slide 53 text

1970s-1990s The idea was to equate software engineering with physical engineering and borrow as much as possible from the design and building actual.

Slide 54

Slide 54 text

WATERFALL

Slide 55

Slide 55 text

Software Crisis ● over-budget ● over-time ● inefficient ● low quality ● does not meet requirements ● difficult to maintain ● never delivered

Slide 56

Slide 56 text

1975 -> 1982 -> 1995

Slide 57

Slide 57 text

NO SILVER BULLET - 1986

Slide 58

Slide 58 text

1990s: APPLICATION DELIVERY LAG

Slide 59

Slide 59 text

1995 Original cohort of disciplined professionals retires. The first wave of career programmers comes of age (well over 40). They foresee the need for change.

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

2001: Snowbırd

Slide 64

Slide 64 text

AGILE MANIFESTO

Slide 65

Slide 65 text

RAPID ADOPTION

Slide 66

Slide 66 text

2003

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

CERTIFICATION

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

CRAFTSMANSHIP as an ideology

Slide 72

Slide 72 text

Turing: Discipline and Ability Agile was about Discipline. XP was about Craftsmanship.

Slide 73

Slide 73 text

Agile Business Practices Craftsmanship Technical Practices AGILE SPLIT

Slide 74

Slide 74 text

Irony A goal for Agile: Healing of the divide between business and programming. - Kent Beck

Slide 75

Slide 75 text

“lose track of what we are doing” - Turing

Slide 76

Slide 76 text

AGILE 2008: CRAFTSMANSHIP OVER CRAP

Slide 77

Slide 77 text

DEC 2008

Slide 78

Slide 78 text

MAR 2009

Slide 79

Slide 79 text

AGILE vS CRAFTSMANSHIP building the right thing vs building the thing right

Slide 80

Slide 80 text

MOVEMENT

Slide 81

Slide 81 text

Software Craftsmanship is “an ideology or a mindset”

Slide 82

Slide 82 text

Software Craftsmanship is “a long journey to mastery”

Slide 83

Slide 83 text

Software Craftsmanship is “about professionalism in software development.”

Slide 84

Slide 84 text

Software Craftsmanship is not ● Beautiful code ● Test-Driven Development ● Self-selected group of people ● Specific technologies or methodologies ● Certifications ● Religion

Slide 85

Slide 85 text

UNCLE BOB We must Grow Up Define our profession Choose our practices and disciplines Reunify Agile / Craftsmanship

Slide 86

Slide 86 text

Business doesn’t understand us They cannot evaluate, endorse or approve any technical practices.

Slide 87

Slide 87 text

WE HAVE TO SAVE OUR PROFESSION!

Slide 88

Slide 88 text

APPRENTICESHIP as an attitude

Slide 89

Slide 89 text

APPRENTICES IN THE WILD

Slide 90

Slide 90 text

THEY ARE PASSIONATE!

Slide 91

Slide 91 text

NOT A 9 to 5 professıon

Slide 92

Slide 92 text

No content

Slide 93

Slide 93 text

No content

Slide 94

Slide 94 text

No content

Slide 95

Slide 95 text

No content

Slide 96

Slide 96 text

You can not do this job with laziness (The story of Fatih Arslan is continuing)

Slide 97

Slide 97 text

THEY ARE LEARNING LIKE CRAZY ● Books ● Blogs ● Videos ● Conferences ● Meetups

Slide 98

Slide 98 text

WHAT IS THE PROBLEM?

Slide 99

Slide 99 text

No content

Slide 100

Slide 100 text

THE SCIENCE BEHIND THE BEAN

Slide 101

Slide 101 text

COFFEE LOVERS KNOW COFFEE

Slide 102

Slide 102 text

The second law of thermodynamics: the total entropy of an isolated system can never decrease over time. chemists know “MATTER”

Slide 103

Slide 103 text

THEY KNOW “SOFTWARE” https://www.youtube.com/watch?v=jWj-cMGQMeA

Slide 104

Slide 104 text

THEY KNOW PRINCIPLES ● Inversion of Control ● Cohesion / Coupling ● Separation of Concerns ● KISS ● SOLID ● Law of Demeter ● Orthogonality

Slide 105

Slide 105 text

THEY KNOW TECHNIQUES

Slide 106

Slide 106 text

THEY HAVE CONCRETE SKILLS C++ UNIX JAVA HTTP GO JS ECLIPSE VIM k8s VSCODE RAILS SPRING DOCKER GIT REACT

Slide 107

Slide 107 text

THEY DO PRACTICE

Slide 108

Slide 108 text

HOW TO PRACTICE? ● CHALLENGE ● REPEAT ● FEEDBACK

Slide 109

Slide 109 text

HOW TO PRACTICE? NO PRESSURE Do not complete the task, master it!

Slide 110

Slide 110 text

codekata.com

Slide 111

Slide 111 text

NOT ALONE!

Slide 112

Slide 112 text

No content

Slide 113

Slide 113 text

No content

Slide 114

Slide 114 text

THEY HAVE SOFT SKILLS

Slide 115

Slide 115 text

No content

Slide 116

Slide 116 text

SOFTWARE DEVELOPMENT requıres effectıve communıcatıon skılls!

Slide 117

Slide 117 text

No content

Slide 118

Slide 118 text

THEY ARE HUMBLE!

Slide 119

Slide 119 text

Egoless Programming ● You are not your code. ● Critique code instead of people – be kind to the coder, not to the code. ● Treat people who know less than you with respect, deference, and patience. ● Fight for what you believe, but gracefully accept defeat.

Slide 120

Slide 120 text

The Humble Programmer “The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.” - Edsger W. Dijkstra

Slide 121

Slide 121 text

THEY OWN THEIR CAREER!

Slide 122

Slide 122 text

No content

Slide 123

Slide 123 text

THEY BUILD COMMUNITIES

Slide 124

Slide 124 text

No content

Slide 125

Slide 125 text

No content

Slide 126

Slide 126 text

INTERACTION SAVES YOU!

Slide 127

Slide 127 text

THEY HAVE PET PROJECTS

Slide 128

Slide 128 text

open source is eating the world opensource.guide

Slide 129

Slide 129 text

THEY ARE HonesT and BRAVE

Slide 130

Slide 130 text

PROFESSIONALISM, PRAGMATISM, PRIDE

Slide 131

Slide 131 text

WRAP UP

Slide 132

Slide 132 text

THANKS FOR LISTENING bit.ly/erkanerol-apprenticeship