Then there are the dark times.
Have you ever taken a class, and simply *not* grasped the problem sets easily, no matter how hard you tried? I’ve felt this way, previously, with physics and with multivariable calculus. On Exam Day you’re slightly panicking, because you know you’re going to stumble upon a couple of problems that you’ll only have enough time to solve half-way, or worse — not solve at all.
In the past, I’ve almost always emerged out of my darkest moments of self-doubt thinking “aha! Can’t believe I was an idiot and missed those two brackets!” or “aha! My eyes were just opened by the fact that you can’t apply a width to an inline element and GAH, I cannot believe I missed that” or even “aha! That… sort of makes sense, but maybe it’ll make even more sense after more practice.”
The idea that — as an aspiring engineer — my job security relies on my ability to output software (and consistently learn new ways of creating software) is sobering, but the struggle is often outweighed by the joy of the moment when something works. And like a proud writer who knows the words fit perfectly (at least until several months down the line when you realize you want to refactor), you bask in the accomplishment, and look for the next challenge.
Yes, ours is a meritocracy, but it is also a sharing economy — and I think the “sharing” part is the key to motivating aspiring software engineers. Some of my most despairing moments have been turned around by brilliant co-workers who haven’t hesitated to share some knowledge that helped me become less confused or helped me troubleshoot an issue. It’s the kindness of co-workers and acquaintances and even strangers, I think, that really makes the open-source tech community click.
Some of us are slower at math, and some of us are quicker at math, but web development at least judges all the product outputs somewhat equally, even if one website looks better than the other (but that’s a design thing, not a programming thing.) And — assuming a similar range of intelligence — the ones who are slower at math have the opportunity to become quicker at math, too, through simple perseverance and questioning and practice.
I know I’m going to be struggling a lot more, still feel like an idiot maybe 60% of the time, and continue to self-consciously ask some smart developers a lot of hopefully non-silly questions. But hopefully I’ll also be able to look back, and start passing some of my knowledge along, and feel like an idiot only on some things.
Tech is quite a big world, after all. So many things. So much to learn.