My Misconception - Learning:
When it comes to learning programming theory & best practices, I have absolutely gone about it the "wrong" way. I never sat down and read a book on coding cover to cover. I've never had a single Comp Sci course. I've learned in bits and pieces over time - a tutorial here, an app there. Why, then, did I think learning on the job would be any different?
For some reason, I expected that there would be some sort of formal education on the job. I'm not sure what I had in mind - a daily assignment from my manager? An hour in the afternoon for lessons? Freakin' HOMEWORK? Whatever it was, I was specifically looking for a work environment where I would have the opportunity to learn from others on my team. Imagine my disappointment when I went a week with no formal lessons. I was a little bummed after my first full week of work. "I like what I'm doing, but I'm worried about growing stagnant," I told my wife in the evenings. "When will I actually get the chance to learn new stuff?"
There were two major flaws with my expectations here:
The best learning isn't formal: I can't stress this enough. I struggled a little with this concept while at the Iron Yard as well. I've often gone a whole day grumbling about not getting any sort of training, only to discover that I've picked up a new skill in the process of implementing a fix or feature. The reality of on the job learning is that it happens organically. As I search out solutions, I learn new tricks. Once I start paying attention to this, my work becomes significantly more fulfilling.
One great trick I've discovered is noting what I learn. Every time I hit a new method, feature or clever bit of code, I write it down. Even if it seems trivial at the time, I make a quick note. Looking back over my "learning log" is a morale booster and an easy way to quiz myself on newish topics. It's made my daily work life that much more excellent!
Learning isn't restricted to work: I love programming. I get an immense sense of satisfaction from solving problems with code. I've done it on my own, without compensation or recognition, for over a decade. And during that time I've taught myself using a myriad of freely-available online resources. But for some reason I started working as a software dev and expected to start learning everything I wanted to know at work. Again, I'm not sure what I was expecting. Imaginary conversation:
- "Hey boss, great to meet you! Thanks for hiring me as a Rails Engineer. When are we going to learn React?" - "Welcome to the team! Here's your first ticket, but, you know, spend all day on Code School instead if you want!"
Because that's realistic, haha! I'm starting to get into a better groove of spending time on personal projects outside of work, and I'm finding that to be a huge booster for my skill level. It can be tough to work all day and then come home and sink right into more code, but I find if I choose my projects carefully and work on things that I'm passionate about, it's a pleasant experience. One thing I'm getting to do is finally start getting involved with some open source projects. My first pull request on Assembly was recently accepted, which made me squeal like a kid on Christmas. I want to be a bigger contributor overall, so this is the first step on what I hope to be a long journey.
The great thing about this industry is that learning is mandatory. Things move far too fast to loosen your grip for even a moment. It's hectic and stressful but it's an environment I love being a part of - and I'm just getting started!