The end of the year is always a good time to take a look back and evaluate progress. It seems like 2012 has been a busy year for me, so let's take a look back at Things I've Done, Things I've Learned, Cool Stuff that Happened, and some Thing I Didn't Get To.
Things I've Done
It seems like I did a lot of speaking this year. Anyone who's heard me speak has probably picked up on how much I love it, so I try to get out to as many events as I can. This year I presented 33 sessions at 19 events. The events included 5 Code Camps: the 3 So Cal Code Camps, Desert Code Camp in Arizona, and the Silicon Valley Code Camp (my first time there -- wow, it's big).
The rest of the presentations were at various User Groups in So Cal as well as Arizona and Nevada. A big thank you to all of the user groups who hosted me; I always have a great time. (And not that I'm hinting or anything, but I'm available again this year -- just use the INETA request link on the right.)
I wrote 54 blog articles this year (55 if you count this one). That's the most so far. The articles are a mixture of technical articles, book reviews, upcoming events, and answers to questions from session attendees. I even had a couple of 5 part series articles. It was nice to have some free time earlier in the year. I need to make sure that I set time aside specifically for technical articles.
I came up with 2 new sessions this year complete with code samples and walkthroughs: T, Earl Grey, Hot: Generics in .NET and Dependency Injection: A Practical Introduction. My goal was to come up with two sessions, and I'm glad that I had a chance to present the new topics. Dependency Injection has been a very popular topic, and I'm sure that I'll be speaking on that throughout the coming year.
Things I've Learned
It's been a big year for learning new things. As usual, most of my learning is just-in-time learning for whatever projects that I'm working on. I had a chance to work on a great WPF project (I really love XAML) that uses Prism (XAML application guidance from the Microsoft Patterns & Practices team). If you've been following my blog, you've seen my thoughts on the framework. And if you haven't been following my blog, you can catch up here and here (short version: Prism has worked very well for this particular project).
I've also learned quite a bit about Dependency Injection both through Mark Seemann's excellent book and from experience using it myself. I also had to do a bit of learning outside of my project requirements so that I could write the new session mentioned above.
And one of the big reasons I'm a fan of Dependency Injection is Unit Testing. I really dug in to Unit Testing this year, and I'm surprised at how quickly I took to it. I've used mocking and dependency injection to isolate units of code for testing. The one thing I like most about unit testing is that I can refactor with confidence. If there's a bit of clumsy code that needs to be reworked, I first make sure that I have good tests of the functionality. Then when I extract methods or update algorithms, I can be sure that the code is still working as intended. As I mentioned in an article earlier this year, I'm still not at TDD yet, but I find myself doing small bits of TDD during my coding process.
Honorable mention goes to MVVM and Tasks. I've been buried in MVVM and doing a bit of fine-tuning to make sure that I have good separation of concerns in the presentation of my applications. I've also dug into Tasks a bit deeper and have been learning about asynchronous calls, UI interaction, exception handling, and unit testing. Lots of good stuff.
And 2 of the most impactful books that I read this year are Clean Code and The Clean Coder. Clean Code has made me rethink some of the ways that I've been writing methods. I'm starting to think smaller with more layers -- something I was reluctant to do before. The Clean Coder has made me think more about myself as a professional -- making sure that my conduct is appropriate, that I'm clear with my communication, and that I live up to my commitments. This is definitely a process (both the code and me), so I'll keep moving forward in both areas in the coming year.
Cool Stuff that Happened
Probably the coolest thing that happened this year was being presented with a Microsoft MVP Award. It was a great honor to be recognized for my development community contributions, and I'm looking forward to attending the MVP summit with the goal of making lots of new MVP friends (in addition to the MVP friends that I already have).
I've been getting a bit of recognition at Code Camps as well. At the So Cal Code Camp in Los Angeles, I had someone ask if I was giving the Design Patterns talk again. And at the Desert Code Camp in Arizona, I had someone ask if I was talking about Lambda Expressions. These people attended my sessions the year before and still remembered not just me, but the topics as well. That makes me feel like I'm really making an impact with the topics that I present.
Another cool thing is that my blog is getting over 1,000 hits per month (I even had close to 2,000 in September). That might not sound like much (and it really isn't), but it's a big increase over the 250 to 350 hits per month that I used to get.
One thing that has directed some traffic to my blog is a mention on StackOverflow (thanks for the referral, Peter Ritchie). For some reason my articles on the BackgroundWorker component get a lot of hits. I guess it's because I have a soft spot for that component. I know that it will probably go away soon (it didn't get included in WinRT), but I'll hang onto it as long as I can. It's great at what it does.
Also for some strange reason, if you Google "MVVM Design Pattern", one of my articles comes up on the first page. That's driven a lot of traffic to my blog (which is really cool), but I'm not quite sure how I got ranked so high. I guess I shouldn't complain because it probably won't last too much longer.
Things I Didn't Get To
There were a couple of things that I didn't get to this year, but there's always next year. First, I was planning on getting my CTT+ certification (Certified Technical Trainer). I'm still interesting in pursuing it, but I didn't get to it this year.
I also didn't produce any technical videos this year. I was planning on putting together a handful of quick video tutorials on various topics (like lambda expressions and delegates) but never got around to it. A friend recently asked me for some feedback on a video that he's producing, and I think that might have given me the kick in the butt that I need to start making my own.
A Great Year Gone -- Another One Coming
Overall, it's been a great year. I'm learning and growing as a developer -- that lets me know that I'm still interested and haven't stagnated. I'm still having a great time speaking and mentoring, and I love to help other people. And it's been really great to get some recognition from the developer community.
There's a great year ahead. I've got some exciting things lined up. And I also have no idea what's going to happen with a lot of other things.
Take a few minutes to reflect on what you've learned this year and how you've grown as a developer. If you're not constantly learning, then you're probably falling behind. If you don't already attend a local User Group, find one. It's a great way to keep in contact with other developers, to find out what's going on outside of your company, and to learn about lots of great technologies.
Looking forward to another great year!