Sunday, April 26, 2015

Becoming a Better Programmer

Becoming a Better Programmer


Keynote from ACCU 2015 conference (http://accu.org/index.php/conferences/accu_conference_2015)

@petegoodliffe
www.goodliffe.net

Synopsis:

You've come this conference to improve your skills. You're here to learn: to learn new technologies, to learn new techniques, and to fuel your passion by meeting like-minded people.

Becoming a better programmer means more than just learning new technologies. It means more than practising techniques and idioms. It's about more than passion and attitude. It's the combination of all these things. That's what this session will look at.

Pete Goodliffe, author of the new book Becoming a Better Programmer, unpacks important mindsets and techniques that will help you improve as a programmer.

You'll discover specific tools that will help you review your current skillset, and you'll learn techniques to help you “become a better programmer”.
Published in: EngineeringSoftware


Transcript

  • 1. BECOMING A BETTER PROGRAMMER a guide for people who care about code pete goodliffe @petegoodliffe
  • 2. PETE GOODLIFFE PROGRAMMER / AUTHOR / COLUMNIST / TEACHER / CONSCIENTIOUS CODER @petegoodliffe
  • 3. PETE GOODLIFFE PROGRAMMER / AUTHOR / COLUMNIST / TEACHER / CONSCIENTIOUS CODER STILL LEARNING @petegoodliffe
  • 4. @petegoodliffe
  • 5. +
  • 6. WORK OUT WAYS TO BECOME BETTER PROGRAMMERS the plan
  • 7. DO YOU WANT TO BECOME BETTER? QUESTION
  • 8. DOES IT EVEN MATTER? QUESTION
  • 9. IT’S ALL ABOUT ATTITUDE
  • 10. Attitude
  • 11. Attitude
  • 12. “ Attitude Attitude is a little thing that makes a big difference. Winston Churchill
  • 13. “ Attitude For success, attitude is equally as important as ability. Walter Scott
  • 14. “ Attitude To be a great champion you must believe you are the best. If you’re not, pretend you are. Muhammad Ali
  • 15. KNOWLEDGE Attitude TECHNOLOGY IDIOM ATTITUDE APPLICATION WISDOM WHAT? WHY?
  • 16. HOW DO YOU GET BETTER?
  • 17. TECHNOLOGY LEARN Attitude (anyone can do this)
  • 18. IDIOM LEARN Attitude (build mastery)
  • 19. HOW TO APPLY IT ALL LEARN Attitude (wisdom)
  • 20. ADJUST ATTITUDES
  • 21. “ PHYSICIAN, QUOTE THYSELF... Pretty early in any programmer’s career comes the realisation that there’s more to being a great coder than a simple understanding of syntax and a mastery of basic design. The awesome programmers, those productive people who craft beautiful code and work effectively with other people, know far more. There are methods of working, attitudes, approaches, idioms, and techniques you learn over time that increase your effectiveness. There are useful social skills, and a whole pile of tribal knowledge to pick up. Pete Goodliffe (Becoming a Better Programmer)
  • 22. WANT TO IMPROVE
  • 23. KNOWLEDGE ACQUISITION MODELS OF
  • 24. Models of learning YOU NOW YOU, BETTER FUTURE liability super-awesome
  • 25. <future view=“unclear”> A tangent...
  • 26. “ The future Prediction is very difficult, especially about the future. Niels Bohr
  • 27. 1962 DECCA RECORDING COMPANY The future
  • 28. “ The future We don’t like their sound, and guitar music is on the way out. Decca Recording Company
  • 29. 1974 MARGARET THATCHER The future
  • 30. “ The future It will be years - not in my time - before a woman will become Prime Minister. Margaret Thatcher
  • 31. 1977 KEN OLSON The future
  • 32. “ The future There is no reason anyone would want a computer in their home. Ken Olson Chairman of Digital Equipment Co
  • 33. </future> A tangent...
  • 34. Models of learning YOU NOW YOU, BETTER FUTURE liability super-awesome
  • 35. Models of learning PER-SKILL
  • 36. FOUR LEVELS OF (IN)COMPETENCE Models of learning Abraham Maslow
  • 37. unconscious incompetence conscious incompetence conscious competence unconscious competence Models of learning
  • 38. THE DUNNING–KRUGER EFFECT Models of learning David Dunning and Justin Kruger
  • 39. unskilled fail to realise own ineptness skilled underestimate their relative competence assume others are as good Models of learning
  • 40. “ Models of learning The miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others. David Dunning and Justin Kruger "Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments". Journal of Personality and Social Psychology
  • 41. “ Models of learning Real knowledge is to know the extent of one's ignorance Confucius
  • 42. DREYFUS MODEL OF SKILLS ACQUISITION Models of learning Hubert and Stuart Dreyfus
  • 43. Models of learning
  • 44. novice advanced beginner competent proficient expert Models of learning
  • 45. novicerule-centric, no judgement advanced beginner breaks from rules, gets stuck, can get answers, can’t filter competent mental model, plan routes, solves unknown problems proficient corrects previous errors, learns from others, interprets maxims, has tacit knowledge expert authority, interlinked with other skills, intuition Models of learning
  • 46. aid learning describes you can learn right now teamwork how you work with others in your team Models of learning
  • 47. PER-SKILL
  • 48. KNOWLEDGE PORTFOLIO Models of learning The Pragmatic Programmers
  • 49. 10,000
  • 50. 10,000 10,000expert 8,000shows potential 4,000 “music teacher”
  • 51. 10,000 um…
  • 52. 10,000 = 10 years * 3 hours 10,000
  • 53. “ 10,000 The theoretical framework presented in this article explains expert performance as the end result of individuals' prolonged efforts to improve performance while negotiating motivational and external constraints. In most domains of expertise, individuals begin in their childhood a regimen of effortful activities (deliberate practice) designed to optimize improvement. Individual differences, even among elite performers, are closely related to assessed amounts of deliberate practice. Many characteristics once believed to reflect innate talent are actually the result of intense practice extended for a minimum of 10 years. Analysis of expert performance provides unique evidence on the potential and limits of extreme environmental adaptation and learning. K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer The Role of Deliberate Practice in the Acquisition of Expert Performance K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer, 1993
  • 54. FIVE STAGES OF LEARNING Models of “learning” (with apologies to) Elisabeth Kübler-Ross
  • 55. FIVE STAGES OF LEARNING Models of “learning” (with apologies to) Elisabeth Kübler-Ross denial ○ anger ○ bargaining ○ depression ○ acceptance
  • 56. DENIAL (I don’t need to learn about that)
  • 57. ANGER (damn... I need to get something done, and I don’t know about that)
  • 58. BARGAINING (I’d better learn as little about that as I can)
  • 59. DEPRESSION (bloody hell... this is a big and complex topic; I’ll never learn enough to get anywhere!)
  • 60. ACCEPTANCE (oh ok, it’s not that bad after all)
  • 61. DENIAL ○ ANGER ○ BARGAINING ○ DEPRESSION ○ ACCEPTANCE
  • 62. Three pillars
  • 63. WHAT SHOULD YOU LEARN?
  • 64. What should I learn? WRITING CODE THE PRACTICE OF PROGRAMMING PERSONAL SKILLS WORKING WITH OTHERS
  • 65. WRITING CODE code presentation avoid unnecessary code removing code learn from your old code working with unfamiliar code dealing with “bad” code handle errors well write robust code effective bug hunting programmatic tests avoid unnecessary complexity good design
  • 66. THE PRACTICE OF PROGRAMMING know what software development is define cultural rules keep it simple use your brain nothing is set in stone “correct” code reuse effective version control working with QA “code freeze” making software releases
  • 67. PERSONAL SKILLS learn to learn know what makes a “good” developer seek out fulfilling challenges avoid stagnation act ethically love languages; learn them adopt good posture work smarter; not harder define what “done” looks like focus to find the solution
  • 68. WORKING WITH OTHERS work well in a team accountability communication skills manifestos, rules, tribal knowledge (an ode to code) dealing with conflict
  • 69. CONCLUSION
  • 70. “ Learning Any fool can know. The point is to understand. Albert Einstein
  • 71. “ Learning The more that you read, the more things you will know. The more that you learn, the more places you'll go. Dr. Seuss, I Can Read With My Eyes Shut!
  • 72. BETTERPROGRAMMER
  • 73. IT’S ALL ABOUT ATTITUDE
  • 74. “ Attitude Learning is like rowing upstream: not to advance is to drop back. Chinese proverb
  • 75. DO YOU DESIRE TO? BECOME “BETTER”? WORK “BETTER”? WRITE “BETTER” CODE?
  • 76. “ Attitude From caring comes courage. Lao Tzu
  • 77. WHAT WILL YOU DO NOW TO IMPROVE?
  • 78. “ Workshop Tell me and I forget. Teach me and I remember. Involve me and I learn. Benjamin Franklin
  • 79. THIS IS THE 1ST DAY KEYNOTE
  • 80. COMPETENCE IS PER-SKILL novice journeyman expert session selection ?
  • 81. COMPETENCE IS PER-SKILL novice journeyman expert session selection
  • 82. HOW WILL YOU LEARN IN EACH SESSION? WHAT INFO DO YOU NEED IN EACH SESSION? ASK APPROPRIATE QUESTIONS
  • 83. Questions... (keynote version) LOOKING AT THE TIMETABLE: WANT WILL YOU EXTEND YOUR KNOWLEDGE ABOUT? WHAT WILL YOU LEARN AS A NOVICE? HOW WILL YOU SHARE YOUR KNOWLEDGE WITH HUMILITY? HOW WILL YOU ENSURE THAT YOU IMPROVE YOUR PROGRAMMING SKILLS? (it’s easy to coast!)
  • 84. Questions... DO YOU WANT TO GET BETTER? WHAT’S IN IT FOR YOU? WHAT IS YOUR MOST DIFFICULT ISSUE AT THE MOMENT? WHAT WILL YOU WORK ON? (does this benefit you or the team?) HOW WILL YOU ENSURE THAT YOU DO IMPROVE?
  • 85. WHAT WILL YOU DO NOW TO IMPROVE?
  • 86. WHAT WILL YOU DO NOW TO IMPROVE? WRITING CODE THE PRACTICE OF PROGRAMMING PERSONAL SKILLS WORKING WITH OTHERS
  • 87. THANK YOUfor listening
  • 88. pete goodliffe @petegoodliffe
  • 89. © 2015 Pete Goodliffe All rights reserved, etc, etc Image credits: Science: http://commons.wikimedia.org/wiki/File:Distillation_by_Retort.png Entertain: http://www.fraternalclipart.com/cgi-bin/csGallery/index.cgi?page=9&lpage=&command=s&query=&ccat=6 Axe: http://etc.usf.edu/clipart/19500/19545/mattock_19545_md.gif Plane: http://3.bp.blogspot.com/_CKmMSJVSZ8I/TGnEXK-bagI/AAAAAAAAADo/u-Pyz5Sf5aE/s1600/Ekran+Alıntısı.JPG Annoyed: http://www.sxc.hu/photo/1327383 Wine: http://www.sxc.hu/photo/1337577 Cheese: http://www.sxc.hu/photo/750248 Ladder: http://printablecolouringpages.co.uk/?s=download+ladder Evolution: http://www.tenvinilo.com/vinilos-decorativos/Vinilo-decorativo-evolucion-senor-192 Denial: https://thenounproject.com/term/denial/43010/ Anger: https://thenounproject.com/term/anger/94082/ Scale: https://thenounproject.com/term/scale/22202/ Depressed: https://thenounproject.com/term/depressed/127839/ Like: https://thenounproject.com/term/like/9666/ Boring stuff at the end