Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Better Developers

Building Better Developers

Nothing stands still in this industry: new PHP language features, major framework revisions from Symfony and Zend, nginx gaining ground on Apache, cloud hosting services making deployment as easy as "git push"... the list goes on. What can you do to make sure that you're keeping up with all these changes without cloning yourself and only sleeping 3 hours a week?

It's not just about improving your coding skill, it's understanding how to make all your abilities and those of your peers work together to keep you ahead of the game. We'll look at a combination of human hacks and hard work to help fine tune the most important machine you own.

6b43ae555a9715883255ad4fa194ffeb?s=128

Rowan Merewood

March 19, 2013
Tweet

Transcript

  1. A PHPNE 2013 PRODUCTION A PHPNE 2013 PRODUCTION BUILDING BETTER

    BUILDING BETTER DEVELOPERS DEVELOPERS ROWAN MEREWOOD PRESENTS ROWAN MEREWOOD PRESENTS
  2. BIG PHILOSOPHICAL QUESTIONS BIG PHILOSOPHICAL QUESTIONS

  3. 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 Inviqa, Sheffield at Inviqa, Sheffield
  4. 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
  5. SELF IMPROVEMENT SELF IMPROVEMENT

  6. 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
  7. OUR SAD AVERAGE DEV OUR SAD AVERAGE DEV

  8. 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
  9. NO CAPES NO CAPES

  10. NO CAPES NO CAPES S S

  11. 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
  12. YOUR EDITOR IS PART OF YOU YOUR EDITOR IS PART

    OF YOU
  13. 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
  14. 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
  15. 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
  16. HOLE HAWG HOLE HAWG

  17. 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
  18. VIM VIM

  19. VIM VIM

  20. VIM VIM

  21. VIM VIM

  22. VIM VIM

  23. VIM VIM

  24. DELIBERATE PRACTICE DELIBERATE PRACTICE

  25. DELIBERATE PRACTICE DELIBERATE PRACTICE

  26. DELIBERATE PRACTICE DELIBERATE PRACTICE Kata ( Kata ( 型 型

    or or 形 形 literally: "form") literally: "form") Deliberate, controlled, repeated Deliberate, controlled, repeated
  27. 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/
  28. 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
  29. TDD KATA TDD KATA

  30. TDD KATA TDD KATA

  31. TDD KATA TDD KATA

  32. MASTER YOUR CRAFT MASTER YOUR CRAFT

  33. MASTER YOUR CRAFT MASTER YOUR CRAFT

  34. 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
  35. 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
  36. 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
  37. MEASURE WHAT MATTERS MEASURE WHAT MATTERS

  38. MEASURE WHAT MATTERS MEASURE WHAT MATTERS X X

  39. 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
  40. 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
  41. “ “T T” ” SHAPED PEOPLE SHAPED PEOPLE

  42. “ “T T” ” SHAPED PEOPLE SHAPED PEOPLE

  43. “ “T T” ” SHAPED PEOPLE SHAPED PEOPLE Valve Software

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

  45. NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

  46. 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
  47. THE SHARPEST TOOL THE SHARPEST TOOL

  48. THE SHARPEST TOOL THE SHARPEST TOOL John Carmack – id

    Software John Carmack – id Software
  49. 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; ; } }
  50. 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/
  51. NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

  52. NOT THE SHARPEST TOOL NOT THE SHARPEST TOOL

  53. 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
  54. ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

  55. ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

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

    The Dude abides.”
  57. 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
  58. A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE

  59. A DIFFERENT ATTITUDE A DIFFERENT ATTITUDE “ “Mauro, SHUT THE

    FUCK UP!” Mauro, SHUT THE FUCK UP!”
  60. 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.”
  61. 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”
  62. 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.”
  63. 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.”
  64. 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
  65. ADJUST YOUR ATTITUDE ADJUST YOUR ATTITUDE

  66. 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
  67. SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD

  68. SPEAK OUT AND BE HEARD SPEAK OUT AND BE HEARD

  69. 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
  70. 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
  71. 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
  72. 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”
  73. 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
  74. JOIN THE COMMUNITY JOIN THE COMMUNITY

  75. JOIN THE COMMUNITY JOIN THE COMMUNITY

  76. 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
  77. 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
  78. ENJOY WHAT YOU DO ENJOY WHAT YOU DO

  79. ENJOY WHAT YOU DO ENJOY WHAT YOU DO

  80. ENJOY WHAT YOU DO ENJOY WHAT YOU DO “ “Let's

    put a smile on that face.” Let's put a smile on that face.”
  81. 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
  82. Could this Dev... Could this Dev... Be you? Be you?

    WE'RE HIRING WE'RE HIRING
  83. HTTP://JOIND.IN/8386 HTTP://JOIND.IN/8386 Thank you ! Thank you ! GO AND

    BE AWESOME GO AND BE AWESOME MANNEQUIN FROM DIRECTMANNEQUINS.CO.UK - NO MANNEQUINS WERE HARMED IN THE MAKING OF THIS PRESENTATION. MANNEQUIN FROM DIRECTMANNEQUINS.CO.UK - NO MANNEQUINS WERE HARMED IN THE MAKING OF THIS PRESENTATION.