Slide 1

Slide 1 text

A SYMFONY LIVE PRODUCTION A SYMFONY LIVE PRODUCTION BUILDING BETTER BUILDING BETTER DEVELOPERS DEVELOPERS ROWAN MEREWOOD PRESENTS ROWAN MEREWOOD PRESENTS

Slide 2

Slide 2 text

BIG PHILOSOPHICAL QUESTIONS BIG PHILOSOPHICAL QUESTIONS

Slide 3

Slide 3 text

BIG PHILOSOPHICAL QUESTIONS BIG PHILOSOPHICAL QUESTIONS “ “Who am I and why am I here?” Who am I and why am I here?” Software Engineer and Team Lead Software Engineer and Team Lead at at Inviqa Inviqa, Sheffield , Sheffield

Slide 4

Slide 4 text

BIG PHILOSOPHICAL QUESTIONS BIG PHILOSOPHICAL QUESTIONS “ “Who am I and why am I here?” Who am I and why am I here?” Twitter: Twitter: @rowan_m @rowan_m Blog: Blog: http://merewood.org http://merewood.org GitHub: GitHub: https://github.com/rowan-m https://github.com/rowan-m Joind.in: Joind.in: http://joind.in/user/view/118 http://joind.in/user/view/118 IMDb: IMDb: http://www.imdb.com/name/nm1412348 http://www.imdb.com/name/nm1412348 Google+: Google+: https://plus.google.com/u/1/111813845727005160164 https://plus.google.com/u/1/111813845727005160164

Slide 5

Slide 5 text

SELF IMPROVEMENT SELF IMPROVEMENT

Slide 6

Slide 6 text

SELF IMPROVEMENT SELF IMPROVEMENT “ “I am a massive tool.” I am a massive tool.” Let's get that one out of the way right at the start Let's get that one out of the way right at the start

Slide 7

Slide 7 text

OUR SAD AVERAGE DEV OUR SAD AVERAGE DEV

Slide 8

Slide 8 text

OUR SAD AVERAGE DEV OUR SAD AVERAGE DEV “ “Perfection is achieved, not when Perfection is achieved, not when there is nothing more to add, but there is nothing more to add, but when there is nothing left to take when there is nothing left to take away.” away.” Antoine de Saint-Exupéry Antoine de Saint-Exupéry

Slide 9

Slide 9 text

NO CAPES NO CAPES

Slide 10

Slide 10 text

NO CAPES NO CAPES S S

Slide 11

Slide 11 text

NO CAPES NO CAPES You're never going to be the best at everything You're never going to be the best at everything You don't need to burn out trying You don't need to burn out trying Other people will have to save you Other people will have to save you S S

Slide 12

Slide 12 text

YOUR EDITOR IS PART OF YOU YOUR EDITOR IS PART OF YOU

Slide 13

Slide 13 text

YOUR EDITOR IS PART OF YOU YOUR EDITOR IS PART OF YOU Tools are there to achieve goals Tools are there to achieve goals You are a professional, You are a professional, your tools are complicated your tools are complicated

Slide 14

Slide 14 text

YOUR EDITOR IS PART OF YOU YOUR EDITOR IS PART OF YOU Tools are there to achieve goals Tools are there to achieve goals You are a professional, You are a professional, your tools are complicated your tools are complicated

Slide 15

Slide 15 text

YOUR EDITOR IS PART OF YOU YOUR EDITOR IS PART OF YOU Tools are there to achieve goals Tools are there to achieve goals You are a professional, You are a professional, your tools are complicated your tools are complicated ^ ^ EMACS Hand EMACS Hand

Slide 16

Slide 16 text

HOLE HAWG HOLE HAWG

Slide 17

Slide 17 text

HOLE HAWG HOLE HAWG “ “I never blamed the Hole Hawg; I blamed myself. The Hole I never blamed the Hole Hawg; I blamed myself. The Hole Hawg is dangerous because it does exactly what you tell it to. Hawg is dangerous because it does exactly what you tell it to. Now I view them all with such contempt that I do not even Now I view them all with such contempt that I do not even consider them to be real drills--merely scaled-up toys consider them to be real drills--merely scaled-up toys designed to exploit the self-delusional tendencies of designed to exploit the self-delusional tendencies of soft-handed homeowners who want to believe that they have soft-handed homeowners who want to believe that they have purchased an actual tool” purchased an actual tool” Neal Stephenson Neal Stephenson http://www.team.net/mjb/hawg.html http://www.team.net/mjb/hawg.html

