I’m A Bad Developer, That’s The Only Reasonable Explanation
I remember the first time I started to feel insecure as a web developer or even generally as a professional in any field. I was asked to time-track my projects down to the very last minute and every minute had to be justified. I was deathly afraid to check my email, go to the bathroom, or even spent too long trying to figure out a solution to what seemed like an easy problem.
I mean, how could someone spend several hours trying to debug a table that looked one way on Firefox and one way on Chrome? Yet setting up a basic Wordpress site took under an hour? Or why did it take me 30+ minutes to write an email to a client?
At the beginning of each week, we all sat down and tallied up our hours. The marketing team worked hardcore over time. The design team put in some extra hours. And me? I could barely cross 30 billable hours every damned week.
I felt like shit and I felt angry. I felt like a burden to my team. And I felt like comparing four hour lunches with a client to four hours of coding was bullshit. But were they right about my under-performance? Or was I in denial about my self-worth and productivity?
“You’re a little slow”
That job and some of the things I’ve experienced there still give me anxiety today and definitely make me apprehensive when it comes to things like speed and productivity. There, we measured it down to the minute. Bathroom breaks were consider unproductive, talking to co-workers was considered unproductive, and doing any kind of research was pointless unless we could bill a customer.
A few years later, I worked at a different company and during a one-on-one with my manager, I found that while I was a good engineer, I was lagging behind just a small bit. I was slightly surprised but recounting the previous few months, estimates came and went as I worked on various features. The sentences stuck with me. “You’re a little slow”. Time kept haunting me.
I was a little slow, sometimes a few weeks behind. Sometimes just a day but every time a project came up, I knew I’d end up in the same place as before: just a little slow.
Was I slow? What pace was considered acceptable? Are other developers working overtime or just shipping bad code to look fast enough? What was the secret behind the crazy productivity?
Spoiler alert: it wasn’t VIM.
How come there are still bugs?
Development is a tricky art. It’s unpredictable and it feels like magic. A single bug can take several days out of your day but a major feature can be done in half that time because of a solid third-party library. Scaling projects is terrifying and takes a few tries before getting into a good flow. And just because a project can be deployed after a crunch to get it out by a deadline doesn’t mean it’s really “done”.
Bugs. Bugs are like small bits of failure piling up until they topple. But they’re also inevitable. Repeat after me:
> Bugs in code are inevitable.
Yet, it hurts. And being asked why so much time goes into bugs hurts. And having to explain that “rushing a job” causes bugs doesn’t help because it always feel like an excuse. It piles on further if that “rush job” missed its deadline anyways.
But that bug queue is a reminder that not everything is perfect. And like time, it haunts me as well.
Is it the manager or is it me?
Whenever I read articles about management or even listen to the soft-skills engineering podcast about this topic of inadequacy, I always hear one thing mentioned: it could be your manager. Maybe the deadlines are tight. Maybe the culture does require you to underestimate a project. Maybe, just maybe, the scope of the project increases as you go and you can’t do anything about it.
I always try to take personal responsibility. If I underestimated a project, it’s most likely my fault. If there was scope creep, I often blame myself for not pushing back. Lack of communication on my part can do it, too. And hell, I have eight hours a day to work and I should put in eight hours of coding in.
But then, I also try to look at things objectively. If I work eight hours, and we spend one hour on meetings each day, I should probably do seven hours of coding.
The ambiguity of responsibility is often times tough. Management often assumes that they did their job when they handed in specs. And I often assume that there is nothing else for them to do.
I must be a horrible developer
There’s just no other explanations. If my co-workers can ship, why can’t I? I’ve been mulling these questions and the above for months, possibly years. I keep wondering if it’s the environment, if it’s me, or some strange combination. And worst of all, I keep trying new things to make it work but every “try” feels like I’m running away from some problem.
Every time I feel like I understand what’s happening, I got blown back. I can’t accept that everything is my fault and I can’t accept that I am without responsibility. And to this day, years and years later, I can’t figure out how to balance these two aspects out and truly figure out if I’m worth the money people pay me.
This isn’t an impostor syndrome. I know that I can program in features XYZ, that I can pick up a framework in a few hours, and I know that I can identify where my code falters. But is that enough?