15 june 2020.txt
i'd been working for this online paper for about a year.
i'd also had about five years experience prior
so i knew how to choose and control project scopes as
not to get mired in managing things that were too complex.
one day my very kind boss mentioned they'd had problems
adding a feature to something they had built (she started
as a journalist but was in the process of becoming a
developer). i said i would take a look if
they'd like. that made her quite happy so i dove in
that was a year ago and i'm still trying to get back to
what my life felt like before-hand: calm and in control.
the project spiralled out of control. i completely
underestimated it's difficulty. i still don't understand
why my initial sense - that this shouldn't be too hard -
was wrong. and after twelve months of feeling immense
guilt and putting enormous pressure on myself to get this
two week task to just be finished, i have a lot of thoughts
about what happened.
i've been a compulsive journaler since
i was 16 (so over 20 years now), especially in times of
stress and confusion. so i have hundreds of entries
dedicated to fleshing out and trying to climb out of this
turmoil: how did i, a serious software developer with
years of experience (and a passion for computers) lose
so badly to this thing, this small seeming problem,
i essentially had total control over? what could possibly
explain it - what words or concepts do we have today
that deal with these things?
what might a reasonable person with software
experience think is the cause for my situation?
- you're not very intelligent
- complexity is inevitable
- you used a bad design
the first one seems harsh but it may just be that if i
show what i did to someone they would just be like "oh
well you did this and this and that's what". i haven't
shown my work to anyone. but i think this is unlikely,
the second point is open-ended and difficult to argue
the third is what i think many of us would
resort to - the idea that there is this platonic
ideal. that some system can manage complexity in the
perfect way. software patterns come to mind.
i've been doing this a long time and i hope it's clear
from how i've written so far that i think long and
hard about these kinds of things. and i searched
desperately for answers to my problem and i didn't find
any. and i feel like that's saying something: i'm 38
years old, i've been writing software professionally
for 10 years but on my own for much longer. i've
written serious projects in svelte, i've maintained
complex business systems in java. i wrote numerical
simulations in c for a masters degree. i get software.
i've been passionate about it since i was 6. i've
thought about it, what it does, how it works, the
history of it, the potential, what a turing machine is,
what a programming language is, how it relates to
mathematics, the way chips are built, the theory of
i've been thinking about this stuff for decades,
i've been playing with it for about as long,
and i've done a ton of serious work in virtually
every environment you can think of: embedded, websites,
numeracy, ERPs. all of this, and all of this time,
and i care about nothing else as much as i do about this
stuff, and i still have no idea why this tiny issue
my boss had in july of last year was so completely
unmanagable for me.
of course i can imagine concilliatory responses to
this admission. that's how it goes, you'll get better
over time. everything becomes complex eventually.
and then i'm sure to hear recommendations too:
functional programming, immutable state, encapsulation,
message passing. the list actually seems endless.
it's an odd thing accepting pain. that's what this
all is - having to tell my boss that things were
still not working month after month was incredibly
painful. and of course with pain we desperately try
to fix it. as with the first group above, one way is
to be encouraging and soft. in a way this is like
pretending that there is no pain (though i very much
appreciate softness in my life). the second group
is like this desperate energy to come up with a
solution. it's desperate because it can't handle
the pain - it's quick, it doesn't really
acknowledge how bad it feels.
real acceptance is always astonishing at first. i
feel astonished at how powerless i am at all this.
at how blind i am to this problem. how little
control i actually have. it is astonishing how far
reality was to what i thought, that i could tackle
software projects with reasonable confidence that
i would be able to corral the complexity of it.
i have been undone by virtually all the serious
projects i have worked on, beyond a certain size.
my girlfriend would say i am so hard on myself. but
i'm not trying to admonish myself - enough though i
am seemingly inviting the pain of undoing disillusionment
on myself, it's really an act of self love - if i
carry on living as i have until now, making a living
from software, and behaving with the blinded mindset
as i have been, i will certainly continue to live through
the excrucitating truth again and again until i
learn to see things for what they are. and only until
i do will i be able to reach for realistic strategies
for changing my situation.
and it's not just me. to be clear - i'm not saying
that i've realising now that i am mentally handicapped
and i need to deal with it. i'm including the entire
software industry in this pain - all of you don't know
what you're doing either. in fact, in reality this
extends to all of humanity. we all have this ridiculously
inflated self image. our minds are the size of keyholes
but we think because we can see part of a room on the
other side that must be what's going on. it's not.
we only have a cup with which to hold anything and
it can hold pretty much only three balls and that's it.
the human logical mind is incredibly, incredibly slow.
you sort of get this impression as you scan over things
and feel like you're this smart person but any experience
will tell you that isn't how it is when you first
encounter something. that feeling of effortless understanding
is just a kind of mental muscle memory. when you're truly
looking at something for the first time you act like
a toddler encountering it's first word. it takes forever
for you to make just one connection.
- Next: confidence and software.txt
- Previous: i don't want to have to hold everything in my head at once.txt