Slide 18

Slide 18 text

VIM VIM

Slide 19

Slide 19 text

VIM VIM

Slide 20

Slide 20 text

VIM VIM

Slide 21

Slide 21 text

VIM VIM

Slide 22

Slide 22 text

VIM VIM

Slide 23

Slide 23 text

VIM VIM

Slide 24

Slide 24 text

DELIBERATE PRACTICE DELIBERATE PRACTICE

Slide 25

Slide 25 text

DELIBERATE PRACTICE DELIBERATE PRACTICE

Slide 26

Slide 26 text

DELIBERATE PRACTICE DELIBERATE PRACTICE Kata ( Kata ( 型 型 or or 形 形 literally: "form") literally: "form") Deliberate, controlled, repeated Deliberate, controlled, repeated

Slide 27

Slide 27 text

DELIBERATE PRACTICE DELIBERATE PRACTICE Kata ( Kata ( 型 型 or or 形 形 literally: "form") literally: "form") Deliberate, controlled, repeated Deliberate, controlled, repeated Code Kata – Code Kata – Dave Thomas Dave Thomas http://codekata.pragprog.com/2007/01/code_kata_backg.html http://codekata.pragprog.com/2007/01/code_kata_backg.html TDD Kata – TDD Kata – Roy Osherove Roy Osherove http://osherove.com/tdd-kata-1/ http://osherove.com/tdd-kata-1/

Slide 28

Slide 28 text

Create a simple String calculator with a method: Create a simple String calculator with a method: int Add(string numbers) int Add(string numbers) 1. 1. The method can take 0, 1 or 2 numbers, and will return their The method can take 0, 1 or 2 numbers, and will return their sum (for an empty string it will return sum (for an empty string it will return 0 0) for example “” or “ ) for example “” or “1 1” or ” or “ “1,2 1,2” ” 2. 2. Start with the simplest test case of an empty string and move to Start with the simplest test case of an empty string and move to 1 and two numbers 1 and two numbers 3. 3. Remember to solve things as simply as possible so that you Remember to solve things as simply as possible so that you force yourself to write tests you did not think about force yourself to write tests you did not think about 4. 4. Remember to refactor after each passing test Remember to refactor after each passing test TDD KATA TDD KATA

Slide 29

Slide 29 text

TDD KATA TDD KATA

Slide 30

Slide 30 text

TDD KATA TDD KATA

Slide 31

Slide 31 text

TDD KATA TDD KATA

Slide 32

Slide 32 text

MASTER YOUR CRAFT MASTER YOUR CRAFT

Slide 33

Slide 33 text

MASTER YOUR CRAFT MASTER YOUR CRAFT

Slide 34

Slide 34 text

MASTER YOUR CRAFT MASTER YOUR CRAFT Dreyfus model of skill acquisition Dreyfus model of skill acquisition Novice Novice ⬎ ⬎ Beginner Beginner ⬎ ⬎ Competent Competent ⬎ ⬎ Proficient Proficient ⬎ ⬎ Expert Expert

Slide 35

Slide 35 text

MASTER YOUR CRAFT MASTER YOUR CRAFT 1. 1.Innocent Innocent 2. 2.Exposed Exposed 3. 3.Apprentice Apprentice 4. 4.Practitioner Practitioner 5. 5.Journeyman Journeyman 6. 6.Master Master 7. 7.Researcher Researcher The Seven Stages The Seven Stages Of Expertise In Of Expertise In Software Engineering Software Engineering http://www.wayland-informatics.com/The%20Seven%20Stages%20of%20Expertise%20in%20Software.htm http://www.wayland-informatics.com/The%20Seven%20Stages%20of%20Expertise%20in%20Software.htm

Slide 36

Slide 36 text

