
On Coding, Ego and Attention - digitalmaster
https://josebrowne.com/on-coding-ego-and-attention/
======
camgunz
I get and agree with what the author is saying here, but I also think a big
part of this is that in software engineering, so much of what we do is
ephemeral. If you're a carpenter you'll know if you're good or not. You'll be
able to do stuff like frame a house, replace a door, etc. And then when
someone asks you how long it will take to frame a house, how much it will
cost, what supplies/staff you need and so on, you'll be able to say.

We've been doing CRUD in our industry for decades. How can we not just say
"this is how you do CRUD, we're done w/ that now". We've been doing data
serialization for decades now. How can we not just say "this is how you
serialize"?

There are communities where this is the case. Why have we abandoned them? Why
have we abandoned that knowledge and experience to reimplement things in
language X or using platform Y?

We might not like to hear it, but my guess is it's a culture problem. They say
the way to get ahead at Google is to build a new successful product. Is that
the same thing we're doing? It's easier to get ahead by building a new Z
framework than to become a core committer on X framework from 10 years ago?
Are most X frameworks run by toxic communities? Is there something specific
about software that means tenured projects become less and less
useful/maintainable/understandable over time?

There's something in here that's specific to SWE. I don't know exactly what it
is but, I think we should figure it out.

~~~
oarabbus_
>We've been doing CRUD in our industry for decades. How can we not just say
"this is how you do CRUD, we're done w/ that now"

As an analyst, can you explain this bit?

I keep hearing things like "that's not actually a software development job,
just CRUD", "we're done with doing CRUD" etc. But it seems like between the
application and the DBA all the CRUD is taken care of, wouldn't the developer
just work on the application itself? And isn't saying "we don't do CRUD
anymore" somewhat akin to saying "we don't do [+-*/] anymore"? How can you
have persistent data without CRUD? I must be missing a piece of the puzzle in
this discussion.

~~~
thruflo22
Yeah, CRUD is a solved problem but you still have to do it.

Mapping state to the database is to web dev what applying paint to the canvas
is to painting. It’s how you do it that counts. Saying otherwise is overly
reductionist.

Frameworks exist that abstract CRUD away. But you end up sacrificing UX and /
or flexibility.

~~~
pydry
Picking the right level and nature of abstraction for the problem at hand is
something of an art. Too high and you'll straitjacket yourself. Too low and
you'll spend most of your time maintaining ugly boilerplate.

One of the many reasons why CRUD is way harder than its reputation credits it
with.

------
abvdasker
In my experience, the best way to insulate yourself from the pangs of imposter
syndrome and unproductive self-doubt is with experience of past successes.

Early in my software engineering career I would constantly and painfully
wonder if I was actually capable of fixing a certain bug or solving a new or
difficult problem. But then after working hard on a solution, 99% of the time
it would work out. After going through this process of debilitating self-doubt
and eventual success over the course of years, it has become much more
manageable.

I still sometimes panic when initially faced with a very difficult programming
problem, but I can put those fears to rest much more easily by saying, "ok,
I've solved hard problems before. I may not know how to solve this particular
problem yet, but I feel confident that I will be able to figure it out just
like I did in the past with difficult problems X, Y and Z."

At the risk of sounding pedantic, part of leaving the beginner phase — and the
true value of experience — is developing a kind of armor against those
feelings of inadequacy (of course you don't want this to go too far into
feelings of overconfidence or an inability to reflect when things do go
wrong).

I also think it's the responsibility of more senior engineers to recognize
when a more junior teammate might be having those self-doubts and be
empathetic while helping them build up their own successes.

~~~
mettamage
> I still sometimes panic when initially faced with a very difficult
> programming problem, but I can put those fears to rest much more easily by
> saying, "ok, I've solved hard problems before. I may not know how to solve
> this particular problem yet, but I feel confident that I will be able to
> figure it out just like I did in the past with difficult problems X, Y and
> Z."

The following this just my experience, but it's a bit of an odd one! So I
thought I'd share for fun :)

I have this too and I only have 1 year of work experience.

What helped for me doing a course where I needed to know:

\- C

\- X86

beforehand.

The course was about analyzing binaries and malware. I didn't know any C and
almost no x86. I did the course as a challenge, but it to date has been the
most difficult programming challenge of my life. Teaching yourself 2
prerequisites while following a normal course load at the same time, _while_
feeling insecure and have a strong suspicion to not be intelligent enough was
tough, for me.

I've worked at 3 companies in that little 1 year of experience (2 times as a
freelancer) and it hasn't come close yet. I'm hoping where it finally gets
tougher, but I've heard from people who actually _are_ experienced full-stack
devs for 4+ years that that course was way harder than anything they have ever
done.

So long story short: do super hard courses. If they're not the hardest courses
of your life, then it isn't hard enough.

