Think of your coding like it was writing. Like writing-writing, as in: pretend you're back in high school, and you have a plucky, young English teacher, who just finished their Education degree, and they have a heart of gold and would cringe at such a cliche metaphor as that one I just wrote. They want you to push your creative limits and write a short story. But not a story as short as the one you'd like to write, which would be more akin to a non-existent story. Still, you're def hot for teacher, so you'll force out some story to appease them.
You set out to your task and at first, your wee mortal brain is all like
and you think you're gonna own this assignment. But then you open up Microsoft Word to start writing, and there's that blank screen and that damned, blinking Microsoft Word cursor just blinking and blinking and mocking you for getting no words written yet. Five minutes later, your poor little pathetic human brain is defeated. You reach into your sparse vocabulary (you probably didn't know the word "sparse" back then) and dig through your saved words, choose some at random, and write some straight-up bullshit, hoping that teacher will still think you're smart and charming and dazzling, which you're sure they do already. (They don't think any of things, btw.)
Teacher, though, gets your story, and says "how about you try to find a better word for 'beautiful' instead of using 'beautiful' ten times in a fifty word story?"
You're like, shit, there are other words for beautiful?! Since you don't know them, you go to a thesaurus, find the word 'pulchritudinous,' and think that sounds smart as hell, so you both save that word in your memory and put it into your story and give the story back to teacher. Teacher goes home with your story, downs five Jack-and-cokes just so they can stomach reading the revised versions of their students' stories, but then decides to watch RuPaul's Drag Race instead and just gives the whole class As because teacher is already jaded and angry.
That's just like coding.
Minus the teacher; plus one boss.
Coding goes like this. Boss says, "do this thing I want done," and you're like, okay, I can do that. You set up your server (which is like the brain here, passing info around, in between places) and you grab some data out of your database (which would be your vocabulary) and you put that data into the frontend for the client (which is like submitting your story). Then the client might be like, "I want you to get me ______" (fill in the blank with whatever your app delivers to the client) (which would be like your teacher telling you to get different words). You might be like, shit, I don't have that in ye olde database, so then you got to reach out to an API (which would be our thesaurus), grab some info from it, and yes of course you'll send that info back to your client (story), but first you might want to save it in your database (vocabulary). Voila. The flow chart of writing and coding. One in the same. Minus all the Jack-and-cokes. But maybe plus a few tumblers of single malt Scotch (no rocks, please) if the developer happens to be me.
Maybe an even more significant way that writing and coding are like BFFs is the overarching sentiment of imposter syndrome in both fields. All writers, no matter their accolades or achievements, doubt every single word they write. They never feel legitimate. They never believe they've done the thing and done it properly (unless they are one of those few and far between writes who are pompous, sexist, assholes and think they're hot-shit no matter what, but we don't talk about Junot Diaz unless we have to). Take for example Tennessee Williams who said, "I don't believe anyone ever suspects how completely unsure I am of my work and myself and what tortures of self-doubting the doubt of others has always given me.” Or Virginia Woolf who wrote, "Is the time coming when I can endure to read my own writing in print without blushing--shivering and wishing to take cover?"
No matter how far a writer progresses, they almost always experience some degree of imposter syndrome. Software development is much the same. Even people with plenty of experience can sometimes feel like they are just a crock and they're waiting for someone to find them out. In that vein, Neil Gaiman said (in his incredible commencement speech in 2012), "The first problem of any kind of even limited success is the unshakable conviction that you are getting away with something, and that any moment now they will discover you. It's Imposter Syndrome, something my wife Amanda christened the Fraud Police.
In my case, I was convinced that there would be a knock on the door, and a man with a clipboard (I don't know why he carried a clipboard, in my head, but he did) would be there, to tell me it was all over, and they had caught up with me, and now I would have to go and get a real job, one that didn't consist of making things up and writing them down, and reading books I wanted to read. And then I would go away quietly and get the kind of job where you don't have to make things up any more."
I think most people feel this. At most points in their life. But in writing and in software development, we tend to be more honest about the fact that we feel this. Perhaps that's because in both writing and coding, there is always something new to learn and projects are never "done," you just have to stop working on them. And then maybe come back and revise them later.
This dual nature of uncertainty--the constant influx of new information (be it a new frontend framework you need to learn or a new character you're creating in a story) and the insistent nagging that you'll never truly finish a job--can leave people feeling very unsure of themselves.
The important thing to know about this is
- it's normal.
- everyone else around you is feeling it too, even if they aren't talking about it.
- it isn't true. You aren't an imposter. And you can do the work.
Thus concludes my pep talk for the day.
Stick in there, and don't let the empty page--of writing or coding--get you down. Just keep at it.