MASTER YOUR CRAFT MASTER YOUR CRAFT http://www.wayland-informatics.com/The%20Seven%20Stages%20of%20Expertise%20in%20Software.htm http://www.wayland-informatics.com/The%20Seven%20Stages%20of%20Expertise%20in%20Software.htm Productivity Productivity Stage Stage 1 1 6 6 5 5 4 4 3 3 2 2 7 7

Slide 37

Slide 37 text

MEASURE WHAT MATTERS MEASURE WHAT MATTERS

Slide 38

Slide 38 text

MEASURE WHAT MATTERS MEASURE WHAT MATTERS X X

Slide 39

Slide 39 text

MEASURE WHAT MATTERS MEASURE WHAT MATTERS Measure systems Measure systems Don't measure people Don't measure people (they'll just mess it up) (they'll just mess it up) X X

Slide 40

Slide 40 text

MEASURE WHAT MATTERS MEASURE WHAT MATTERS Measure systems Measure systems Don't measure people Don't measure people (they'll just mess it up) (they'll just mess it up) A metric helps you achieve a goal, A metric helps you achieve a goal, don't chase the metric if you achieve the goal. don't chase the metric if you achieve the goal. X X

Slide 41

Slide 41 text

“ “T T” ” SHAPED PEOPLE SHAPED PEOPLE

Slide 42

Slide 42 text

“ “T T” ” SHAPED PEOPLE SHAPED PEOPLE

Slide 43

Slide 43 text

“ “T T” ” SHAPED PEOPLE SHAPED PEOPLE Valve Software – Employee Handbook Valve Software – Employee Handbook http://www.valvesoftware.com/jobs/ http://www.valvesoftware.com/jobs/

Slide 44

Slide 44 text

“ “T T” ” SHAPED PEOPLE SHAPED PEOPLE

Slide 45

Slide 45 text

NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

Slide 46

Slide 46 text

NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL If you're the smartest person in the room, If you're the smartest person in the room, you're probably not learning anything you're probably not learning anything

Slide 47

Slide 47 text

THE SHARPEST TOOL THE SHARPEST TOOL

Slide 48

Slide 48 text

THE SHARPEST TOOL THE SHARPEST TOOL John Carmack – id Software John Carmack – id Software

Slide 49

Slide 49 text