~~~
sild
Would you mind sharing which course you took please? It sounds very
interesting.

~~~
Mandatum
It sounds like Offensive Security's OSCP and OSCE

------
halfcreative
I feel like for me, reading and writing articles like this are a major source
of distractions. I often find myself reading articles like this, lessons of
self-improvement and tips of motivation and ways to be a better programmer,
instead of doing what actually makes me a better programmer (actually
programming). To extend upon the article, I feel like one of the easiest
distractions from self improvement is constantly reading about self
improvement. Not to say that the lessons in these articles are a sham, but
that there's a point where the idea of and dream of improving yourself becomes
a dangerously stealthy distraction.

~~~
moksly
The thing about working on yourself is that it’s actually work. Reading an
article, or a book on behaviour, self-improvement and what else doesn’t
actually change you any more than reading Harry Potter does.

It’s the years of applying Zen Buddhism, scheduling your chores or staring at
the mirror telling yourself you’re a great person that changes you.

I know because I recently recorded from a major depression and anxiety, and
everything that I’ve done that has actually helped, like lying to myself in
the mirror, or convincing myself no-one on the train was actually judging me,
took 6+ months to have a real lasting effect.

It’s the same with distractions. Just look at your screen time spent on your
smartphone today. It’s probably a couple of hours by the time you go to bed.
Like it is for the rest of us. Most of that time is frankly wasted, you know
it. I know it. But reading a self-improvement article about how cutting down
screen time is healthy for us isn’t actually going to change our behaviour one
bit. Maybe for a day or two, but not next week and certainly not next month.

~~~
mchan889
"The thing about working on yourself is that it’s actually work. Reading an
article, or a book on behaviour, self-improvement and what else doesn’t
actually change you any more than reading Harry Potter does."

This is well put, and I think part of the reason so much self-improvement
material is drivel. Generally, I've noticed that some of the most pathological
people are the most into 'self-improvement' as an idea. That being said, their
brand of 'self-improvement' generally does not extend beyond reading and
quoting books by various gurus.

On the flip-side, those I've met who are actually highly motivated and
disciplined, have never picked up one of those guru books.

Reading up on something is one thing, and in many cases, it's an important
first step. There's no way to start using a new language without reading
something. That being said, simply reading is not enough. On top of that, what
you read has to be actionable. The self-improvement platitudes are not
actionable. Reading a book on Python does not turn you into a python
developer. Why should reading a guru book turn you into one?

~~~
afarrell
> I've noticed that some of the most pathological people are the most into
> 'self-improvement' as an idea.

I've noticed that some of the people who spend the most time paying attention
to their blood sugar are diabetic.

~~~
mchan889
My point is more that they are checking their blood sugar levels without doing
anything about it.

~~~
afarrell
hard things are hard.

------
lostmyoldone
Big tired after an intense day, and I haven't really sat down and digested the
article, but it seems close enough that I think my - admittedly primitive -
tip can be of relevance.

If you get stuck, you tell yourself in whatever way you want, and honestly,
some version of the following: "I don't understand this thing that is
happening, but I know there is a cause. It does not happen without cause."

Honestly, it's a bit odd, and I don't know if that's the best way to express
it in English. Nevertheless, several people have some back to me and told me
that it has helped them.

My initial inspiration, and hypothesis is that the simple acknowledgement that
I don't understand the problem, and that the problem still - despite my lack
of understanding - still follow the laws of cause and effect, somehow
temporarily halts our brains tendency to protect our ego at almost any cost,
logic be damned.

I started trying this out after puzzling about why it's unreasonably common to
figure out the answer to something only moments after you get up from your
desk to go ask someone else for help, even when you might have worked with it
for hours. It had to have a reason, although I don't know exactly what it is!

~~~
webmaven
> I started trying this out after puzzling about why it's unreasonably common
> to figure out the answer to something only moments after you get up from
> your desk to go ask someone else for help, even when you might have worked
> with it for hours. It had to have a reason, although I don't know exactly
> what it is!

Well you've heard the advice on looking at a problem from a different point of
view, right? Usually this is intended in the sense of changing the context or
reframing the problem, and it works, but takes effort because we all have our
default go-to mental models. But it turns out that changing the _mode_ of your
thinking (eg. visual vs. kinesthetic, etc.) is just as helpful, and the act of
trying to phrase the problem verbally is usually just different enough from
just thinking about it (I believe even if you are mostly a verbal thinker) to
do the same trick.

Hence "rubber duck debugging" where you solve the problem by describing it to
a rubber duck rather than another human.

------
ak217
I love the introspection and positive attitude in this post.

