Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Self is your context Sunday, 9 June 13

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

1 - Individual Approach Finding Self Sunday, 9 June 13

Slide 11

Slide 11 text

I’m a programmer Sunday, 9 June 13

Slide 12

Slide 12 text

“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

Slide 13

Slide 13 text

Why? Sunday, 9 June 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Finding Self 2 - System Approach Sunday, 9 June 13

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Towards a Process Sunday, 9 June 13

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Implementation Techniques Sunday, 9 June 13

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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