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.
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. :)
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!
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…