One thing I would add is that intrinsic motivation seems to be framed and
activated very differently depending on one's personality. I find myself
performing best when I'm on the edge of failure, trying to catch up to the
high performers, and when recalling past times when I overcame failure or
adversity. Comparing myself to the group described as demotivating in the post
is the best motivator for me. And then there are little tweaks to one's
environment (for me it's coffee, exercise, occasional travel, specific movies
and music) that I find end up making an enormous difference in motivation,
focus, and overall mental state. I suspect this has a lot to do with personal
physiology and the environment in which you grew up.

With that caveat, the post is incredibly thoughtful and helpful, and I really
enjoyed reading it.

------
ericmcer
The part about problems being either fun challenges or a nightmare really
resonated with me. That's why pair programming is so important in my opinion,
if you work too long in a silo the magic, fun, craft whatever of programming
fades away. Just watching a coworker code or talking through problems with one
can bring back that spirit of fun challenges though. Engineer morale is super
important.

~~~
geoffbp
Agreed, sometimes a second pair of eyes or rubber duck programming does
wonders

------
rubicon33
I read this, and I have also read "The Practicing Mind" which is exactly what
this post is about. My issue isn't in understanding the premise. It all makes
sense, and I get a sense of "ah hah!" every time I read it (I've read it
twice).

The issue for me is that I really struggle to turn this theory in to effective
practice. Each time after reading "The Practicing Mind" I have tried to
cognitively remind myself whenever I was frustrated, to stop and look at the
problem as a beginner would, to drop my ego, etc.

The problem is that it would sort of help, temporarily. I'd find myself a
little bit better at getting a solid day of work done, but not dramatically
better. After a week or so, I'd forget to even do the exercises, and I'd be
back to struggling.

What honestly helps more than anything, the "magic bullet" really is
pharmacology (aderall). For me, it somehow calms me down. I don't feel more
energy, I feel tranquil, and able to let defeat roll off my shoulders.

Sadly, taking aderall is not a sustainable solution. Amphetamine is a
neurotoxin which raises blood pressure. Not to mention, I don't like being
"tranquil" for anything other than my work. I like my 'normal' state of semi-
uncontrolled energy, which is great for exercising and video games. I'd like
to be able to turn this feeling on or off, and taking a medication doesn't
allow for this.

So I tend to see saw between three states... 1) Struggling at work, barely
getting by, quality of life sucks. 2) On medication, happy at work, feeling
productive and peaceful, but desire to get off medication 3) Off medication,
using "Beginners Mind" but find my ability to implement it in a way that is
strongly effective, absent.

~~~
digitalmaster
Thanks for sharing this perspective! I know exactly what you're talking about.
I wrote this piece and have to admit that even for me I have days when I
struggle to bring this attitude to a problem or a day. I guess it's one of
those hard habits to break.

What helps for me the most is intentionality. To literally set my intention
for a day or for a problem right before I jump in. So if I know I'm about to
jump into a tricky problem I literally take a few seconds to remind myself of
the attitude I want to bring and even exactly what I want to focus on.

So this would be things like "Don't try to judge difficulty (easy/hard), just
go wherever it takes me" or "Don't be afraid of the amount of work". One that
super helpful for me is deliberately separating to "understanding" part of a
problem from the "solving" \- so i'd tell myself "I'm just trying to
understand what's going on right now - solve later". Etc etc.

Hope this helps.

------
pistachiopro
This post did not reach the conclusion I was expecting based on the title. For
me, I think I've largely experienced the opposite relationship between ego and
my programming productivity.

Learning to program as a kid was probably one of the most exciting
developments in my life up to that point, and I expect that's true for many
people on this forum. I originally attributed this to programming's
usefulness, and the mathematical beauty of watching all the pieces fall into
place when solving a problem. And those were surely both important motivators,
but, looking back, the primary motivator was the pure power trip of it.
Programming is extremely powerful (software is eating the world, after all),
and I could immediately sense that, and that power was the biggest high I got
from it.

Throughout my teens and twenties, I didn't really consider this, and just
followed the high, and it led me to develop skills and a successful career as
a programmer. For me, it was a positive feedback loop, where the more I put
into programming, the better I got, and the bigger the ego boost.
Unfortunately, though unsurprisingly, it got to a point where my inflated ego
started getting in the way of my personal relationships, and even my self
perception. I considered myself a great programmer, but not a very good
person. I became quite self-loathing for many years, but I've noticed that's
healed up after moving away from programming as a primary job responsibility,
and my personal relationships have benefited, too.

I still love programming for the beauty of it, and I still dive into little
personal programming projects a few times a year. Part of me wishes I did so
more often, but I'm held back because the only way I've found to get through a
project of any duration longer than a few days is to basically develop
delusions of grandeur about it. Programming is fun and beautiful, but very
hard, too, and somehow without the promise of the conference talk, or the
influential git repo coming out of it, there's just too much friction. So,
more often than not, these days, I simply don't bother. I guess with my
current middle-aged testosterone levels, I'd rather keep my family and friends
than be king of the world.

