Two's Complement - The Joy of Programming
Episode Date: September 11, 2024Matt and Ben realize they love their jobs, and decide to keep doing them. Flow state, to the point where it makes people uncomfortable, is discussed. Also toilet humor. Ben makes an unintentional Sesa...me Street reference. Matt recalls his level 70 cleric.
Transcript
Discussion (0)
Phenomenon. hey ben hey matt i mucked up the intro didn't i so this is gonna be a pain to edit never mind
hello how are you doing i'm just i'm making notes for myself in the actual audio recording
that everyone's gonna hear about how badly i mucked it up well you know that's fine this is
this is a high production value podcast it is well it is i made you get an electronics
project box out just to make your microphone a bit higher up so yeah because i had to build a
better microphone so you had to the electronic project box and then no no we didn't quite i i
dread to think how complicated and how deep that rabbit hole goes if you're if you can actually say
no i want to make my own microphone i'm gonna going to make my own USB microphone. Oh my gosh.
What technology?
That's a really interesting,
I know this is not what we were going to talk about,
but what a fascinating set of technologies
you need to understand,
both analog electronics, digital electronics,
protocols, isochronous, whatever it's called,
isochronous, I just feel like it should be isochronous,
but yeah, all right. Well, we're not doing that right now. Isochronous, whatever it's called. Isochronous. I just feel like it should be isochronous, really. But yeah.
All right.
Well, we're not doing that right now.
We both have commercially bought microphones, I should add.
Yes.
And hopefully.
Yeah.
I'm a professional.
A professional USB microphone maker?
No, but I am a professional.
You just said professionals.
You didn't qualify.
I'm a professional boxer.
Here's my USB microphone.
That's right.
That works.
Yes.
Anyway, that's not what we were going to talk about today.
What are we going to talk about today?
I was kind of thinking about talking about, I don't really have a better title than The Joy of Programming.
The Joy of Programming.
Right.
I love that name.
That's great.
Yeah.
It's sort of like,
um,
you know,
possible references to possible things from the seventies that might be
not appropriate for children.
But,
um,
the didn't Madonna make a book that was something like that as well.
I think that was a joy of something else that,
yeah,
again,
the book I'm thinking of is not, I'm thinking of was not written by Madonna.
Okay. But in any case,
the phenomena of doing things that cause dopamine to be released into your brain,
which in some instances you might call addiction, in other instances, you might call the thing that we do
professionally and get paid for, which is programming. And there are many other things,
but there's just sort of this amazing phenomena of if you love to program, there are aspects of
it that are deeply rewarding to you. And I have definitely had this sort of like, you know,
moments in my life where I had opportunities
to maybe step away from that. And then ultimately decided that I did not want to do that because
programming brings me a lot of joy and it seems like it would be a shame to give up on it. So I
was maybe going to talk through and think about, okay, what specifically about programming
brings us joy as programmers who love to do these things?
What an amazing topic.
And as all of these therapy sessions, I mean, sorry, podcast recordings go, it couldn't be more timely in so many ways.
Which I'd like to think that you had the foresight to think about that and go, hey, I'm going to propose a topic which is going to make Matt feel better.
But one thing I would say is that your comment about addiction rings somewhat true.
But my understanding is that the addiction part has the negative connotation, a negative part of the definition, which is that you will seek out that dopamine rush to the detriment of other aspects of a normal life or something.
And we don't do that with programming?
Some phrase.
Well, I mean, so there's a difference.
There is a difference.
Like if you leave your child at school and forget to pick them up because you're programming,
that might be considered an addiction.
And I'm sure we've all but skirted the edge of things like that.
But I said, it's a very different thing from you know and so right personal example many times while i'm in the flow state pun intended coming up i'm in
the flow state and i'm programming and time has no meaning whatsoever by the time i finish i realize
that is actually excruciatingly painful because I've needed to go to the bathroom for probably half an hour.
And I've zoned it out so badly that now I need to get into a very different flow state quite urgently.
And that you could say has the hallmarks of like being sort of somewhat destructive of a sort.
Right.
Right.
So I get that.
I get it's on the scale but i get the i just want to make sure that like we don't first of all we don't
um minimalize folks who are on the addiction side of things whatever those things are right let's
not trivialize it right because this is a little bit of a this is a light-hearted conversation
about things we love not like um uh anything other than that but um yeah i think maybe the the the part where programming
the joy of programming is detrimental to my life is that i don't know when to stop doing it for
money when doing it for fun that that changeover is you know like and that can be abused for
example when you know 100 million years ago when i was in the games industry the fact that they barely paid anyone to do anything but expected us to do 14 15 hour days
for you know seven days a week for weeks and weeks and weeks upon end um there i think that
the fact that i loved it so much and i got so much out of it carried me through in a very different
way than i would do nowadays even though i do love doing it. I will go, actually, you know what? I've got the family to go home to. Anyway,
so getting those caveats aside, what makes programming that much more fun than most
other activities other than maybe, I don't know, I mean, between consenting adults, golf.
Well, or video games. Or video games. And this is one of the things that was on my mind thinking about this. And again, not trying to trivialize addiction and people who
struggle with addiction, but there is an argument to be made. And I was talking to a friend about
this earlier today, and he was kind of making
this argument it's like you know there are sort of older models of addiction and there are new
newer models of addiction and one of the more new although I am not a psychologist or a psychiatrist
and I am not trained in any of these things I'm a very very much a layman but I'm just saying from
my perspective the way that I think about this stuff is that you can have functional and
dysfunctional behaviors.
You've maybe heard the term functional alcoholic before, and that is a person who struggles with alcohol addiction, but does so in a way that it's not really affecting their life
in any sort of like significant enough way to be dysfunctional, right?
To be in those situations, like you say, where you don't pick your kids up from school
or you lose your job or something like that.
And video games certainly have this, this, the same property or can have the same property
of, you know, playing video games. Maybe you are, you are a functional video game addict and you
just play a lot of video games and you enjoy it and you, you know, just spend a lot of your time
on that and that's fine. And maybe you're a dysfunction of video games and you enjoy it. And you, you know, just spend a lot of your time on that. And that's fine.
And maybe you're a dysfunctional video game addict.
Right.
Like ducking out of work in the middle of the day to play Eve Online.
Maybe it's five in the morning and you're still playing a level 70 cleric.
And, you know, you've got to get up in 35 minutes time and you're.
Exactly.
Exactly.
Exactly.
And I am guilty of that for sure sure especially in my younger days where it's
like you know i would play video games until two in the morning and then uh you know like when i
was in school i would play video games super late and then have to wake up early for class and then
fall asleep in class and i'm like this is a problem i need to not do this anymore and so like
why are these like why why do why do we do these things?
We do these things because dopamine and programming has this, and you know, you're
talking about the flow state earlier. Programming has this amazing ability to put us into this state
where we're just like getting the dopamine rewards over and over and over again. And you're like,
oh my God, this is amazing. And then five hours fly by just like with the video games, right?
But of course, no one's going to like, you know,
say, Ben, you're addicted to programming and you need to stop, right?
Like-
No, they'll say, thank you very much, Ben.
Here's another paycheck.
Exactly.
And as you were saying, like ironically,
maybe not ironically,
in the video games industry that it's like,
yeah, they'll be very happy
to just have you work 12 hour days.
And not only will they not have an intervention for you and tell you that you have a problem,
but they will reward you and say, great work. And, you know, put your name on the, on the,
that's not exclusive to video games. You know, I think, you know, there are many places that
will be happy to take on extra, extra work for no extra. Yeah, of course. So, so like,
I kind of wanted to, to think about this in the context of like, how do you harness this, this property, this reality for good? And how do you, the sort of dimension that I was talking about before of
like not giving up on it. Right. Because it's like, you could for certain other behaviors that
are like this, see this property as a curse. Like when you do this thing, your brain releases a
bunch of dopamine and that means you're just going to want to do it all the time. Right. And you apply
that property to a bunch of different things and you get a bunch of different results. You apply it to programming and we call that a career.
Right. So like, what is it that, that does that? And is that something that you should give up?
Is that something that you should try to stop? I argue, no, I argue, lean into it. I argue no. I argue lean into it. I argue embrace it and maybe even be thankful for it.
As I was saying 10 minutes ago, I've had different opportunities in my career
to sort of move into roles where I'm not coding anymore. And I've tried that, I've done it,
and I didn't enjoy it. I think we've talked about this on the, on the pod before.
Um, and one of the reasons why I decided not to do that is because I really view this joy of programming as a gift.
It is a very fortunate thing that the thing that I, one of the things I absolutely love
to do also pays really well.
Yes. I absolutely love to do also pays really well. And I would be sick if I ever gave that up and
put myself in a position where I was like, I hate my job now. Right? Yeah. I mean, this has been
a 30 plus year career for me too, where everyone I've ever spoken to who has a quote normal job,
because I don't know how common it
is that you and I, the situation that you and I are in, but other people would introduce me and
say, you know, like, you know, he does his hobby for a living. And I'm thinking, yes, I do. And,
you know, I, it was 10 years into my career that my mom stopped asking me, when are you going to
get a real job? Because to her, I didn't have, I mean, part of that was games, right. But, but also
like, you know, if you, if you, you know, I didn't have, I mean, part of that was games, right? But also like, you know, if you,
you know, that was the quote, you know,
about work-life balance, whatever,
like if you love your job,
then there is no balance to be had.
You know, there is no work and life
that are separate things.
Your work is part of your life,
which I mean, inevitably it is.
And the dysfunction then comes
when you do it too much
and you can't stop
and your personal relationships suffer in a way
that you you know but just suffer full stop right but yes to your point if i can get on a train at
you know 7 30 in the morning get to work spend eight nine hours a day in a flow state or close
to enjoying what i'm doing provide provide enormous value, we hope,
to a company and they remunerate me for doing that. And I high five everyone on the way out,
get on a train, go home, maybe even have some energy to do some hobby programming in the evening
still somehow, then why would you stop doing that? What possible reason is there to do that?
Yes. So one counter to that obviously is that you do have,
unlike again, many other careers or things that you might, what's the word I'm looking for here?
Let me just explain it. One thing that we have is our job is accessible to us remotely. As in,
when I get home, I can carry on my job, but I can also do the things,
most of the things that I could do in my day job. I can do as an individual person. I can write the,
I can write code for my hobby projects. I can nowadays fire up cloud providers worth of GPUs. I want to play around with GPU related stuff and it's, you know, it's not free, but it's also not
super expensive. There's not like too many things. Now the very, very crazy low latency stuff that I also love doing gives me probably the most dopamine is not something I can do because I
do need some magical stuff to be able to play with in the evenings. But by and large, I could say to
myself, all right, for some other trade-off in my life, I will spend my time at work not doing the
thing that I love for some other benefit to be determined,
but I still at least can go home and do it on my own time and do my own
projects,
which is again,
harder to do for some folks,
or at least maybe they have a different thing that is just,
you know,
I knit when I get home.
Sure.
Right.
Fine.
So that,
that would be my only counter to you is that like,
well,
you know, if you loved programming, you can do it on your own time.
True.
But like, you don't, you can't make a career in knitting.
At least I'm sure there's somebody somewhere is listening to this going like, wait, what?
But that's what my grandma did.
I mean, it's very difficult.
Let me rephrase it is extremely difficult to make a
career in knitting that um it's uh there's a there's a i'm gonna bring back the golf reference
there's a golf joke the the corn fairy tour is like the the you know the the minor leagues of
golf okay and there's a joke that's like what's the difference between a corn fairy tour player and two large pizzas?
Two large pizzas can feed a family of four, right?
Like the problem with those sort of hobby professions in most cases, when you're sort of doing the thing that you love, is that it doesn't pay particularly well. Right.
You may be the world's best musician, but like only one in a million people will make it to somewhere where they can support themselves.
So you're probably working three jobs and then busking in the evenings if you want to try and make that a career.
Whereas programming, at least the programming that you and I do, someone is more than happy.
They will fall over themselves to say, can you please come and program for me?
Right.
And here's some money for you.
That's like very, very reasonable.
Thank you very much.
Right.
That's a difference.
I get you there.
But what if that same company says, you are, we value your wisdom. You've been doing this for 30
years, Ben, you have a great way with people. We, people follow your lead. People will align
themselves with your goals. You will carefully and patiently explain things to junior folks
and they will be better because of what the time that I spent with you telling them or
teaching and coaching them.
Could you do that for us instead?
Because it's so much more valuable to my company that I have you making the shot, calling the
shots and mentoring and coaching than it is to have your hands on the keyboard because
I only get one Ben and he's amazing, but your hands on the keyboard make one Ben go fast. Whereas you talking to 15 people for an hour gets 15 people going 20% faster.
And that unfortunately beats you. What would you say to that?
Well, so in that particular case, I also love mentoring people. So that's maybe a special
situation of like, oh, I don't mind doing that at all. That's fun too. But for maybe the more, you know, a different aspect of that,
which has been, you're really good at organizing and planning and coordinating. Can you please
sit in meetings all day and make sure that the, you know, software engineers who work in this
company are working on the right thing? I would say, yes, I am capable of that and I'm going to choose not to. Right. Because that will not bring me joy.
Right.
And again, the fact that you could go home and bring joy to yourself, which sounds now
very dodgy when I say that out loud.
Not like that.
Not in a lusty way.
You could come home.
I could come home and I could do any number of things.
And I do,
you know,
I,
I love golf and I play golf on the weekends,
right?
No one's going to,
you know,
again,
feeding the family of four,
no one's going to pay me for golf and I'm not on the corn fairy tour
anytime soon.
Yeah.
I do those things and those are fun.
That's part of having a,
you know,
heterogeneous rich life full of lots of right.
You know,
different aspects and not just being single
you know as part of the tapestry of life programming is a really big part of that of
joy for you so but that it's not the only thing yeah but of the things that bring you joy it is
the only one that you could make your career out of and therefore the spare time that you have when
you get home could be used for more programming but it could also be used for time with loved ones, time on the golf field or in your backyard in your golf simulator.
Or playing those video games that I love to be addicted to.
Oh, those video games.
Yes.
Yes.
Exactly.
Yeah.
I think that's a really level.
I mean, I don't know.
I'm not surprised, but it's a very thoughtful, level-headed response to what i thought was going to be a
difficult and challenging question for you so well i mean i do think about these things evidently
but yeah so one thing i wanted to get into in this episode is you know we talked about flow state
earlier right we should probably talk about that for people who may not be familiar with it i would
hope that most programmers will at least recognize it when they when they exactly yeah yeah i think you go oh well even
not without it i think the name is sort of quite a motive of what the the concept feels like but
yeah we should definitely you want to take a crack at a definition i will i mean we sort of touched
on it already you know like we said that flow state where you look up and five hours have gone
and you're busting for a wee right you know that's that's what flows i'm pretty sure there are textbooks that describe it like that um no but
it is the point at which you have become um so deeply ingrained in what you're doing that you
don't notice what's going on around you you completely zone out anything that's around you
um and you're able to make essentially what
feel like um uh i always think when i was talking to my kids about this in their music which is a
complete non-secretary but like i talk about it in terms of of star wars references it's like it's
when the force is flowing through you yeah right you know you you everything comes instinctively
you're all tabbing between things you're pressing buttons and you're not even aware that you're doing them it feels all automatic everything's
going maybe you've got music going in your ears that tends to help me maybe you haven't maybe
you don't need it maybe you're just in that but like essentially your attention is focused and
directed and everything is just feels so natural and then you get a tap on the shoulder and the
whole thing falls over it feels like you've tripped over a tree root you know in those kind
of weird dreams where you suddenly your whole body twitches and
oh what what you're jarred out of it and then you're like oh and then you're trying to get
back into it and it's gone but you can be so productive and it's so uh uh enjoyable i mean
to to coin you know to go back to your endorphin uh rush here your dopamine rush um it is so
enjoyable when you're in that you're making progress. Everything just feels great.
So yeah,
I made it sound very druggy now.
No,
I mean,
it's so I,
I read,
I tried to read a book on this.
I'm going to go see if I can figure out the name.
Oh,
good luck finding that.
This is where,
because we're not going to do much editing of this.
I can talk while you Google,
if you like. Yeah,
no.
So what is the name of this book again?
It is Flow, The Psychology of Something.
The Psychology of Optimal Experience.
So this book, I didn't really like this book because I was looking for like a deeper, more thorough explanation of this phenomena. And this book kind of-
Sorry, you said phenomena and I have to go do-do-do-do-do.
Yep. Phenomena.
Do-do-do-do-do.
Well, there's our code open.
Yep.
Anyway, you didn't like the book.
Yeah, I didn't like the book because it got a little culty.
It got a little like woo-woo.
You know what I mean?
As these self-help books are wont to do.
Yeah, yeah.
But my memory of this is that he did have a pretty clear definition of flow state, which is sort of the intersection of focus and proficiency.
Right?
You're very focused on something that you know how to do well.
And again, getting back to video games,
if you've been like a moderately good player in like a first-person shooter,
you have definitely experienced flow state,
where you are just moving around, reacting to your environment,
shooting at targets, you know, going through a level maybe that you've
done a couple of times, like that is 100% flow state. And it is the same thing that you feel
when you are working on a task where you are proficient and are able to focus, and you're
making sort of good progress. Now, there's definitely a state of programming where you're
not in flow state where you're just staring at a stack trace and you're very confused and you're not feeling very proficient and maybe not very focused and
you're just like i don't understand what's going on here or more on brand for us you're waiting
for a long build or you know you've been knocked off of like your your your flow because you're
waiting for something you've all tabbed to yeah because you've been distracted, right? You've had some kind of external stimulus
has applied to you.
Mm-hmm, mm-hmm.
But I view that flow state
as being like the core of the joy of programming, right?
And there are other interesting things.
There are other interesting things about programming
that are fun and I enjoy,
but that's like the main loop of the joy of programming.
That is your nugget, the center of it.
Yes.
I was going to say, again, away from the keyboard and having just come out of a few meetings today where this has happened to me, we've had some great discussions
with people with the moral equivalent of whiteboarding ideas where that can also be very rewarding.
Yeah.
Yeah.
And, and, and essentially when people ask me, what do I like about programming?
I do, I do like the flow state. And I think it is a very big part of certainly why you and I are so aligned on things like, hey, if we had the build be this much faster, then you would just build and test and build and test.
And then you're like banging away at the code and everything's just going.
And you're like, this is great.
Nothing here to stop me.
But also what I tend to say to people is it's problem solving and it's deep digging it's
like you know always picking up another rock and going like but why is this broken well that doesn't
make any sense and like almost like this yeah that's what i think i i i guess what i tell people
that i like about programming yeah but the flow state is a core part of it for me as well yep
yep and sometimes those things go together right like you can be in a flow state is a core part of it for me as well. Yep. Yep.
And sometimes those things go together, right? Right.
Like you can be in a flow while solving a problem.
And like, again, video game analogy, it's like, okay, how do I solve, how do I figure out this?
This dungeon.
This dungeon.
How do I get this thing up to this?
Yes, exactly.
How on earth can I get the flame down from up there?
Right.
You know, it's like play Portal for an hour and you will experience this for sure
right true um so like you can you can be doing both of those things at the same time you can
also be solving problems and not be in the flow state and still find that very rewarding and i
certainly do like it's almost more of like a jigsaw puzzle thing where you're just kind of like
you know like i don't understand how these things are going to fit together. What am I going
to do here? Although that's maybe not exactly a jigsaw. No, no, I'm with you. It's like kind of
the same thing, right? Yeah. But yeah, I mean, those things can all, the sort of puzzle aspect,
maybe more like a Rubik's cube, like when you don't know all the algorithm to do the Rubik's
cube and you're doing it in 3.4 seconds. Right. Right. Which is not me. Yeah.
But like that kind of problem solving and that sort of puzzle solving is also very rewarding, but it's maybe not flow state. Right. Yeah. Yeah. Yeah. So do you, I mean, flow state obviously
is not a programming concept. It's not unique to programming. We've already just said that,
video games also, you can be in a flow state um obviously only a very few people get paid a living wage to play video games all day
right um something i need to keep informing my teenage children um yeah but what else do you
think what other things can be flow state what is it about programming do you think is it just an accident that we found a job that flow state is good for do you think i mean maybe maybe this
is where we could actually invite listeners to send us messages on the emails or hackaderm or
whatever the the communications doesn't say like what what other things are there out there because
you know i'm skewed by my knowledge of what what um uh what my experience is and the
only other things i can think of that are close to that that are that you could maybe call a career
of people who are like scientists and um you know mathematicians who are trying to solve difficult
problems of a sort uh and you know sitting down with a piece of paper working out stuff and i can
only imagine that must be something like a flow state if you're going to be staring at something
for four you know three or four hours while you manipulate symbols around and look for that
that glimmer of inspiration that goes ah this will cancel with that or so again i'm so bad at math
but like um or similarly you know i i have a there's a acquaintance of mine that is a theoretical
physicist and i can only imagine that what goes on when he's at his uh desk at work with his feet
up on his desk just with his head behind hands behind his head just thinking about physics which
is presumably what a theoretical physicist does right there's got to be something going on in
there that's like you know akin to what i must be feeling when you know you're trying to go well what if that happens over there i can do yeah but yeah it's maybe other knowledge
work in general do you think other knowledge i mean my i don't really know like i said i've
tried very hard to spend most of my career doing programming but um i would imagine that there's a
lot of knowledge work that has this property right but we've just, this happens to be the one that we did as kids and turned out to be a
decent career and gives us this joy as,
as well.
Yeah.
I wonder what it was.
So,
yeah.
I mean,
if we just,
there's,
there's problem solving there's and so like you've like to say the
problem solving,
sometimes the problems of your own
making you know the whole uh what is it the detective tell me oh yeah programming is a
murder mystery where you are both the detective and the murderer right and so in a sense that
that you are you're doing both of those things right you're both committing murders and also
solving them at the same time yes uh you know there's definitely always something to be looking into. I'm really interested
in what it is about programming specifically. I've always thought, again, it's like you're
building these edifices, these complicated interlocking systems, and yet they don't exist
anywhere but your own mind, really, and a bit of crappy ASCII in a text file somewhere.
Yeah. No, I mean, 100%, there's a big creative aspect of programming, which I think most
lay people wouldn't really expect.
I remember vividly talking to my game producer in the late 90s, early aughts, and we were
talking about some aspects of programming.
And I can't remember what
the discussion was about, but halfway through, I realized that he thought the thing that was
blocking us from getting more work done was our inability to type faster. Right. And you're like,
oh my God, no, it's not like I just know what to do. And I have to tell the computer what to do.
And if only I could type faster, it would get done quicker. It's that I don't know how to tell
the computer what to do because none of us really understand whether it is we want the computer to do in the first place and that's
right after and you're like that was a mind-blowing thing because it's yeah as you say lay folks may
not necessarily realize that it is a very creative process and that's just also a mayor culprit on my
own front front here obviously i sort of said at the beginning of this you know this is a therapy
session but i have just managed to uh put to one side my management responsibilities in order to
get back to doing more programming so this couldn't be more on target for me um one thing i realized
was um yeah i've been trying to do a bit of programming in between but i've been so mentally
exhausted by everything that i don't think I realized how much space and time and relaxation
and the creative process needs. You need to be able to like pace around the room and not feel
under the time pressure to, to, to have these creative things pop into your head and go like,
and like, I think we've probably said some at some point on this show before now,
oftentimes you go home with a terrible problem.
And by the time you've got on the train
or by the time, you know, that next morning on the shower,
you kind of like put your head in your hands and go,
well, of course I forgot that this thing is unsigned
or signed or whatever it was,
or that will never work because of blah.
Or you have some new leap of thing
in the first thing in the morning
because something is going on in your head.
And that is, again, another example of the creativity part of this where it's not like you can just squeeze harder against something and keep banging the keyboard for longer, which I guess actually does dovetail back into the beginning part of this, where if you're in flow state, it is both obviously very productive and very rewarding, but it's exhausting too or it can be you can get to the end of it and go for the go to the loo and then go oh my god i just i'm done now
i'm done for the rest of the day and you can't keep on doing it which may be some other things
that fall under addiction right i mean it's almost like going for a long run and then stopping right
like which is the only reason to go for sorry excuse the
but that's the only reason to go for a run is to stop as far as i'm concerned there's no other
benefit other than the blessed relief when it's over right right and then it's like i don't know
if you've ever been in this situation where it's like you go for a run and you stop and you like
realize that you need to actually run more that is terrible that is like
that sounds nightmarish you stop for like two minutes and then you're like oh i was supposed
to do like seven miles and i only did five uh oh okay that's like it's it's awful i can only
imagine that again sorry to get all toilet tea on on you here but it's like if you have to if you
if you're going to the bathroom and for whatever reason you suddenly have to stop and then that's the
worst is it oh no hang on someone's just opened the door i didn't oh and then you're like oh yes
nobody needs that nobody nobody needs that this will just be our first r-rated um no we're just
going to edit all kinds of stuff out of this oh my gosh i don't know that we are
thank you uh you think too much of my editing skills
but uh yeah no i mean yeah it's and i've 100 had that too where it's like you know you're
cranking away on something and then you like commit push and you let it build and just all
of the adrenaline and on the all the chemicals just drain out of you.
And your brain just goes, and then you're like, all right, now I need to go to bed because I've been at this for 10 hours.
I'm spent now. fair proponents of TDD and other sort of aspects, which is broadly falls under the umbrella to me of gamifying something to
capitalize on the human love of a little hit of endorphins or
dopamine or whatever.
Every time the bar turns green,
you just get a little ding.
I love it because,
but,
but,
but again,
you and I have spoken about this before you and I are aligned on this
because of bias.
And that's why we have a podcast together, right?
Because we found how aligned we are.
But I've worked with people, and I'm sure you have,
who are much more, I just sit and I write code
and I write code and I write code and I write code.
And three days later, I build it for the first time
and it works and we're done.
And you're like, I don't know how you could be satisfied
at any point throughout that whole thing.
Because the entire time I'm sat on my hands
kind of rocking backwards and forwards saying,
just build it, build it, build it.
There's a typo, build it.
There's a typo, build it.
There's a typo.
And then the quicker I find it,
and even that is a reward.
Like I will often comment out large gobs of code
that doesn't compile while I'm sort of doing refactoring
just to kind of get the warm, gentle pat on the back that, hey, at least the bit you've done, often comment out large gobs of code that doesn't compile while i'm sort of doing refactoring just
to kind of get the warm gentle pat on the back that hey at least the bit you've done the bit
you've converted over still builds and i'm like okay that's good enough for now and then carry on
yeah yeah yeah yeah no you're right different about this right you know it can't be
for sure those those habits that we that we both have really do kind of gamify the process. Right. And it's like,
it's, it's playing into the way that we think about it and what is effective for us. And,
and, you know, I, as much of a TDD guy as I am, like you have to recognize that this is not for
everybody, right. It might not even be for most people. I think it's a skill that everyone should
learn how to do, but whether you use it or not, that's just depends on you and your team also. Cause you kind of can't do it by yourself.
You need a team. So finishing up on the sort of themes that we normally touch on on this. So
another thing that you and I have liked to do, and I haven't done for a little while
is pair programming. Can you get into a flow when there's another human being in the mix? Do you
think? Yeah. Have you ever had a conversation in a restaurant? Oh, what an interesting analogy.
You're eating your food. You're talking. That's pair programming flow.
Unaware about everyone else in the restaurant who's having their own conversations. Yeah.
Until, and this is a feature not a bug the person behind you talks
starts talking about how they murdered their wife and you're just like what what i was gonna say
your brain just like clues into that and neurons in my head that will will respond to you know your
own name being mentioned somewhere that's immediately jumps you out of it or if someone
says something you know factually incorrect about uh 1980s gaming hardware. Right. Immediately.
And it's just boop.
Right.
And then it's like, you know, when the people who are, you know,
two seats down from you start talking about how they're going to delete the module that you're working on, you're like, wait, what?
What are you doing?
You make it up immediately.
Yeah, right.
Right.
So, yeah, it's humans are wired for this, right?
Like they're absolutely wired for this.
Now, not all humans are wired for this and not all humans can do this sustainably every
day and work this way all the time, you know, and some people who can just don't like to.
So there's all kinds of caveats here.
Right.
But like humans can be social creatures, even programmers.
And if you've ever had a conversation in a restaurant where
you're eating a meal and talking to somebody, then I think that you can pair program and get
into a flow state. It's funny. I mean, I do believe you, and I'm sure that things that I have done
in that world could count as being in the flow state, but I just don't think of it because i think of it as so uh such a solitude and whatever that word is uh solitary there there's the word such a solitary
activity and it's very personal to me that state where i've got music blasting in my ears and i'm
like on the keyboard um that doesn't come out on the radio very well does it i'm just miming key
like infinite monkeys banging on the keyboard um but does it i'm just miming keep like infinite
monkeys banging on the keyboard um but but i i'm sure you're right actually and i'm thinking of
you know you know probably the same person that you're thinking of who's very fast on computers
that we've both paired with over in our careers um those episodes pairing with him have probably
been the most that i could imagine as being flowish even if i wanted to strangle him from
time to time and i'm sure likewise he to me yeah Now I will, I will caveat this a few ways by saying it's rare. It's kind
of a skill and it's sort of hard to do. And it's not like, like it's, it's good. It's a nice thing
to be able to do, but it's not going to turn you into like some superstar programmer. So it's like,
you know, it's kind of an interesting thing, but's my point my only point in saying this is that it is definitely possible like many times in my career
have i been doing that uh another thing is kind of like is tennis or like ping pong where you're
just sort of like oh right yeah back and forth you know you're just watching the ball and moving
around and hitting the thing and then you know 17 back and forths and then someone hits the line
and you're just like, all right,
that's the end of that point.
And it's like a mutual flow state.
No, I guess so.
Yeah, that's a very, yeah.
Even that's a sort of competitive flow state, right?
There's two of you there for a short,
depending on obviously you can play doubles
and whatever, but no, that's interesting.
And I think it's no accident
that sort of like the basic intro
to pair programming exercise is called ping pong.
Because it's very much like that.
Yeah.
You like the whole I'm writing a test that will fail or, you know, yeah, that kind of thing.
Yeah, that's interesting.
Yeah.
Well, Fred, we're basically at recording time, I realized, because we've been in a full stay.
Well, the time just flew by.
It did, didn't it?
Oh, come on i mean dog dog interruptions notwithstanding which again if people go what dog i've done a very good job
but likely is not you'll know exactly which dog i'm talking about yeah this has been really
interesting very very um very cathartic for me as i move back into hopefully times where i can
have a lot more flow in my life and less talking to people in rooms. But, but yeah, and I thank you for your, your, your answer to the
question of like, why don't you just become a manager? Right. Yeah. Yeah. Well, sometimes you
just got to like, take advantage of the gifts you've been given. And in my mind, this is definitely
one of them. I don't want to give it up anytime soon
cool well i guess that's a great place to end then so until next time my friend until next time
you've been listening to two's compliment a programming podcast by ben rady and matt godbold
find the show transcript and notes at www.twoscomplement.org.
Contact us on Mastodon.
We are at twoscomplement at hackyderm.io.
Our theme music is by Inverse Phase.
Find out more at inversephase.com.
Get a little ding!