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

The best programmer I know

The best programmer I know

I believe great programmers are not born, they are made. Or rather, they make themselves, carefully and deliberately over time. I am not talking about the folks who rote-learn the l33t answers and throw their egos around; I mean the ones who build great products using simple, understandable code, while lifting up those around them.

I have worked with some great programmers over the years, and met some others along the way. I want to tell you about the best programmer I know. As I have said elsewhere, they have “an insatiable curiosity and the belief they can convince a computer to do anything. Plus a healthy disregard for language and tool zealotry.”

As I describe them, you might recognise some of their traits in yourself; you might decide you want to aspire to some of them; you might choose to refer to them as an interviewer, or as a candidate. My hope is simply that you find them useful and in some way inspiring.

Daniel Terhorst-North

May 31, 2024
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Technology

Transcript

  1. @tastapod Part 1: Getting the job done Part 2: Choosing

    the right tool Part 3: Caring about the team
  2. @tastapod Resist procrastinating - Start anywhere - Seriously, anywhere! -

    Doing is researching Know you don’t know - It doesn’t have to be right, or even good - You will rewrite it! Iterate wildly ‘Stoplight to stoplight’ - Try, fail, learn, repeat Just start! Getting the job done
  3. @tastapod Invest in the outcome - Code is just the

    means - Have no emotional attachment to it! Study the domain - and its inhabitants - Represent this in code Watch your users - What frustrates them? - Simplify it; eliminate it Build a product Getting the job done
  4. @tastapod Solve the real problem - not some fancy generalised

    version - Caution: may reduced dependencies Learn to see what is really there - not what you are conditioned to see - Develop ‘ fi rst sight’ Strive for simplicity - ‘the simplicity the other side of complexity’ - Write the README,
 then reduce the embarrassment! Solve for now Getting the job done
  5. @tastapod Part 1: Getting the job done Part 2: Choosing

    the right tool Part 3: Caring about the team Choosing the right tool
  6. @tastapod Choosing the right tool Do the simplest thing, not

    the easiest - h/t Rich Hickey* - Minimise distance to solution space Teams can learn! - Code outlive teams - Data outlives code, and organisations! - Be kind to future you The ‘right tool’ may change over time - so be prepared to revisit your choices - ‘Make the change easy’ …for the product, not the team! *https://dannorth.net/go/simple-made-easy
  7. @tastapod Reduce, reuse, recycle - Easy to decompose - Easy

    to restructure - Easy to rewrite Minimise blast radius - Write small, self- contained ‘hacks’ - Spike and Stabilise - ‘Try now, pay later’ Then do the same with production code! - CUPID* is your friend - Architecture as options Make the change easy Choosing the right tool * https://cupid.dev
  8. @tastapod Be ‘full-stack’ - What makes a great web page?

    - a great service API? - a great architecture? Explore languages, tools, paradigms - They will give you di ff erent perspectives - Try Advent of Code* Be really full-stack - Redesign the process - Use hardware! - Challenge the premise Be a polyglot * https://adventofcode.com Choosing the right tool
  9. @tastapod Part 1: Getting the job done Part 2: Choosing

    the right tool Part 3: Caring about the team Caring about
  10. @tastapod Send the team home! - No one should be

    working late - A rested team is an e ff ective team Find joy in helping others learn - Teaching is the best way to learn - Sometimes just encouraging words Be kind - Assume everyone is doing their best - Build psychological safety …your teammates Caring about
  11. @tastapod Try new things - But retain a healthy scepticism

    - Especially about blockchain ‘AI’ Join communities - Be a net contributor - Find people who will challenge you - Throw the net wide Practise, practise, practise - There is no ‘innate programming gift’ - Be prepared to be rubbish at new things! …staying current Caring about
  12. @tastapod Go home on time - Who will remember you

    working late? - Sleep is the best debugger Have interests outside of programming - Find a sport or activity - If you don’t have a thing, try lots of things! Be kind to yourself - You’ve got this - ‘Yesterday I was wrong’ …yourself Caring about