(That said, if anyone out there finds this relatable, but has been able to
push through and develop a healthier, less ego-reliant, relationship with
programming, I'd live to hear about it!)

~~~
andrewedstrom
This really resonated with me.

Before getting into programming, I was a somewhat accomplished guitar player.
By the time I was 20, I had played in a bunch of bands, recorded several
albums, and gone on tour. As a result of these early successes, I developed a
big ego about myself as a musician.

I realize now that the main thing driving my musical career was that ego. I
enjoyed playing, but getting better at my craft was not my primary driver.
Instead, it was that I wanted to be famous and rich and noteworthy and
desirable. For me, playing guitar was inexorably linked with becoming a
certain kind of person and gaining status.

Now any time I pick the guitar back up for more than a day or two, I quickly
get lost in delusions of grandeur. I start thinking about how I'm going to
change my whole lifestyle to "be a great guitar player" and playing itself
takes the back seat to fantasizing about gaining power and status. Try as I
might I can't just casually play guitar for its own sake—kind of like how you
have trouble programming without the promise of a conference talk or an
influential git repo coming out of it.

For me the solution has been to avoid playing music, and to focus on
programming (and my family/friends) instead. I think the groove of ego I
carved out as a guitarist is just too deep to allow me a healthier
relationship to music. As a programmer, I don't have that same narcissistic
false-self to live up to. I just enjoy it and want to get better because it's
fun.

Maybe the solution for you could be to take up a creative pursuit other than
programming?

~~~
flanker
I feel that to be something that resonates with me. I started as self thought
freelancer loved the symphony of creation and the end product you make. Then I
got myself a job I had sucha enthusiasm and thirst for knowledge, I would go
above and beyond. Then I burned out, the cycle has repeated couple of times
now forcing me to take breaks in 7-8months. One thing I realised I still love
creating stuff, but it's all too painful to do it for someone else. The major
contributor to it is constantly changing of requirements, sometimes goals
altogether scrapping of projects you put lot of brain power in and finally
sometimes fighting against the tide. I have experienced people who are just
there in the middle management adding unnecessary layer of red tape and doing
anything to survive. I feel I'm done with it. I have picked some other stuff,
currently searching for something other than a programming job, it's a risk
because majority of my work has been programming, other than a failed startup.
But I think I will take the risk of exploring.

------
afarrell
> My ego creates a tight bond between my work and my identity. Linking my self
> worth to how well I do my job. This then creates the need to track my
> performance. To keep score. Spinning up mental processes that consume
> valuable resources which make staying on task very difficult.

I think this part is definitely true for me...

I have let "notice when you are confused" and "understand the impact of your
work" and "make sure you are building the right thing" and "make sure you know
stakeholder needs" get kinda etched into my identity. I keep wanting to
_understand_ the systems I work with and I keep getting distracted by noticing
problems with its UX or implications to business process.

I can turn that voice off with deliberate effort, but I don't know how to get
it to stay off.

Does anyone else have any methods for more permanently-silencing UX-worries
and just cranking out code?

~~~
felideon
No. I was unable to silence those thoughts and became a product manager, and
am now a UX practitioner with strong opinions on software dev which I also
can’t seem to silence (speaking of ego).

------
visarga
I am not convinced by the article. For one, I don't think beginners mind is
necessarily superior to expert mind. After all, why would society value the
expert more than the novice? Has anyone actually checked to see if experts
don't have an even greater openness towards learning and novelty?

About giving up on projects and how the ego plays into that, I don't think in
such black and white - giving up = bad, persevering = good. Sometimes you need
to give up in order to find a better approach. There are reasons why this
instinct is present in our species (something to do with the exploration
exploitation trade-off). We can't paint over it with self help advice.

Comparing yourself to others is bad? Why? It's an evolutionary advantage to
learn from the experiences of others. By doing comparisons you can calibrate
your values. Competition is a great motivator. Having a row model can be fast
way towards improvement. Comparison between peers is like a second order
metric, first order metrics relying only on self.

The advice about not comparing yourself to others is useful only in a limited
setting - where you devalue your accomplishments and have nothing to gain from
it. But when comparison motivates you to improve, then it's actually not bad.
Also when comparison prompts you to take action and avoid a crisis you could
be spared a lot of suffering. Comparison can act like an alarm. Another
function of comparison is to make groups more cohesive - if they form a common
culture they can function better - so aligning oneself to the group can be
beneficial for all.

------
cloogshicer
Pretty interesting article. If this spoke to you, I recommend reading "The
drama of the gifted child" by Alice Miller.

Don't be put off by the title, it's a wonderful read no matter if you think
you're gifted or not.

~~~
slindz
Counter point:

I read that book this year.

It definitely contributed towards resolving some unresolved childhood trauma,
and I'm grateful for it, but it was no walk in the park.

~~~
cybernabjo
Why is that a counter point?

~~~
slindz
The parent was sharing the book as a wonderful read and that you shouldn't be
concerned about the title.

My counter point was that while I enjoyed the book's results, the read/process
was the polar opposite of wonderful.

I felt my anecdata might be helpful to those who might pick up the book.

------
poindontcare
This is so critical and so easy to forget. Every day is an effort to remind
oneself of these basic truths.

“Whenever distress or displeasure arises in your mind, remind yourself, “This
is only my interpretation, not reality itself.” Then ask whether it falls
within or outside your sphere of power. And, if it is beyond your power to
control, let it go.” ― Epictetus

------
nsilvestri
I needed to read this. Just today I realized today that my ego was distracting
me from learning and being effective at my job. I am a new dev, <1 yr
experience, and I've often found myself not reaching out for help when I need
it. For no good reason, of course, but for fear of outing myself as not
knowing something I perceive others might view as basic.

I need to teach myself to take the ego hit and that in the long term it'll pay
off more than independently struggling on a problem.

~~~
duderific
I'm pretty senior (over 10 years), and I see this a lot with my younger
colleagues. They will struggle for hours and hours before reaching out for
help, which is obviously counterproductive.

I try to counter this by reaching out myself when I need help, which is pretty
regularly. I'm hoping my younger colleagues will see that even the old fart
needs help sometimes and isn't afraid to admit that he doesn't know something.

------
moreaccountspls
"This is ego distraction. It’s about putting off uncertainty till later to buy
temporary relief. To protect our ego from a perceived threat. Things like hard
problems, the possibility of failing publicly, or negative feedback all become
threats when they’re linked to my identity."

I disagree with this [at least for me personally]. Being a good programmer is
just straight up not something that's part of my identity. There's millions of
people who are much, much better at it then me, and that's totally fine.

The reason that it's hard to work on hard problems is because they're hard!
Sometimes, programming can be a really difficult or a slog of an activity.
It's same with mastering any skill. Learning to play guitar, becoming an
Olympic athlete, whatever. You can't Zen Buddhism your way out of the fact
that you're going to spending years and years practicing until your fingers
bleed, or until you're completely exhausted, etc.

~~~
mtalantikite
> You can't Zen Buddhism your way out of the fact that you're going to
> spending years and years practicing until your fingers bleed, or until
> you're completely exhausted, etc.

Many Zen Buddhists know how long and hard practice for mastery is. Practicing
meditation is in many ways skill acquisition as well, which is why it is
called a practice.

You’ll of course be spending years and years practicing programming, and the
insight that ego identification gets in the way and one must practice
beginners mind is a simple yet deep understanding that comes from years and
years of practice.

~~~
moreaccountspls
> You’ll of course be spending years and years practicing programming

You can't just 'of course' this! I mean, you can, but that's the whole point.
If you, or anyone reading this enough cares enough about being a great
programmer, you wouldn't be on this site in the first place. Which is fine, I
enjoy wasting time on here as much as anyone. But the people who are actually
really good at programming? They're not reading blogs about ego. They're not
writing blogs about ego. They're programming.

Look at what Fabrice Bellard has accomplished in the last 20 or so years:
[https://bellard.org/](https://bellard.org/) . QEMU, FFMPEG. I will never even
be close to the level that he is. I'm much closer in relative skill to the
person who just wrote their first hello world yesterday, and I've been
programming for 15 years or so. And that's totally fine with me. Programming
is not my only interest in life.

For the blog author, it seems that they're searching for a reason that they're
not as good at programming as they think should be. I mean, he's already a
Staff Engineer at Circle CI. He's not someone who's been programming for a
year. It's very possible that's he pretty close to being as good as he'll ever
be. Sure, he'll keep improving, but he'll never be Fabrice Bellard. If he was,
he already would be and wouldn't be writing a blog about why he's not.

So what I would say to him is: that's fine! Life is not just programming. "The
Second Truth is that this suffering is caused by selfish craving and personal
desire." You wrote an article about how your ego gets in the way of you
becoming a better programmer, but its your ego that makes you want to be a
better programmer in the first place!

~~~
mtalantikite
You can certainly work towards a deeper ability without attaching to the
outcome or to even use ego-craving to get there.

~~~
moreaccountspls
Your ego drives every action of your existence, so no, you really can't. What
you can do is be self aware of that reality.

~~~
mtalantikite
That hasn’t been my experience, but ok.

------
jugg1es
This is an interesting article because it made me consider how I think
personally as a highly productive programmer but also a leader at my company.
Even if I didn't touch the code, I am personally responsible for it
considering that I am the lead and have - or should have -reviewed it before
it went out. If you go into the assumption that you are accountable no matter
what, it isn't really a big deal. If a subordinate f'd up, then you are still
accountable because you should have caught it.

Thinking this way is very liberating because it means everything is your
fault, but.. you are human and humans make mistakes.. so that means that this
is a learning experience. If your mindset is that we are constantly learning,
no mistake can ever really touch your ego.

------
mtalantikite
A great book where the last quote in this post pulls from is Suzuki’s “Zen
Mind, Beginner’s Mind”. [1]

I often find the solution to many of my problems is to go back and practice
from this mindset. I coincidentally went back and reread selections from this
book a couple weeks ago, as I found my ego had been creeping into many facets
of my life recently and I needed to go back and be reminded to practice with
this mindset.

[1]
[https://en.wikipedia.org/wiki/Zen_Mind,_Beginner's_Mind](https://en.wikipedia.org/wiki/Zen_Mind,_Beginner's_Mind)

------
xd_dino
Wonderful writing. I get the same feeling about the ego thing. What makes me
wonder is there are people who would like to write about ego and coding in
great detail. I admire. Truly resonates with me.

from what I see others comments in HN. "Points and Counterpoints" Every
article or idea doesn't work for everyone as we are a complex cocktail of
ideas and impressions. if some idea resonates with you, you have found your
_type_ of the idea. so enjoy it else don't resist the idea wait for next one
that might work or not. thank you for sharing in any case.

------
helsinki
This is really good. Not much else to say here, other than ‘thank you’.

~~~
linux_devil
Yes , quiet good introspection, really interesting article.

------
alexashka
There is a predictable pattern to these types of posts and these types of life
experiences.

You have a problem, you discover a potential solution and it seems to be
working. You get excited and you try to make sense of it and you want to tell
everyone because it is such a game changer! Then some time passes by, the
emotions fade and you arrive at a new perspective - that your life hasn't
changed that much or if it has, now you have a new set of challenges and a new
potential solution will come your way sooner or later.

It never ends, unless you at one point recognize that it never ends and cease
_wanting_ to be better and _wanting_ to understand it all so much. It's not
that you purposely cease trying or wanting, it's that you _relax_ the wanting,
because you know the problems will be there tomorrow and the day after, no
matter how much you try.

That's when 'it's the journey, not the destination' finally sinks in and life
takes on a new quality :)

For some people, it happens when they are reminded of death and the
inevitability of it all, for some when they've burned through their health
enough that they can't do it anymore, for others it just occurs to them one
day - I can't keep up with this bigger, better, faster, stronger culture and
frankly, I don't want to, either.

------
Vysero
I can relate to the parallels between programming, and athletics. I like to
consider myself an athlete, and if there is one thing I have learned about
sports it's that the process of falling from the top to the middle of the pack
can happen in a week despite that it can take years to get from the middle of
the pack to the top.

So when the author was talking about how being an expert is really just a
matter of become a great student I was quickly reminded of my golf game. Where
I often time find myself with the lowest handicap I have ever had without
actually feeling like I am improving. I shave a stroke one day. Then another..
and another, and before I know it I am a 3 instead of a 10.

That being said, I wouldn't say I have an ego problem in coding myself because
tbh I have always felt like a bit of an imposter. I think my imposter syndrome
has actually ended up being a good thing over time in my career as a
programmer. It seems to have kept me grounded, and as the author suggested is
a good thing, it seems to have kept me in the forever a student mentality.

------
joallard
The author has overfitted for his own psychology. There are a lot of
assumptions in there. My brain doesn't work like that at all.

~~~
barrenko
Reluctantly agree, as I fit the author profile.

------
elite1percenter
> Top students convincing everyone else to stop trying. Or, great engineers
> convincing the rest to stop trying.

This happens in a more literal sense as well. Since we compare ourselves to
each other, it makes sense that more experienced engineers love feeling like
they're ahead and beyond newer engineers, and it bleeds into behavior.

For example, engineers love asking candidates obscure questions in interviews
- as if not knowing a specific JVM perk makes the candidate less of an
engineer.

Let's also not forget the severe elitist attitude some engineers have when
interacting with others. It's almost like everyone else is trash. For all the
work he's done, which I admire, Torvalds was seriously toxic to interact with.

It all ties back to us wanting to compare ourselves to each other.

------
cgs
> My ego creates a tight bond between my work and my identity. Linking my self
> worth to how well I do my job.

Same experience here, and probably for a lot of devs. It took a good 10 years
or so to break out of this. If I couldn't get something working that I
expected to work, I silently took it out on myself. Must not be good/smart
enough. And so I'd beat my head against the wall. Once I started letting
broken code or an unfixed bug wait until the next day and saw that the sky
didn't fall, and that I could eventually fix the issue, I started to trust
myself more, and just let things be. Some days, everything works. Some days,
nothing works. Your build fails and you spend hours updating some obscure
library, and you don't get feature X done that day. It's really your decision
whether or not you let this effect how you feel.

~~~
ozim
I think people get wrong is mostly is part about judging "how well I do my
job". They come up with insane expectations for themselves.

------
mylons
this is a great blog. i don't think it would have really made sense or
resonated with me if i hadn't been in therapy the last year or so almost
exclusively working on this. which is what i want to really endorse if you're
someone curious or in pain. there's ways to work on it.

------
eikenberry
Did anyone else find the "Relative Distance" section seeming wrong. Not the
harvard-vs-random school thing but the conclusion they draw, that you perform
relative to your standing. How are students aware of their positions? Do some
schools post rankings or something? When I was in school you're
standing/grades were private and no one knew another students standing (aside
from the obvious, people failing out and such).

If I was guessing at a cause, I'd put it more on the teachers/school. That
they have it in their mind that there should be a range of performance in the
students and they enforce that idea. Eg. if everyone gets an A in their course
they start making it harder until they get the distribution they expect.

~~~
tppiotrowski
Many universities grade on a curve. X% get an A, Y% get a B, etc. If you are
getting C’s in your classes you can infer that you somewhere in the middle
30%, A’s and you’re likely in the top 30%. You are correct in saying that you
don’t know who is the best and worst in your class but all you need to know is
where you stand for Relative Distance to work.

------
noir_lord
There is a perspective shift that comes (usually but not always) with age I
think.

When I was younger I got into computer programming, for the first ten years
(1987-1997) I thought I was hot shit because I could do things with computers
that no-one else I knew could even understand (with the exception of a family
friend who was a programmer in aerospace) then I ran into other programmers
on-line and realised that there where other much better programmers in the
domains I was interested in (strangely I never got into programming games, I
always liked utilities and 'productive' stuff).

So I doubled down and resolved to be the best programmer I 'knew' again except
this time I knew hundreds or over the years thousands of programmers an
impossible treadmill.

Sometime in my late 20's/early 30's (so ~2007-2008) I realised that not only
wasn't I ever going to be the best programmer I knew, I really didn't know
much about programming in the general sense if you look at the whole field
(no-one does really except the odd person) so I re-framed it, I was going to
be a better programmer than the me of a year before and focus on the other
skills I'd let languish over the years what I'd often derided as 'soft' skills
(I don't think I was ever an arse-hole but I was the guy who'd sit in the
corner muttering with the headphones blasting thrash metal).

In the end what I realised was that after all this, I like programming, I like
providing value and when it comes to work the best thing I can get is feedback
from a user whose life I've improved by making whatever I've touched that
little bit better.

If I can do that then it was a good day.

The freedom from all this is I learnt to play again, if I'm interested in
functional programming I'll go poke at that for a bit, if I'm interested in
algorithms I'll go poke around over there - free from the the self-imposed
need to compete I get to satisfy my own curiosity and nurture the devs on the
team I run.

With 7 billion people on the planet it's statistically unlikely you are ever
going to be the best and even if you are it's likely in only one dimension.

I noticed that the programmers I normally really admire are all older than me
and seem to be excited/happy about technology and wondered how they kept that
enthusiasm for so long in an industry where so many seem miserable and I think
I can hazard a guess now.

Oh and because the universe loves a punchline, I have a dev on my team now who
is determined to prove himself the best programmer, never says a word and
listens to thrash metal all day while muttering, he's talented so I'm curious
to see how he figures it out.

------
noisy_boy
I found this quote from the article quite motivating:

> “I cannot say this too strongly: Do not compare yourselves to others. Be
> true to who you are, and continue to learn with all your might.” ― Daisaku
> Ikeda, Discussions on Youth

------
HellDunkel
Self-improvement piece once again. Why are people so obsessed with this?
Imposter symdrom seems to be a thing I really dont get. It never really
bothered me if i actually caused the bug when looking for the root cause- ok
maybe sometimes you worry if you messed up just before the release but thats
pretty much it. Maybe realizing that you dont need to be a great programmer to
make a great piece of software helps.

~~~
razzimatazz
Imposter syndrome for me is kept in check if I keep within my 'quota' of
mistakes. It doesn't bother me if I am the author behind a bug (Normally every
bug is an opportunity to understand the software we've built better), but if
consecutive bugs come back to my work, then I notice it. And I notice it in
others too, and then I want to see them putting effort into improving their
skill, etc..

~~~
HellDunkel
Quota.. is that something like a percentage of bugs you feel responsible for?
That again would be comparing youself to others- not saying its a bad thing
unless its bringing you down. Dont really know what im talking about here as i
have never suffered from that. Insecurity yes, imposture sydrom no.

------
submeta
I have my best coding sessions after I start the day with fifteen minutes to
half an hour of mindfulness meditation. That calms my mind, makes me „less
anxious“, lets me go into new directions without feeling the urge to walk
away, procrastinate, do something else.

------
vzidex
Incredible post! I've been struggling with anxiety, depression, and a lack of
motivation at work for the past year or so, and slowly coagulating towards the
feeling that I needed to focus on my work.

This article feels like it gives me the _how_ \- thank you.

------
nick-garfield
This was an amazing post!

100% spot on that the external distractors are easier to manage than the
internal ones. A buzzing phone, tempting social media websites, and loud rooms
all tend to be relatively easy problems to fix. As for internal distractors, I
feel like telling a personal story after reading this.. There are two internal
distractors I've recently noticed myself struggling with:

1) A busy mind.

I often find my brain meandering on ideas or conversations completely
unrelated to the work I'm trying to do. Daydreaming, imaginary arguments, and
unnecessary tangents all tend to creep in (esp in the afternoon for some
reason). I'm glad this post touched on Zen Buddhism and the beginner's mind.
At risk of proselytizing, I have to say the best way I've found to manage a
busy mind is through meditation. Consciously setting aside 10-15 minutes
everyday to practice letting go of thoughts has helped build a (tiny) mental
muscle which I can sometimes use to bring my focus back on the things in front
of me.

2) Alcohol.

