Thursday, September 29, 2016

LA Ruby Conf 2014 - I Have Pair Programmed for 27,000 Hours: Ask Me Anything!

dude in mmm
the I know that a
knows talk so there's a lot of audience participation
kinda awkward held like somebody asked for if anybody has a questioner to raise
their hand at something there but it kinda Mills around
well guess what this entire talk is only that
so nobody asks any questions
it's going to be really awkward for everybody
so let's do this and give you a second so i pair program for
27,000 hours which is about every working day will
more or less for thirteen years and
I really want you to ask me anything because people find this topic
fasting something to give you a moment couple seconds to
just silence think one
question you might want to ask go
okay that question you thought it was by one of the top three or five questions
that though that one out
and think of another question
that you might wanna ask how do you get up get up
up you're going for it awesome how do you get over being nervous
let's do this picture how to get over being nervous when europe a program
where somebody
um having a lotta time doing that a lot
that makes a big difference that first time is always
the first time you've ever paired with somebody and even now after 13 years the
first time out there was somebody
I'm nervous and I'll even admit that
you know we organize our our projects and to these
work on stories in calling cards whatever little features
and whenever I'm about to start a feature with somebody
that may last a day or two even if I work for this person for a long time
I'm nervous when we click that starr because I'm always thinking like this
could be the time
when I completely fall apart and turns out I don't know
what I'm doing and the person I'm working with this guy I think I'm an
I it happens like just for a few moments
it always happens I think for me the answer is I never stop getting nervous
but you it's it it becomes just kinda part of it
and you get over it really quickly especially when you have a good report
with people
%uh there's a question the back no stupid questions
yes what is
pair programming i in general- so
maybe I'll force you to ask another question raise your hand
if you've ever pay program but
almost everybody I would say that was eighty
ninety percent me I'm so for the temperature left
pair programming is a supper development technique
by which to programmers although it can be
a program and a designer it could be two people to say that
are working on the same computer gotta go computer
stopping the same software problem at the same time
so sometimes that's literally to
people sitting side by side at the same computer with two keyboards usually
I trying to decide you know how to write this line a code grey here whether or
not we should
go take a different direction whether or not a
should we follow these solid principles that we just learned about
about how to better follow them and kinda constantly working together
to come up with the best solution to whatever whatever problem you're solving
at the moment
I'm sometimes you can do this remotely tissue doesn't have to be at the same
computer you can do it across
screen sharing and and such as well let's go to the canonical
a description of what pair programming is and there's a lot of benefits as well
but there's a question so I'm not gonna pass it up with for
what is pair programming good for
and was pair programming bad for a
so we tend to believe I say
on a bus Asami I believe but there's almost no problems that are bad
prepare programming um we
even pair write this gonna sound weird but it makes sense to promise
we sometimes pair right emails on
especially for example you are sending an email
to maybe a politically sensitive up
a manager or something like that when you're may be working in a complex
where the only everything is email all the time
and you're trying to yo capture well some kinda situation
all right that together so that we come up with like something really good
ever that sounds kinda weird but will even take it that far now question I
have heard
is can you pay program on those sorta boo
sorry a split re I am
I just some point this thing
on let me put this power imbalance a while I'm doing that
i havent had I've had people ask me what about the kind of cortical
artsy things or the algorithms and
that kinda superstar those those things that traditionally are thought others to
we know where you go to a mountaintop you think about for a long time and you
come up with like
Google search algorithm or something like that I think you compare program
on those as well um
a I really don't think that there's are the anything you capture
and you care program with out talking to each other so I actually know somebody
who'd on Twitter are tweeted the other day
but Remo care program remote programming is so hard
and iRobot at all what kind of problems are you having site passion about that
particular topic and I like to help
is as well you know when you can talk to each other it's hard to know what's
going on
like well it's really really hard to pair programming without talking
I can also say I've never are programmed in style
a comeback that person who won't talk at a different problem
I can talk about that but as far as a
literally having no means a verbal communication I've never
done that I don't think it would work very well
have you done this
I'll that's interesting having your could speak for itself I like
the philosophy about as an experiment
I have a hard time justifying Billy my clients for that experiment
the I thought something I
you haven't tools for remote purple
I yeah so what are the tools for remote pair programming
I have a whole talk I could adjust about that the whole go too deep into it
but in general you need some kind of
Voice communication Skype Google hangout something like that
their screen share any need some kinda screen chain technology
by which you can clap rate on the same computer to solve same problem now I am
opinionated about what about to say love people might not agree with me about
this but I will say it anyway
and that is people often say like I remote program and we use Skype
or use Google Hangouts and I say you're not
pair programming I'm sorry you're certainly collaborating
ferry you know intently on the same problem
you not pair programming because you can't both program
that's my king writer
what happens when you don't agree a what on how to proceed with your pair
presumably maybe in a technical you know anything anything anything from
programming to
any kind of approach that happens all the time um
but the talks call pair programming kinda
continuous compromise and negotiation
um but I also like to say that what you often arrive at is
the highest common denominator at the lowest to the highest
to take so when you don't agree BL
spent some time talking about of course sometimes
you won't you after will say 5-10 minutes
may be able extremely passionate about these two directions
what will often do and we can almost always do this
is bringing another person who is respected by both
to say listen listen to this
um and if that's not possible maybe your to people you're gone
an open source project or two-person project and there's nobody to bring in
on sometimes you just have to go with one of them
and somebody else has to just take just kinda grin and bear it for a while
and see if it bears fruit see if it works out
but the other person the person according to one
should ideally be gracious enough to say if they're idea doesn't end up working
to say let's try the other one maybe you'll good tribal
as well um
non-verbal communication methods that use with pair programming
others are especially important with Remo pair programming
where you up against each others hands and such
but actually I find that I'll a lot of people talk about
we'll ask me how do people how do you decide when
who's going to what he calls a drive verses
navigator had a setback and not have has a keyboard because what I'm not talking
is like one person running like a left-hand side the caber
the other one the right I did actually as attention to my attention
ask my ok I got a haircut the other day before I can asked the lady
work in my hair if if she could imagine to barbers
working on the same had had the same time and she said no
because their scissors would keep hitting each other a.m.
thought that was interesting I'm not talking about that about the
so there is like a I'll ideally in a good parent situation
a trade of the happens you know as your working on persons like it a little
while the other one takes over that one takes over
and chemical bounce back and forth and a lot that I find is that non
it's done on purple communication happens and it's little things
that you get used to picking up on somebody's like
up dude on this computer here and try to me you know one person who's driving
there leaning forward the intently
typing like clearly in there there eyes are focused a clearly like very much in
his own
and in that situation it could be very disruptive for the other person just
jump in and grab the mouse and keyboard to start doing something because
we've all had somebody rip us out that zone
and it's very disruptive now that person is doing that and then they pause
and then they do this thing like
harder how do you is it
is a the method on kernel and thats
when the other person can say like I know what that is
and they can jump they can jump in because they've the person has taken
out about Sam and
the other person can almost always jump it without disrupting that without
disrupting them
out now you there are little techniques we can talk about where somebody refuses
to give up the keyboard
um DVD is great for this because you can do something helping pump rainwear
on person right to test and output per cent implements and then
you trade back and forth that's like ever a good technique to
enforce that um but those little nonverbal things your people taking a
pause sitting back
rubbing their face there's always this on this is my paper on
this is a I'm not typing right now
people do that on a lot that's %uh invitation for somebody else to take
over as well
something over here
I'm so the question was other situations our people said
that remote pairing can be even better than in person paying
and sent that the actual question because I've actually I heard people say
that they
sometimes enjoy remote pairing more than in person paying
and I am biased because I remote pay program full-time
so I'm biased alike want people to say that
but I'd uninvited people have said this and the reason they've said
that our way to an example applied it's that is that
when you're saying it is a busy office like the travel office
with a lot of stuff going on and everybody is pain because pain as a lot
of talking
its there's a lot of stuff going on and then that person like through that Nerf
ball across the room and then
you know somebody is having a birthday over here and as just a lot of stuff
going on
um and remote pairing tends to
focus you even more focus than you already are
when you're carrying because pain can be extremely focusing Sony
you know if you can to put on a headset I'm going over your ears
and your we are looking at camera with this other person's face on and you're
working on this code together
it can really laser focus UN on the problems are you trying to solve
and so for that reason some people said some situations they prefer Remo K
because I really focuses that I'm versus the kind of the distractions that can be
quote-unquote normal office and in
in the back
up good question so if you are pairing with somebody
who is very senior to yourself
perhaps um do you both do the
does the pair in general get benefit gala
so I say absolutely I think one other core
benefits a pair programming is the cross training and knowledge transfer
affect up now that might seem like it's all this junior person
getting all about benefit um
and I find that that's not the case at all the senior person Assamese been
doing this for twenty years
and the pain is somebody kinda somebody who's like a college grad I
extreme but I can say is somebody has been doing this for 15 years
and recently was pain with the college grad
every single day I learned something from
that college grad that I didn't already know and i actually this is this is no
liability notebook
all day planner i sat next to me on my desk and everyday I write down something
that I learn
for my pair and it doesn't matter if their senior more senior than me
same level recent college grad I always learn something from them
so I really do think that but that's one aspect by which
a very diverse pair will call it our despair
um can still benefit each other and also find
well let me ask you guys this question you can think about yourself I say I
that when I really think I know something really well
and that new be says what's going on here can you explain it
and I explain it and they like I really I still don't get it and then I have to
force myself to
actually understand it better and not make all these assumptions
and I've actually managed to talk myself out
a belief that had like actually saying them out loud I realize
Heights I kinda sounds terrible
why are we doing it that way ever have those moments I have those moments
so that's another way in which just that the
the forcing the %uh the the senior person to
to get into a teaching mindset can benefit them
as the teacher as much as it benefits the person whose line
Mikes by so the question was would people who've only
paired side by side in person somebody then does remote her
what has been their general take away and I would say almost every single time
they've said that it was almost exactly like in person
not necessarily better mean I say I bet if you were to like put it on a 100
point scale they probably rank it
lower than in person paying and I would never go so far as to say like
I ever to go home and my headset and some high speed internet just stay home
life I had a choice I would be side by side pain with
the people that I work with so you get so much higher fidelity everything
but back to your question people almost universally say that it was
way better than expected that is intimidating is like
technology going on at like some kinda blurry video and
it's like what's gonna happen I've never done this before it like
%uh the screen is typing on its own and I am
the novelty love the remote
situation I'd say falls away very quickly
like by within an hour or less and because once you get into that zone at
okay well should we extracted object here or or not
and then use you just revert right back into the normal conversations you have
all the time a pack
and whether or not that person is the composition having is with the remote
person or not
it's the same conversation and it's the same at the inflow
I love the parent experience %uh as long as you
male have a good at high speed and internet things like that
I'm some people usually say that's really good
a with
do I ever want to just work by myself
and the answer is yes yes I do hi
my name's Joe pair program pretty much high-tech rare
and I still really sometimes miss working by myself
um at the it is a different experience
you know I'm a plus but I got this light
didn't have any questions about the words on here
I a.m. %uh so yes
I do miss working by myself sometimes and there are times
like the way our company structure sometimes you're in between
client engagements and you might have a few days were just makes more sense you
to work
a work by yourself I've had people ask me a
so if you're if you are exclusively pair programming near Paris sick do you just
take the day off to
the call that we're not in were not like that dogmatic
help crack and I'll send people home because somebody has a
you know cuz they're pair has a cold or something like that and those days are
I'm not gonna lie
it's really fun and I can also honestly say
I a check into my worst code during those days
and make dumb mistakes and thrash on these easy things that
my a pair with just like what you doing
like its you're you're making a mistake right here so it's fun
but its order they like when my wife is getting is outta town for a few days
kinda like bachelor time stay up late
and you know drink that one extra beer and things like that but
you know in the end it's better to go back to more discipline say
are here pusher
to the question was
what if you have a parent situation where people are also the same mind
you know they agree on everything that the same experience level
there's very little interchange %uh via ideas our knowledge because they're
basically on the same page
I I found that that's extremely rare situation
because were all extremely opinionated people
and we have up I even more
like maybe that maybe wasn't as fair as it is to say
people that have different experiences
from their past different projects different companies it may be different
if two people I say
hired on the same day straight at a college or something like that kinda
come up
together only working together on the same projects you know that maybe
a situation where it might be more likely for them to
have had this group think you know total lock and up ideas
because they both had such a narrowband experience
but in my experience that's even people who are the same a to graduate college
at the same time it worked as a similar companies before
working together all that other experiences
have come built them in two different people with different ideas
and and have a lot to contribute to each other
so I can imagine that situation happening but I would imagine
it also be an extremely rare and they're almost always been an IK
interchange ideas between almost
any pain nomination experts a
pressure ever
oh oh boy the editor what editor do you use
what key mappings to use hot damn 24 ac
um the um
so the answer is yes all the time um
even amongst you know petals kinda famous for being dogmatic about things
like key mapping and their bodies in the same editor
the Gaslight different officers years difference editors um
thanking mappings and such %uh so the
it back it up with a hike in a match at the No a bigger issue and say open
source situation
hey you wanna work on some open source okay that's great okay
now we're kinda but we ever has our custom tuned laptop
just for them um if somebody really wants to learn
other editor that that's a great opportunity to do so
are your day max percent in November San you know this is a great
opportunity for me to learn a he Max or office are all set um
at the very least bought finding the default settings on those editors
like cedar overwrite all up the defaults guy like reverting back to the default
on a lot of these editors can help
because the other person they may not know your custom thing but they know
the default so whatever the editor are whatever the editor is
I'm so like finding some compromise I can be great
is also good opportunity for you both to use something you're not familiar with
and you can both are not together us to the side
re: a I'll
yes I I think the question is like how do you
decide kinda how much driving one person does versus somebody else you like to
to switch off the the typing every few minutes
are a few hours are maybe somebody all types all day long and other processed
on the next
today I would say um
this is going to sound a little squishy but
kinda whatever works out great for the pair within
within limits so for example out by Never Say acceptance
weird situation like something has I used to work somebody had our site
literally could not type
yes pair programming with somebody who it's physically on cable incapable of
um so 70 situations I would say that going all day
with i mean somebody pair pretty unbalanced um
down to the other extreme like you trade letters too far
a I find it yelps basically be a
every kinda few minutes I like there can be
I'll you can use things like campaign to enforce
up below in a situation that would go on balance up without it
at the person is just a keyboard haha that is not going to give up the key
worked as a
I got the typing so much fun um and then the other pic until like hey what he
says I thought well it's also have a little
non-confrontational cue
at like hey maybe we should ping pong this one on that %uh KIII get
a message on my hands down um so that can be a good way to bringing the
but like like there's a there was a a question earlier about non-verbal
communication and
and I kinda turned it into how the flow works out and just those little
people people go through a peaks and valleys big ones throughout the day like
maybe you had breakfast in your like
and your coffee near up here and then it's like help 15 minutes before lunch
in your kinda like
will struggling and then of course is that to those I like three o'clock
were like Bruno you a dislike really really working on your pretty hard
and you're like feeling like you're gonna fall asleep but your
inevitably people's rhythms
are all they're not going to be locked directly and aunt as
as far as like the energy level psychadelic
writing the peaks so somebody's like really into it and then they can to take
a little pas in their thinking
and that's a great opportunity in a good healthy pairing scenario where the other
person can to jump in
and my and my experience that every has to be every
few minutes sometimes five sometimes 10 sometimes too hope that answers your
I the other guy didn't get to talk earlier
couple couple questions there I'm one I
it and an effort to sort a balance the pair see don't have
too many kinda Bob either
experience levels are exactly the same or totally wide-ranging ones
do you ever do we ever say try to mix up the pair specifically to pare people
I am purposefully like a
so they short answer is yes we sometimes will do that especially when it's
something like a
hey John is really get a CSS with the CSS chore
coming up I add hey you know Sally
you really don't know any CSS is you but you said you want to learn
love how about if you guys parabens somebody color
arm or when somebody is not working on say that's one area the code lot
and had become there's which is a kinda
a danger um being getting
rotating people through that a expert rapidly
so that they can transfer get that not get that knowledge shared among stressed
that he will do that on purpose as well
a secondary question was how do you decide when
people are gonna pair um and a
couple answer to that one we as part of our morning
kinda stand-up meeting morning meeting I'll check n
we say who what's the switch pairs we try to switch every day if we can
up 10+2 structure our projects
such that the thing you're working on are these little
thats that you can often get done in a day so that's a great opportunity to
change like a we just finished that thing on the profile page I'm done
we're done with that let's mix it up to finish something yesterday okay let's
trade I
sometimes I have people who need to stick together for a few days
and that this time um
now %um but the officer can happen where
maybe this is really long running feature super complex
these two people that working together for three days I
idea that like managed to convince people to let them go for days I'd at
and they're still together and still not done we usually will
encourage them to break up and get another mind the next that usually means
are stuck on something
or that the stuff they're working on a so complex that we need to get some
ideas and mind to those are all
ways in which we decide how to combine pairs
right cross training different disciplines like
sis ops and programming I might turn that into
I bringing those pain designers a pain with your product manager
I I love that
i'm for many reasons wonder is the
the easy way no like cross cross-training
somebody's not very good Asus of their pain with SS ops percent
they're both gonna learn a lot from each other up
but the also I feel like the secondary benefit up the cacophony these camps
the il's of guys out there like
the yeah %uh those designers
way Photoshop with that um
it so pairing can also bring together these other people
and a turns out we're all pretty much the same for all
Kiki people and would like to learn from each other and
it's a pain can break down those kinda social barriers as well
so there's literally yes cross-training now something I haven't necessarily seen
full-time pairing between these different organizations like
you always have a programmer always paired with a sense of person
um those tend to be more targeted things like able
you got to deploy to that server and I T kinda owns that
but hey let's work together on getting this working because I tease ever
that thing you're trying to deploy does and does a great targeted
situations to to care
I think we have time for maybe Wahine more way in the back when should you not
all I got 45 seconds um that's that's a
that's that's a tough that's a tough question I'll think there's anyone
situation like you know definitely
in the pair programming handbook online you know fifty it says don't care the
um yeah maybe I'll
changer question in till like I
make sure that you take breaks if you are getting burned out on pain
I don't think it's necessarily a bad thing to say like I just celos de
um other tasks that shouldn't be paired on
I don't necessarily think so think you know you may find something
by Tom a to make sure that you you take breaks throughout the day
so you can kind of take a break from this intense situation
and then 17 once in a while you may not want to
you might want to take a break from caring altogether just assertive
take a break from that ultra intense
interaction you may need a break and I think that's ok and I think that that's
time does anybody have any questions thank you
the come

No comments:

Post a Comment