Stumbled tonight on Kent Beck's keynote from RailsConf 2015 on the streetcar, on my way back from work, after a few weeks that have been less comfortable. A few weeks when the feeling that there is a massive "oportunity for improvement" was just starring me in the face, but I was too focused on that one thing I was doing to be able to extract something actionable out of it.
A man cannot be comfortable without his own approval.
—Mark Twain
I remember first watching it back in April. More than half year after, watching it again felt like it was watched only for the first time: the experiences lived in the ~6 months in between enabled much more insight to be drawn from it.
Kent Beck builds his talk around
how uncomfortable I feel at work
and the techniques he discovered through more than ten years of introspection and observation, actively working on attaining a sense of ease at work. This sense of ease, he describes in the positive sense of facility, comfort, and freedom from anxiety.
One comment identifies Beck's talk as pure emotional intelligence: it's so rich in teachings, that I sat down again, with my screen shared between the recording of the keynote and an sublime text window to take notes, while watching it for the third time. The video of the talk is public, so if you haven't watched it yet, I can't recommend it enough. This short intro is the only "original" content you'll find here. Below are the notes I took to internalize the ideas better. They are also finding a home here so that they can serve as future reference.
Keep in mind that all of them are direct quotes:
- most of them are extracted here out of context,
- such that some of them might even be contradicting,
- I am accountable for any typos or rephrasing gone wrong. :)
Ease
State of comfort
- I am where I should be, doing what I should be
- Free from the nagging feeling that always is on the back of my mind, that I really ought to be doing something else
Freedom from worry, pain, or agitation
- the programmer's life can be filled with anxiety
Readiness in performance, feeling of facility
- athletes that make it look effortless
- no extra motion in what they are doing
- using a tool that I really understand well
- working on a team that I have strong relationships with
1. My work matters
- one of the big minuses of the virtual world that we, as programmers, work in is that you can't touch what we do.
- features you're not sure anyone will ever use, or refactorings etc.
- when in doubt, go find out!
- ask questions
- perform experiments
- measure stuff, to make sure that my work matters
- similar to lean startup
- before you dive in, invest the time to go and find out
- that nagging feeling when I'm going home at night "did that really work?"—that's a choice!
- choose to work in such a way that I know that my code works
- if I don't feel confident that my code works, I should work in a different way.
- if you're confident that your code works, then ship it. And if you're not confident that your code works, then get confident that your code works… and then ship it!
2. I'm proud of my work
- some engineering management treats engineers as robots
- one of the basic human needs is the need to feel proud of what you do
- this might be a reason to push refactoring a little bit earlier
- just in time refactoring: just before I need to make a change, refactor to make the change easy, then make the easy change
- increases the sense of accomplishment: "Yeah, this code is as good as it makes sense to make it right now."
- work on a system untill I feel proud of it.
- emotions are valuable information
3. I trust my curiosity
- learning to trust your own sense of curiosity
- ideas are like little mice
- losing self-confidence: "somebody is certain to have thought about that already", or "I probably do not have time to follow that up"
- consciously encourage your own ideas, "I'll take a half hour to figure out if the data supports this hypothesis"
- the quicker you become at vetting ideas, the more ideas come pouring out
- when I'm scaring the mice back in the walls all the time
- I just feel terrible
- there is this whole world of things that I could explore, that I could lean about, but I'm just blowing them off, because I'm so focused, and I'm so busy on doing this one thing, that I have no slack to pursue other ideas
4. I make public commitments
- trolling the first 10 years
- never give an estimate
- if you have to give an estimate, then maybe make an estimate about when you'll have the estimate ready
- try to burry any numbers that you produce so deep that nobody ever figures out to find them
- and you can't ever be called to account
- estimates for finishing features is a loose
- you can make public commitments towards shared goals
- reduce churn by 3%, and on this date we're going to measure and see if we actually did that
- anxiety level goes down
- sense of purpose and focus goes up
5. I am accountable
- you render account to someone else
- I did this and that experiment
- I wasted two days pursuing this idea, that I really should have known better than to do
- yeah, part of it was that I just screwed up
- feels so clean
- I know what I'm going to do
- I'm not going to blame anybody else, not going to point any fingers
- I'm only going to say here is what I did, the decisions I made, the activities, this is the account: this is how I spent the time.
- somebody else's response to that… well, that's their response
6. I interpret feedback
- Two opposite reactons: either
- when somebody says something about me, I think that's about me
- or I just ignore them
- …and constantly swinging between these two poles
- I'm no more awesome the moment after you said that than the moment before you said that; nothing's changed about me.
- interpretting feedback keeps me off of the genius-shithead rollercoaster
- interpretting feedback puts me at ease even in situations of conflict
- if I remember to interpret, I can do closer to my best
7. I am a beginner
- periodically become a beginner at something
- does it feel good to be ranked beginner when you're used to understanding your tools? No!
- it doesn't feel good in the moment, but I can remember that feeling and I can get confidence: "I'm in a situation, I'm not comfortable, I don't feel any sense of mastery, but it's OK, I can get out of it: if I could learn about Haskell, I could certainly deal with this situation."
- consciously put myself in positions where I'm a beginner so that I feel uncomfortable. So I can remember that I can deal with the feeling of being uncomfortable and still do a pretty good job.
8. I meditate
- when I meditate, in the mornings, I'm one breath away from being OK. For the rest of the day.
- when I'm too busy to do anything in the morning, I'm one breath away from complete and utter panic, for the rest of the day.
- made it a habit, and it's made a big difference
9. I serve
- the sense of service
- do something for someone else, in a way that prevents me from getting any kind of reward or feedback, or props
- just do something for somebody else, with no thought of anything coming back
- the next thing that comes up in the work world, I'm going to be readier to take on
If you want to start working on one of these yourself, find a buddy and work on it together with somebody. Makes a huge, huge difference.
So one night, the farmer wakes up in the middle of the night, and…