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

Optimising Self @ RedDotRubyConf 2013

Optimising Self @ RedDotRubyConf 2013

Simon Robson

June 08, 2013
Tweet

More Decks by Simon Robson

Other Decks in Programming

Transcript

  1. June 8, 2013
    Optimising Self
    Simon Robson
    @shr
    Sunday, 9 June 13

    View Slide

  2. Project Me:
    the ongoing implementation of self
    Sunday, 9 June 13

    View Slide

  3. Project Me:
    the ongoing implementation of self
    @dhh’s thing
    Sunday, 9 June 13

    View Slide

  4. Project Me:
    the ongoing implementation of self
    @dhh’s thing
    @shr’s thing
    Sunday, 9 June 13

    View Slide

  5. Self is your
    context
    Sunday, 9 June 13

    View Slide

  6. self = UberRubyist.new
    SyntaxError: compile error
    Can't change the value of self
    Sunday, 9 June 13

    View Slide

  7. How to maximize the
    current performance
    and ensure long-term
    maintainability of the
    wetware pounding on
    the keyboard
    Sunday, 9 June 13

    View Slide

  8. self: Simon Robson
    twitter: @shr
    email: [email protected]
    hacks_on: ruby, js, clojure
    lives_in: Chiang Mai, Thailand
    version: 14251
    Sunday, 9 June 13

    View Slide

  9. Finding Self
    Towards a Process
    Implementation Techniques
    Sunday, 9 June 13

    View Slide

  10. 1 - Individual Approach
    Finding Self
    Sunday, 9 June 13

    View Slide

  11. I’m a programmer
    Sunday, 9 June 13

    View Slide

  12. “The programmer, like the poet, works only
    slightly removed from pure thought-stuff.
    He builds his castles in the air, from air,
    creating by exertion of the imagination.”
    Fred Brooks, The Mythical Man-Month, 1975
    Sunday, 9 June 13

    View Slide

  13. Why?
    Sunday, 9 June 13

    View Slide

  14. My ongoing and future personal
    comfort depends on my ability to
    design and realize creative works
    which meet certain externally
    imposed requirements
    Repeatedly.... and with some number of successes
    Sunday, 9 June 13

    View Slide

  15. Self
    Messy
    Competing
    Needs
    of the
    Real World
    Cold
    Hard
    Logic
    of the
    Machine
    Image: http://wallppaer.com/wp-content/uploads/2013/04/fantasy-castle-wallpaper.jpg
    Sunday, 9 June 13

    View Slide

  16. Finding Self
    2 - System Approach
    Sunday, 9 June 13

    View Slide

  17. OMG! Hold the presses!
    Software is a people problem
    Sunday, 9 June 13

    View Slide

  18. In the title, I refer to people as “components”. That is
    how people are treated in the process / methodology
    design literature. The mistake in this approach is that
    “people” are highly variable and non-linear,
    with unique success and failure modes. Those
    factors are first-order, not negligible factors
    Alistair Cockburn, 1999, Characterizing people as non-linear, first-
    order components in software development
    http://alistair.cockburn.us/Characterizing+people+as+non-linear,+first-order+components+in+software+development
    “...stupendously obvious
    but notable discovery...”
    Sunday, 9 June 13

    View Slide

  19. My API ~ My Place in the Development Process
    Sunday, 9 June 13

    View Slide

  20. Towards a Process
    Sunday, 9 June 13

    View Slide

  21. Promote
    Creativity
    Technical Skill
    Longevity
    Some Goals
    Also: Simple, so I actually follow it
    Sunday, 9 June 13

    View Slide

  22. Promote Prevent
    Creativity Burnout
    Technical Skill Stagnation
    Longevity Death
    Also: Simple, so I actually follow it
    Some Goals
    Sunday, 9 June 13

    View Slide

  23. Promote Creativity / Prevent Burnout
    Risks
    work too hard / too long on the same thing
    too much context switching
    working on distasteful things
    (in ethical / engineering terms)
    Sunday, 9 June 13

    View Slide

  24. Promote Creativity / Prevent Burnout
    work too hard / too long on the same thing
    too much context switching
    working on distasteful things
    (in ethical / engineering terms)
    take a break / go to bed
    one day, one or two things - plan & schedule
    say no
    fix the (engineering) pain
    Risks Strategies
    Sunday, 9 June 13

    View Slide

  25. Promote Technical Skill / Prevent Stagnation
    Risks
    Risks
    doing the same thing time and again
    multiple projects, same requirements
    lack of challenges
    lack of new things
    Sunday, 9 June 13

    View Slide

  26. doing the same thing time and again
    multiple projects, same requirements
    lack of challenges
    lack of new things
    solve repetition with engineering
    make space (i.e. time) for learning
    start a project. Or join an existing project.
    Risks Strategies
    Promote Technical Skill / Prevent Stagnation
    Sunday, 9 June 13

    View Slide

  27. Promote Longevity / Prevent Death
    disease
    stress
    accidents
    old age
    Risks
    Risks
    Sunday, 9 June 13

    View Slide

  28. disease
    stress
    accidents
    old age
    get exercise. Make it routine.
    recognize stress. And look it in the eye.
    don’t text and drive / walk and read / etc
    age like wine
    Risks Strategies
    Promote Longevity / Prevent Death
    Risks Strategies
    Sunday, 9 June 13

    View Slide

  29. Process
    • set aside time for exercise
    • set aside time for learning / exploring
    • make the plan concrete
    • stick to it
    Mix to taste
    •Tools: Calendar, Pen & Paper
    Sunday, 9 June 13

    View Slide

  30. Exercise
    Learning and
    Exploring
    Higher
    Productivity
    energizes,
    leading to...
    frees up time for...
    motivates...
    frees up time for..
    increases skill, leads to...
    Creativity
    enhances
    Longevity
    promotes
    Sunday, 9 June 13

    View Slide

  31. ...
    Exercise
    Learning and
    Exploring
    Higher
    Productivity
    Creativity
    Longevity
    Sunday, 9 June 13

    View Slide

  32. Implementation Techniques
    Sunday, 9 June 13

    View Slide

  33. Meta Warning
    You’re asking the thing that does the
    work to also manage the work it does.
    Sunday, 9 June 13

    View Slide

  34. Aside: The Lizard Brain
    “The resistance grows in strength as we get closer to
    shipping, as we get closer to an insight, as we get closer
    to the truth of what we really want. That's because the
    lizard hates change and achievement and risk.”
    “Now you've seen the icon
    and you know its name. What
    are you going to do about it?”
    http://sethgodin.typepad.com/seths_blog/2010/01/quieting-the-lizard-brain.html
    Jan 28, 2010
    Sunday, 9 June 13

    View Slide

  35. 1. Tackle the difficult thing right now
    • Upfront analysis easily turns to procrastination
    • Dive in, get hands dirty, then do some analysis
    Sunday, 9 June 13

    View Slide

  36. 1. Tackle the difficult thing right now
    2. Plunge headfirst into the new
    • Conquer fear of messing up / looking dumb
    • You will anyway. Get over the hump quicker
    Sunday, 9 June 13

    View Slide

  37. 1. Tackle the difficult thing right now
    2. Plunge headfirst into the new
    • Typing isn’t the core of your job
    • Almost certainly a learning experience to be had
    3. Disable autopilot
    Sunday, 9 June 13

    View Slide

  38. 1. Tackle the difficult thing right now
    2. Plunge headfirst into the new
    3. Disable autopilot
    • Failure looks worse the longer you hide it
    • Involving others reduces chance of failure
    4. Share early
    Sunday, 9 June 13

    View Slide

  39. Knowing others is wisdom.
    Knowing the self is enlightenment.
    Mastering others requires force.
    Mastering the self requires strength.
    Tao Te Ching, Lao Tzu
    Sunday, 9 June 13

    View Slide

  40. Self-responsibility
    As a programmer, it is my responsibility to
    craft an environment for myself in which my
    brain and creativity can thrive and grow.
    Sunday, 9 June 13

    View Slide

  41. Background:
    The Psychology of Computer Programming, Gerald M. Weinberg
    The Mythical Man-Month: Essays on Software Engineering, Frederick P. Brooks
    Peopleware: Productive Projects and Teams, Tom DeMarco, Timothy R. Lister
    Characterizing people as non-linear, first-order components in software development,
    Alistair A. R Cockburn
    Further Reading / Viewing:
    The Passionate Programmer, Chad Fowler
    The Healthy Programmer: Get Fit, Feel Better, and Keep Coding, Joe Kutner
    Older Is Wiser: Study Shows Software Developers’ Skills Improve Over Time, Matt
    Shipman, Dr. Emerson Murphy-Hill
    People Patterns, Joe O’Brien
    Credits:
    Thanks to @rpburns, @sbusso, @macarthy, @beambongga and the regulars at
    BeercampCM (@barcampcm)
    Continue the conversation...
    @shr
    [email protected]
    Optimising Self: Resource
    https://gist.github.com/simonrobson/5730024
    Sunday, 9 June 13

    View Slide