DEV Community

CodingBlocks

78. Deliberate Practice for Programmers

It’s time for more cowbell as we have a special guest in the studio, Will Madison (@IAmWillMadison), join us as Allen finally gets tripped up trying to pronounce a name, Joe teaches us the value of practice, and Michael evacuates in a rainbow colored straight line.

Sponsors

Survey Says

This episode we ask: Do you pay attention to 3rd party licenses?

Anonymous Vote
Sign in with Wordpress
Do you participate in open source projects?
  • Yes, but only on my own projects.
  • Yes, but only when I'm trying to beef up the résumé.
  • Yes, but it's documentation, not code.
  • Just testing
  • Yes, but I only participate in projects owned by others.
  • Anytime, I can hear Michael's voice, would be awesome!!!
  • Once a week, around an hour time frame.
  • Keep the current release cycle, address simple questions with a 5-10 minute segment per episode, dedicate longer episodes as to questions as needed.
  • A 1 hour show once per week would be nice. Any shorter and things often start to feel rushed or superficial.
  • every 2 weeks, 45-1 hour. perfect.
  • 1 a week 1 hour long, sweet jesus
  • ~50 minutes once a week would be nice. .NET Rocks are around that length and I love them.
  • I think the best podcast length is likely equivalent to the mean commute time (~25-30 minutes). Twice a week would be great because it is easier to carry a thread. Also, I think the audience begins to forget your exist if they are released only every few weeks.
  • How about 30 minute weeklies and 90 minutes monthlies
  • I don't have time for 10 minute shows. 30 minutes is my cutoff. If a podcast is less than 30 minutes long I usually don't bother playing it because it's distracting to navigate to a different podcast. Considering I often listen in my car, at the gym, or while doing other things with my hands I don't like short podcasts. And besides podcasts are not television, who wants to be reminded of the crappy experience television provides making you reach for the remote every 10 minutes because of commercials.
  • Once a week but 30 mins is not enough to get into a topic. Officially I vote 1/week but if you have to go to every 2 or 3 weeks to have enough time to fully cover a topic I'd prefer that. Thanks guys, regardless of when you do it!!!!
  • 1 hour once per 5-10 days
  • If possible I would like to hear 2 shows a week around 30 minutes in length
  • bool isListenersHappy = (minutesPerShow == 60 && nrOfTimesPerWeek >= 1);
  • All of the above.. I want more!!!. You guys rock!
  • Twice a week. Each podcast is about 1 hour long.
  • Yes. I have some of my own projects _and_ I also participate in projects owned by others.
  • Man. I'd love to. But dang, who has the time?

News

  • We say thanks to everyone that took the time to leave us a review
    • iTunes: peteoshea, NOpcBuzzwords, Montimur, BusterInDallas, MrBimble, Haydxn, oran0007, ChannelZ13, Ram Kasyap, VirtuaBoza, Sravan Kumar Kilaru
    • Stitcher: IikkaO. LeanWebStart, mains, TacticalPenguin, SuperGoodDave
  • CloudFlare takes advantage of haveibeenpwned‘s API to let _your_ users know if they’re using credentials that have been compromised. (Security Now episode 652)
  • Windows Server 2019 to feature Kubernetes and Linux support – (VentureBeat)
    • Not to mention Docker on Windows now supports Linux containers on Windows side by side
  • Think you know everything about blockchain. Listen to some use cases you might not have thought of – (MS Dev Show)

Practice Makes Perfect

What does it mean to be “good”?

The myth of the myth of the 10x developer

  • Are you familiar with the notion of the “10x developer”?
  • Looked at things like program size, time to complete, code performance speed
    1. Are those accurate measures? What’s missing?
    2. Original study was 12 devs with 7 years xp over a couple hours – what would have been sufficient?
    3. Original study is 50 years old, is it still relevant?
    4. Can one dev really be 10x more productive than another?
  • Books like Peak, https://www.codingblocks.net/outliersOutliers separate knowledge from skill
  • Knowledge is what you know (understand) and skill is the application of that knowledge
  • You can’t have skill without knowledge
  • Difference between knowing the SOLID principles, and being able to apply them
  • Hot topics: 10x Developer, Hiring practices, 4 year degree vs Bootcamp
  • Knowledge is easy to find on the internet, what about skills?

Be careful with side projects

  • Side projects are great for learning, and for the cv but…
  • Side projects require knowledge, skill, time
  • Mixed incentives can encourage and codify bad habits
  • Inefficient (Scrimmage vs Drills)

A little more on habits…

  • Have you ever cussed in front of your grandma?
  • Brains love short cuts, they don’t remember the algorithm for FizzBuzz – the remember the rules and re-generate the algorithm
  • This is good, because it’s expressive – bad because of negative stereotypes, biases, and bad habits
  • Want to break a bad habit? Recognize the cue or Change your scenery
  • Books like “Blink” and “The Power of Habit”

Deliberate Practice

  • Deliberate practice is a results driven feedback loop that requires focused attention.
  • Researchers say it’s the best
  • Playing your favorite song on guitar is not deliberate practice. Recording yourself playing your favorite song, grading yourself on the various skills involved, and then devising, executing, and measuring practices that specifically target those areas over time is deliberate practice
  • Do you have 10 years experience? Or do you have the same year of experience 10 times?
  • 5 rules:
    1. Intentional
    2. Improving and Appropriate
    3. Responsive
    4. Repetitive
    5. Not fun

How software engineers can practice

Do X for Y

Soft Skills

  • Toastmasters, writing group, peer reviews, hackathons

Tools

  • Static Analysis, peer programming, reviews

Coaching

  • Interviewing.io
  • Architecture Diagrams / Setup
  • But before you jump in…you should really design your exercise around your you
    • 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

Tips for practicing

  • Beware of “flow” – nice way to get through the work week but skills can stagnate
  • Should see things moving up and to the right immediately
  • What about the things that are hard to measure?
    • Software Engineering is not unique in this!
    • How do other fields do it? (Coaching, Mentoring, Peer Review)
  • Deliberate practice is specific, don’t ask me how your code “is” – ask how your variable names are, or if your architecture is scalable
  • Book “Practice Perfect” has 42 great tips

Mentoring tips

  • Make a plan, stick to it
  • Call your shots
  • Encode success
  • “Get a whistle”
  • Come up with a name “SOLID” or common design patterns
  • Save the discussion till later
  • Don’t forget to measure and utilize

Resources We Like

Tip of the Week

  • Krypton – Store your SSH and PGP private keys on your phone
  • Sourcegraph for GitHub Chrome extension (Chrome Webstore)
  • Will Gant talks about the benefits of learning other programming languages on Junior Dev Podcast episode 11
  • unpkg – A CDN for everything on NPM
    • Example uses of unpkg on GitHub
  • Titan Fitness A2 – an affordable motorized sit/stand desk (Amazon)
  • Azure Cloud Shell – A browser-based shell experience to manage your Azure resources

Episode source