It was my first day on the dev team, and I was excited.
Being a "real" developer was something I had wanted for over a year, and now I felt like I had finally made it.
I sat in a large open room with about 12 others. The large floor-to-ceiling windows all around filled the room with Monday-morning sunlight adding to the feeling that I had indeed moved up in the world.
Our team had two QAs, a project manager, and a designer. The rest of us were developers.
Developer... I let the word turn over in my mind and savored it. The satisfaction that I could at last use it to describe myself was deep.
I sat in the middle of all that typing and tried hard to maintain some composure; I couldn't let on just how thrilled I was to be in that room. That just wouldn't be cool.
I sank into that big comfy chair and quietly reflected on all the hard work that had brought me there.
For years I had struggled in self employment. I had worked as an SEO consultant, a WordPress theme tweaker, and even as a general handyman for a local home renovation contractor.
Truthfully, I had very few real skills. At least, not in an area that made me proud of who I was professionally. I was in my mid-30s, and had missed so much time with my family because I just couldn't get it together. For a long time I had felt like a failure as a husband and father.
Winter 2014 I was laid up at home without work. The cold weather meant a slow period for the contractor that employed me, and the thought of going back to my SEO consulting to pay the bills left my stomach in knots.
I was sick of being unskilled. I was ashamed of not having anything valuable to offer others.
I had always been a bit of a nerd, and though programming seemed pretty far out of reach, I would often wonder out loud if I should go for it. My neighbour was a developer. He worked from home and seemed to enjoy a lot of freedom of time. If only I could do it, too.
It was after one of these musing when my wife finally said, "You know, if you had started learning to code a year ago when you first mentioned it, you'd be pretty good by now."
I couldn't refute the good sense of her words, and right then and there I resolved to finally learn to code.
It was a tough road, but I was blessed enough to meet people that helped me learn.
I invested countless hours working my way through online courses on Egghead, Pluralsight, Treehouse, FreeCodeCamp... I would wake up at 4am to start, and work right up until the evening.
I was now sitting in "the dev room."
I basked in the satisfaction that comes with harvesting the fruit of some very long and hard labor.
It was one of the best days of my professional life.
It wasn't all great that first day, though. That was also the day I experienced my first attack of impostor syndrome.
It was not pleasant.
I wasn't in my comfortable environment, working by myself, on a code base I knew like the back of my hand.
I wasn't working through a PluralSight or Egghead course where I could pause and repeat something I couldn't understand.
Instead, I was looking at a huge application, with a git commit history that made my head spin. I was sitting in on meetings and discussions where I understood only a small fraction of what was being discussed.
Wow, these folks were smart.
Load balancing, sessions, migrations, seeders, cherry picking, rollbacks...
Our team Skype chat was filled with "pushing to dev," "can someone jump on 345?" "366 needs to be a hotfix."
I was in way over my head.
My confidence was thoroughly shaken.
I was humbled.
Fortunately, I had others around me to help me navigate the panic.
They were able to impress upon me that my greatest learning was about to begin.
With their encouragement, I managed to scramble my way from inexperienced "junior" developer to confident and valuable contributor to a huge piece of software.
I've come to believe that your most significant growth as a developer will come from working with others in the context of a real business project; courses, tutorials and workshops provide great value, but they lack the full context necessary to foster real expertise. They are very good at getting you familiar with a topic, but you really need to take what you learn and use it in context to make it stick in any meaningful way.
I didn't start to feel like I knew what I was doing until I had invested months of my professional life into hashing out requirements with designers and fellow developers, discussing problems, fixing bugs and responding to changing requirements.
In your learning, there is simply no substitute for taking an idea from napkin sketch to live deployment.
I'm willing to bet many other budding developers are like myself -- plugging away at online courses, completing to-do apps, learning frameworks, but never really applying that skill in the context of a full project.
If you'd like to work on a real project where you're free to explore and make many mistakes, please let me know.