This is a bit of an external distractor, but also an internal one. In college,
I was able to stay up all night drinking and coding. No longer! I find it
amazing how insanely less productive I am even after a single glass of beer. I
now get tired shortly afterwards and have immense difficulty focusing. Perhaps
as the article mentions, the alcohol is wrapping up my ego in the task at
hand. I don't have a drinking problem, but I now solve this by consciously
deciding how to spend my next couple hours. "Am I going to grab a drink and
take an extended break (perhaps for the rest of the day)? Or am I going to
grab a water/tea and continue working?" Gone are the days when I could
reliably reach the Ballmer peak
([https://xkcd.com/323/](https://xkcd.com/323/)).

~~~
yetihehe
> Alcohol

I've found that I almost can't program anything sensible after even very small
amounts of alcohol, even half a beer or 25ml of vodka is enough. It's either
alcohol or programming for me. I don't drink too often, but when I do, even
after large amounts I don't have hangover and I remember having memory loss
only once.

~~~
davio
One of my teammates said he thought he coded best with a slight buzz, but who
knows - maybe he was just creating tech debt and vulnerabilities at scale.

~~~
polishdude20
For me, having one beer when coding helps because it removes my discomfort of
sitting in a chair for very long. If I've been sitting for a while and coding,
my mind is willing but my body is complaining about the discomfort. A bit of
alcohol goes a long way to help that.

------
kubanczyk
So, one part of my brain is an adult another part is a child acting from
beneath the consciousness.

Then most of these articles usually say the recipe is to have the adult very
closely observe the child and hit it with a stick any time it wanders of the
"desired" path.

No.

How do you expect it to work between a real parent and a real child? I think
it would fail miserably and annoy both sides. I'd suggest coming up with some
nasty parental tricks instead. Also adjust them after some time, because they
_do_ tend to stop working.

------
curvinator
There is an interesting parallel drawn by a famous theologian: sin is self
curved in on itself.

------
bilekas
>It’s clear to me now that it's not about what I know, but rather how I think
that's different on these days.

yup

------
dnprock
I think software ecosystems are currently infested by corporate interests. I
feel kinda funny for saying this. It sounds like some kinds of left-wing
politics. But software has become increasingly consolidated. There're 5-10
companies in the US that drive most of its development. They even picked up
the most popular open source projects. When you're part of an ecosystem, your
objective is to work the system. Making software has lower priority.

It's extremely hard to make money being an independent software developer.
There's a lot of noise and money in the market. It's hard to compete with
marketing from big companies. You have to work for a corporation or a startup
with funding. You have to be part of an ecosystem. When you are accepted to a
program like YC, you win an entry to an ecosystem.

Can you be a software artisan nowadays? Can a small team develop and sell
software without having an ecosystem behind it? I've seen some examples of
this, like Ruby on Rails, 37signals. But they are rare exceptions.

I'm currently working on an open source project. Let's see how long I can be
independent for. Check out my project :)

[https://github.com/vidalab/vida](https://github.com/vidalab/vida)

------
carapace
It might seem like a tangent by I would recommend studying (self-)hypnosis.

------
beardedetim
Glad to see Jose writing again! Great post as always from them.

