When I was a new developer, I was full of energy. Completely unconstrained and working in a team that encouraged me to pick up whatever interested me, I found myself writing embedded C, setting up our build servers, making international calls to data centers and running cabling for GPS sensors under our test tractor.
I learned about high-precision GPS readouts at an interrupt level, about tuning Java runtimes, about leading a team using Agile processes — when conventional wisdom says:
You don't teach that stuff to newbies.
As a moderately experienced developer, I am not full of energy. Mired in complacencency, paralysed by perceived social pressures and stuck by a multitude of choice, I have accomplished less this year technically than in any previous year in my career. However, this can be changed.
Complacency's a fickle bitch. It's about three parts arrogance and four parts fear. Someone challenges you with an idea, and you think, "I can build that, no sweat -- but what if I can't? Then I'll look like an idiot!"
So you console yourself with the notion that you never really wanted to build it in the first place, and you tell yourself that you could have done it if you had really wanted to, but that pit in your stomach grows deeper and your mood worsens just a little bit.
I think the only way past this is to grit your teeth, pick a project that offers a combination of both modest potential success and modest potential personal development, and just do it.
Perceived Social Pressures
It's hard being friends with developers. It's harder still when your only friends are developers -- and good ones at that. You feel challenged and inspired and all those good things at first, but then the Imposter Syndrome kicks in and you start imagining things in the way they talk or the topics they bring up.
"They know", you think. "They know that I'm faking. Oh Christ, can't we just talk about movies or something now?"
(By the way, try thinking about Imposter Syndrome and the Dunning–Kruger effect in a loop sometime. Fastest way to feeling worthless and confused that I've ever found.)
Be comforted in the fact that most people in this field think along similar lines to you -- you just can't see them thinking it. Also, watch this talk by Leon Gersing. It always makes me feel better.
Overwhelmed by Choice
When I was a newbie, I was never bothered by thoughts that I was doing the wrong thing. I was doing what I liked, and that was good enough. I've never used my embedded C skills since those early days, and whether or not I ever would again didn't bother me. It was fun then, so I did it.
Now, indecision plagues me. Clojure or Haskell? Wait, back up. Functional or imperative? Wait, back up. Systems development or web development? Wait, back up. Development or team leadership? Wait, back up. Tech or non-tech company? Wait, back up. Australia or America?
I think you can see the line of thought. Before you know it, you're on the back of the eighteenth turtle, wondering how the fuck you're ever gonna get down, because you're fairly sure you just decided to be a sherpa.
Don't be a sherpa. Make small decisions that affect where you are subtly. Read a functional programming book. Attend a devops meetup. Do something really small that pushes you a tiny bit out of your comfort zone.
There's a great Saturday Morning Breakfast Cereal about living your life in between lifetimes. It really jolted me into, well, writing this post. Life seems much shorter and more fruitful when you break it down into 7-year blocks, and for a man with as many and varied interests as I do, I bet my tenth lifetime will be spent very different from my third (and current) lifetime.
So go do a bunch of stuff, get messy, fail and try again. Remember what it was like before you gave a shit?