THE SHARPEST TOOL THE SHARPEST TOOL John Carmack – id Software John Carmack – id Software float float Q_rsqrt Q_rsqrt( ( float float number number ) ) { { long long i i; ; float float x2, y x2, y; ; const float const float threehalfs threehalfs = = 1.5F 1.5F; ; x2 x2 = = number number * * 0.5F 0.5F; ; y y = = number number; ; i i = = * * ( ( long long * * ) ) &y &y; ; // evil floating point bit level hacking // evil floating point bit level hacking i i = = 0x5f3759df 0x5f3759df - ( - ( i i >> >> 1 1 ); ); // what the fuck? // what the fuck? y y = = * * ( ( float float * * ) ) & &i i; ; y y = = y y * * ( ( threehalfs threehalfs - ( - ( x2 x2 * * y y * * y y ) ); ) ); // 1st iteration // 1st iteration // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed return return y y; ; } }

Slide 50

Slide 50 text

THE SHARPEST TOOL THE SHARPEST TOOL John Carmack – id Software John Carmack – id Software float float Q_rsqrt Q_rsqrt( ( float float number number ) ) { { long long i i; ; float float x2, y x2, y; ; const float const float threehalfs threehalfs = = 1.5F 1.5F; ; x2 x2 = = number number * * 0.5F 0.5F; ; y y = = number number; ; i i = = * * ( ( long long * * ) ) &y &y; ; // evil floating point bit level hacking // evil floating point bit level hacking i i = = 0x5f3759df 0x5f3759df - ( - ( i i >> >> 1 1 ); ); // what the fuck? // what the fuck? y y = = * * ( ( float float * * ) ) & &i i; ; y y = = y y * * ( ( threehalfs threehalfs - ( - ( x2 x2 * * y y * * y y ) ); ) ); // 1st iteration // 1st iteration // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed return return y y; ; } } http://www.beyond3d.com/content/articles/8/ http://www.beyond3d.com/content/articles/8/

Slide 51

Slide 51 text

NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

Slide 52

Slide 52 text

NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

Slide 53

Slide 53 text

NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL “ “It took working with John Carmack and other It took working with John Carmack and other high productivity programmers and admitting high productivity programmers and admitting that they were way more productive than me that they were way more productive than me before I really understood how much more before I really understood how much more productive I could be.” productive I could be.” Brian Hook Brian Hook http://bookofhook.blogspot.co.uk/2013/03/smart-guy-productivity-pitfalls.html http://bookofhook.blogspot.co.uk/2013/03/smart-guy-productivity-pitfalls.html

Slide 54

Slide 54 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

Slide 55

Slide 55 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

Slide 56

Slide 56 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE “ “The Dude abides.” The Dude abides.”

Slide 57

Slide 57 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE “ “The Dude abides.” The Dude abides.” Being passionate and authoritative Being passionate and authoritative is not the same as being an angry asshole is not the same as being an angry asshole

Slide 58

Slide 58 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE

Slide 59

Slide 59 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!”

Slide 60

Slide 60 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!” “ “To make matters worse, commit f0ed2ce840b3 is clearly total and utter To make matters worse, commit f0ed2ce840b3 is clearly total and utter CRAP even if it didn't break applications.” CRAP even if it didn't break applications.”

Slide 61

Slide 61 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!” “ “To make matters worse, commit f0ed2ce840b3 is clearly total and utter To make matters worse, commit f0ed2ce840b3 is clearly total and utter CRAP even if it didn't break applications.” CRAP even if it didn't break applications.” “ “Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious garbage and idiocy” garbage and idiocy”

Slide 62

Slide 62 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!” “ “To make matters worse, commit f0ed2ce840b3 is clearly total and utter To make matters worse, commit f0ed2ce840b3 is clearly total and utter CRAP even if it didn't break applications.” CRAP even if it didn't break applications.” “ “Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious garbage and idiocy” garbage and idiocy” “ “And you've shown yourself to not be competent in this issue, so I'll And you've shown yourself to not be competent in this issue, so I'll apply it directly and immediately myself.” apply it directly and immediately myself.”

Slide 63

Slide 63 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!” “ “To make matters worse, commit f0ed2ce840b3 is clearly total and utter To make matters worse, commit f0ed2ce840b3 is clearly total and utter CRAP even if it didn't break applications.” CRAP even if it didn't break applications.” “ “Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious garbage and idiocy” garbage and idiocy” “ “And you've shown yourself to not be competent in this issue, so I'll And you've shown yourself to not be competent in this issue, so I'll apply it directly and immediately myself.” apply it directly and immediately myself.” “ “Fix your f*cking "compliance tool", because it is obviously broken.” Fix your f*cking "compliance tool", because it is obviously broken.”

Slide 64

Slide 64 text

A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE FUCK UP!” Mauro, SHUT THE FUCK UP!” “ “To make matters worse, commit f0ed2ce840b3 is clearly total and utter To make matters worse, commit f0ed2ce840b3 is clearly total and utter CRAP even if it didn't break applications.” CRAP even if it didn't break applications.” “ “Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious garbage and idiocy” garbage and idiocy” “ “And you've shown yourself to not be competent in this issue, so I'll And you've shown yourself to not be competent in this issue, so I'll apply it directly and immediately myself.” apply it directly and immediately myself.” “ “Fix your f*cking "compliance tool", because it is obviously broken.” Fix your f*cking "compliance tool", because it is obviously broken.” Linus Torvalds Linus Torvalds https://lkml.org/lkml/2012/12/23/75 https://lkml.org/lkml/2012/12/23/75

Slide 65

Slide 65 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

Slide 66

Slide 66 text

ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE “ “There's a grocery store near my house that There's a grocery store near my house that I don't like. It's small, dark, and dirty, and it I don't like. It's small, dark, and dirty, and it just makes me uncomfortable. So I never go just makes me uncomfortable. So I never go there. It doesn't make me angry, it doesn't there. It doesn't make me angry, it doesn't offend me, it's just not a place I want to be; offend me, it's just not a place I want to be; there are other grocery stores around that I there are other grocery stores around that I like better. It's not worth my energy to try like better. It's not worth my energy to try and change the place.” and change the place.” Elizabeth Naramore Elizabeth Naramore http://naramore.net/blog/uncomfortable http://naramore.net/blog/uncomfortable

Slide 67

Slide 67 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD

Slide 68

Slide 68 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD

Slide 69

Slide 69 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD Being rational and accepting Being rational and accepting does not mean giving up your principles does not mean giving up your principles

Slide 70

Slide 70 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD Being rational and accepting Being rational and accepting does not mean giving up your principles does not mean giving up your principles Attack ideas, not people Attack ideas, not people

Slide 71

Slide 71 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD Being rational and accepting Being rational and accepting does not mean giving up your principles does not mean giving up your principles Deliver bad news early Deliver bad news early

Slide 72

Slide 72 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD Being rational and accepting Being rational and accepting does not mean giving up your principles does not mean giving up your principles Learn to say “no” Learn to say “no”

Slide 73

Slide 73 text

SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD Being rational and accepting Being rational and accepting does not mean giving up your principles does not mean giving up your principles Ask the DFQs Ask the DFQs

Slide 74

Slide 74 text

JOIN THE COMMUNITY JOIN THE COMMUNITY

Slide 75

Slide 75 text

JOIN THE COMMUNITY JOIN THE COMMUNITY

Slide 76

Slide 76 text

JOIN THE COMMUNITY JOIN THE COMMUNITY Ok, you can be a hero – just not on your own Ok, you can be a hero – just not on your own

Slide 77

Slide 77 text

JOIN THE COMMUNITY JOIN THE COMMUNITY Conferences Conferences Blogs Blogs Podcasts Podcasts Mailing lists Mailing lists Bug reports Bug reports User groups User groups Mentoring Mentoring Patches Patches Pull requests Pull requests Adding tests Adding tests Money Money Pizza and beer Pizza and beer Equipment Equipment Build RCs Build RCs Invest in employees Invest in employees Test-fests Test-fests Sponsor stuff Sponsor stuff Buy subscriptions Buy subscriptions Ok, you can be a hero – just not on your own Ok, you can be a hero – just not on your own

Slide 78

Slide 78 text

JOIN THE COMMUNITY JOIN THE COMMUNITY Conferences Conferences Blogs Blogs Podcasts Podcasts Mailing lists Mailing lists Bug reports Bug reports User groups User groups Mentoring Mentoring Patches Patches Pull requests Pull requests Adding tests Adding tests Money Money Pizza and beer Pizza and beer Equipment Equipment Build RCs Build RCs Invest in employees Invest in employees Test-fests Test-fests Sponsor stuff Sponsor stuff Buy subscriptions Buy subscriptions Ok, you can be a hero – just not on your own Ok, you can be a hero – just not on your own WRITE CODE WRITE CODE

Slide 79

Slide 79 text

ENJOY WHAT YOU DO ENJOY WHAT YOU DO

Slide 80

Slide 80 text

ENJOY WHAT YOU DO ENJOY WHAT YOU DO

Slide 81

Slide 81 text

ENJOY WHAT YOU DO ENJOY WHAT YOU DO “ “Let's put a smile on that face.” Let's put a smile on that face.”

Slide 82

Slide 82 text

ENJOY WHAT YOU DO ENJOY WHAT YOU DO “ “Let's put a smile on that face.” Let's put a smile on that face.” This is a career, a profession, a life-style choice, This is a career, a profession, a life-style choice, not just a 9 'til 5 job not just a 9 'til 5 job

Slide 83

Slide 83 text

Could this Dev... Could this Dev... Be you? Be you? WE'RE HIRING WE'RE HIRING

Slide 84

Slide 84 text

HTTP://JOIND.IN/9333 HTTP://JOIND.IN/9333 Thank you ! Thank you ! GO AND BE AWESOME GO AND BE AWESOME MANNEQUIN FROM MANNEQUIN FROM DIRECTMANNEQUINS.CO.UK DIRECTMANNEQUINS.CO.UK - NO MANNEQUINS WERE HARMED IN THE MAKING OF THIS PRESENTATION. - NO MANNEQUINS WERE HARMED IN THE MAKING OF THIS PRESENTATION.