Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Deliberate Practice for Programmers

702 visualizaciones

Publicado el

In this talk I'll be discussing the modern science of deliberate practice, popularized in recent books like "Peak", "Practice Perfect", and "Outliers". I'll highlight the best lessons from these sources and from other professions, and then I'll focus on how they can be applied to software engineering.

After introducing the topic, I'll go over some concrete and easily measurable examples of how to improve. Then I'll spend the rest of the time looking at how other professions cope with skills that are not so easy to measure, and show how we can adapt those practices for software engineering.

Publicado en: Software
  • Inicia sesión para ver los comentarios

Deliberate Practice for Programmers

  1. 1. https://www.codingblocks.net/practice/
  2. 2.  Skills are important and neglected  Deliberate Practice is the most effective way to advance skills  We can do this!
  3. 3. …and neglected
  4. 4. Things you know Things you can do Algorithms, Design Patterns, Data Structures Devise, analyze, implement How Security Exploit work Find exploits in the wild {Language, Framework, Domain} Make cool stuff
  5. 5. http://abstrusegoose.com/249
  6. 6.  Specific knowledge, skill, time requirements  Short cuts and distractions reinforce bad practices  Focusing on one skill can be detrimental to others  Not be time efficient
  7. 7.  Soccer scrimmage: 22:1  10-40 ball touches per game  Soccer 90 minute practice 4:1 Player:Ball ratio…  200-400 ball touches  What about field goal kickers? https://www.wegotplayers.com/soccer-training-vs-games/
  8. 8. Implicit Declarative instructions operate at a higher level of abstraction. “Chunking”
  9. 9.  Recognize the cue  Substitute the good behavior  Treat yo self
  10. 10.  Growth vs Fixed Mindset  How close are you to maximizing your potential?
  11. 11. How best to advance your skills
  12. 12. 1. Intentional 2. Improving and Appropriate 3. Responsive 4. Repetitive 5. Not fun http://www.learningspy.co.uk/training/top-gun-teachers/
  13. 13. How to practice programming
  14. 14.  Do X for Y  CodeWars.com  HackerRank  CodeFights.com  Code Golf  Soft Skills  Toastmasters, writing group, peer reviews  Quality  Static Analysis, peer programming, reviews  Coaching  Interviewing.io  Architecture
  15. 15. Identify DesignExecute Assess 0. Identify your goals 1. Map the relevant skills 2. Assess skills independently 3. Identify a high value target 4. Design an exercise 5. Do the exercise 6. GOTO: 2
  16. 16.  Your definition of “better” is unique  Goals change over time  What do you really want?
  17. 17.  Coding time  Debugging time  Program size  Performance  Communication  Problem Solving  Abstraction  Attention to detail
  18. 18.  Coding time  Debugging time  Program size  Performance  Communication  Problem Solving  Abstraction  Attention to detail
  19. 19.  Strengthen your weaknesses  Play to your strengths  Focus on valuable skills
  20. 20.  Understand that effort requires motivation  Take your existing abilities into account  Get quick informative feedback  Repeat, repeat
  21. 21.  Try to come up with something you can measure  Take lessons from other fields  Code Kata  Increase Difficulty  Time yourself  Record yourself, ask for feedback  Old school flash cards  Train “in the dark”  Debugging  Read code/architectures, describe it in english  Ask your communities
  22. 22.  Regular, repetitive, disciplined practice is best  Do what you can  Focus, focus, focus  Should see results immediately
  23. 23. https://www.slideshare.net/rnja8c/competitive-outcomes/24 https://www.scotthyoung.com/blog/2017/03/29/flow-doesnt-lead-to-mastery/
  24. 24. https://www.experttabletennis.com/deliberate-practice-table-tennis/
  25. 25.  Coaches  Teachers  Mentors  Peers
  26. 26.  Senior Programmers are expensive  Companies are better suited towards mentoring
  27. 27.  Examples of goals:  Story-Telling  Write shorter and more persuasive emails  Eliminate weak phrases  Structure content for a more logical flow  How to evaluate?  Coaching  Self Evaluation https://www.enchantingmarketing.com/how-to-practice-writing-skills/
  28. 28.  Better practice  Modeling  Fast and Quality Feedback  Build a Culture of Practice  Utilize the skills
  29. 29.  Identify your training goals  Make a plan  Encode success  Normalize error  Come up with a name
  30. 30.  Call your shots  “Get a whistle”, correct immediately  Correct, don’t criticize  Don’t teach during the game, practice  Save the discussions till after the exercises
  31. 31.  Measure success  Now discuss the exercise  Utilize the skills
  32. 32.  White-boarding  Coding under pressure  Solving puzzle problems  Language/Framework  “What’s your greatest weakness?”  Take Home Projects  Dressing appropriately  Active listening  Computer Science-y things (Check out https://interviewing.io/)
  33. 33.  Skills are important and neglected  Deliberate Practice is the most effective way to advance skills  We can do this!
  34. 34.  Code Wars  Project Euler  Hacker Rank  Regex Crossword  The GIT Game  UVA Online Judge  {Your next side project here?}
  35. 35.  https://dl.acm.org/citation.cfm?id=362858  https://www.ybrikman.com/writing/2013/09/29/the-10x-developer-is-not-myth/  https://softwareengineering.stackexchange.com/questions/179616/a-good-programmer-can-be-as-10x-times-more- productive-than-a-mediocre-one  http://www.construx.com/10x_Software_Development/Origins_of_10X_%E2%80%93_How_Valid_is_the_Underlying_R esearch_/  https://www.scientificamerican.com/article/is-innate-talent-a-myth/  https://dotnetmeditations.com/blog/2016/12/21/my-deliberate-practice-plan-to-become-a-better-programmer  https://www.huffingtonpost.com/amol-sarva/talent-is-a-myth_b_6793870.html  https://www.codingblocks.net  https://www.codingblocks.net/slack  https://www.sportingcharts.com/nfl/stats/team-field-goals-attempted-per-game/2016/  https://www.psychologytoday.com/files/u81/Ericsson__Roring__and_Nandagopal__2007_.pdf  https://www.scotthyoung.com/learnonsteroids/KqreouDIUIO324jlnlkjlkj3r24SFJj32532jLJBAqxcc- Apr/DeliberatePractice-GettingStarted.pdf
  36. 36. Joe Zack joe@codingblocks.net @codingblocks Mostly a Podcast

×