Wednesday, December 31, 2014

2014 in Review

It's the end of another year -- time to check my progress. I've done a lot of things this year, expanded some into some new areas, learned a lot of things, and got some surprises along the way. I kind of hate doing this article because I don't want to sound like I'm bragging. But it's important to reflect back and make sure that I'm productive and headed in the right direction. This is more for me than anyone else, so I won't be offended if you skip the rest. (Just look at the bold items for the short version.)

Doing Lots of Stuff
I was really busy with speaking this year. I managed to do 40 presentations at 26 events. And I really love doing this. Whether it's speaking in front of 5 people or 125 people, I try to have a lot of fun and share my excitement about particular technologies with other people.

Central California .NET User Group
I try to find new places to talk each year. This year, I expanded north in California, speaking at user groups in Berkeley, San Francisco, Mountain View, and Fresno. In addition, I made it out to speak in Glendale AZ for the first time.

I also had a chance to speak at Code Camps in Salt Lake City UT, Chandler AZ, San Diego CA, Los Altos Hills CA, and Los Angeles CA. Code Camps are always a lot of fun. I love meeting new people, seeing old friends, and spending the day with folks who are interested in learning and improving their programming skills.

As something new, I also teamed up with some of my friends from the speaking community to put on 2 full day workshops. In May, Theo Jungeblut and I presented an Education Day in San Francisco (and big thanks for Mathias Brandewinder for coordinating things). And in September, Nuri Halperin and I presented "Leveling Up: The Professional Coder Workshop" in Hollywood (with big thanks to Hattan Shobokshi for handling all the event details).

It's really cool to look back at all the amazing chances I've had to speak this year. (And there's a full listing on my website:

Going Places
In addition to going places to speak, I've had a chance to go places just to participate. This included the Pluralsight Author Summit where I got to spend a weekend with some really great people who love to teach. It was inspiring to hear from the Pluralsight folks first hand about how passionate they are about finding the most effective way to spread knowledge.

I also went to Agile Open So Cal. This was an open spaces conference that focused on agile methodologies. I met some really great people there, and I had a chance to interact with analysts and coaches. I came away with some interesting ideas, and it made me look at some of my career experiences in a new light.
In Newport OR

And I had a chance to go to the Microsoft MVP Summit. It was great to see some of my old friends (well, I think of them as old friends even though we've only known each other for a few years), and it was great to make a bunch of new friends.

And completely unrelated to technology, I got to take a 3 week road trip all the way up to Vancouver BC. I drove up through the redwoods in Northern California, along the Oregon Coast, and up to Cascades National Park in Washington (with a day trip to the Greater Vancouver Zoo in Canada). It was a lot of fun, 4,000 miles of driving, completely exhausting, and totally worth it.

I released 2 courses on Pluralsight this year. The first was way back in January: Introduction to Localization and Globalization in .NET. I'm not sure I should include this in this year's accomplishments because I did all the work for it in 2013 (the course was published on January 2nd).

In October, Pluralsight released Abstract Art: Getting Things "Just Right". This course was a lot of fun to do. I got to share my experiences and observations regarding developer behavior, under-abstraction, and over-abstraction. And my hope is that the course will help developers see the danger signs before it's too late.

Last year I said that I wanted to expand my YouTube channel. This year I managed to release 9 videos, including a series on C# Generics and another series on C# Delegates. It takes me a full day to produce a 20-minute video. I may be able to speed up the process, but I'm very happy with the quality of the results with my current workflow.

I'd like to expand things further, and I've been a bit torn when I have a topic to share. Should share it in video form or in written form? I try to pick the best medium for the topic, but I know that different people learn in different ways. For the folks who learn better with video, I may end up duplicating my written material in video form. We'll see what the future holds.

I've been trying to blog more. I managed to write 81 articles this year (if you include this one). Looking through them, I've found that I've been writing on all sorts of things. I've done quite a few technical articles that describe a keyword, operation, or technique. But I've also written a bit on development process and mindset. This included things like exploring software that grows organically, creating partnerships between developers and the business areas they write code for, and figuring out where to go next in your career.

One thing I find surprising is that I never know which articles will become popular. Sometimes I write a quick answer to someone's question, and it turns out into something that gets a lot of traffic. Here are the most popular articles that I wrote this year:
In addition, I've been writing exploratory articles where I'm documenting things as I learn them. We all learn new things all the time (that's the nature of the development profession). And I'm not afraid to say, "Yeah, I know this isn't new technology, but it's new to me." It's bound to be new to someone else, too. And that person can learn along with me.

New to Me
And speaking of things that I've learned, I feel like I've dipped into a lot of different topics this year.

I must be getting old because I seem to be reflecting back on my experiences and career more and more often (and I'm only a half grey-beard right now). The good thing is that I've been recording these realizations. The biggest realization has to do with the idea of No Estimates and software by subscription. This started as a conversation with Woody Zuill at the Agile Open conference and turned into several blog articles (which have the "Agile" tag). It was interesting to look at my experiences in a new light -- not changing my opinions of what works, but refining them a lot more.

I've been circling around functional programming for a while (check for the "Functional Programming" tag). This year I've been doing some more explorations. I've discovered that I've been using functional techniques in my code without realizing it (including my use of lambda expressions, LINQ, and delegates). And I've been working on ways to use these techniques more intentionally. Based on how things are going, I expect that I'll take the plunge into the world of functional programming very soon.

I also did an experiment to see what it really means to come up with a minimum viable product (MVP) (articles: Rewriting a Legacy Application). I'm sure that the application I used doesn't interest anyone -- especially since it's based on hardware that you can't get anymore. But this was a way for me to document my process of figuring out the MVP and the surprise of finding out just how "minimum" the MVP could be and still be useful.

And I've also been working with Git recently (look for the "Git" tag). I really feel like I'm late to the game with this one. But we can never get to everything. I'm really glad that I've started using Git, and I know that I have a lot more to learn.

Pre-Release Products
Something that is brand new to me is dealing with pre-release versions of products. I am not a trail-blazer when it comes to technology. But I ended up working with some preview stuff this year.

First is Roslyn (or the ".NET Compiler Platform"). This is another thing where I feel a little late to the game. But that's probably just because I have a circle of friends who have been working with this for several years now. I need to remind myself that this won't be officially released until next year. I built a diagnostic analyzer and then put together a video to show how to do it (Building a Diagnostic Analyzer with Code Fix in Visual Studio 2015). And I also came up with some optimizations later on that I shared in an article. This is still new to me, so I don't expect to get it right the first time.

Next, I took a look at Smart Unit Tests. This is something that is available in the Visual Studio 2015 preview. I looked at how it worked by running against some code that I had, explored some of its capabilities, and then tried it with some code that was a little more difficult to test. The technology really interests me, and even though I may not use it in my own workflow, I'm looking forward to seeing what's in the final release.

Jeremy and JSON at Silicon Valley Code Camp
A Great Year
Overall, it's been a really great year. I got 5 minutes of fame on the .NET Rocks! podcast. I was renewed as a Microsoft MVP for another year. I got to speak at a lot of events.

And my blog has been gaining in popularity. I've had several of my articles picked up by link aggregators (Thanks Alvin Ashcraft and Chris Alcock). That has driven quite a bit of traffic to my site and encouraged people to add my blog to their news readers.

So last year, I was happy to see 3,000 hits per month. To see how much things have changed, for the last 3 months I've been getting over 8,000 hits per month (and this month is over 11,000).

But one of the most rewarding thing is when I get a comment like this:
Jeremy has the unique ability to simplify complex subjects and to show the listener why they should care about learning about the subject he's teaching. In his live presentations, he uses humor and compassion to help make software development less dry and more fun.
And this (from a recent presentation on Dependency Injection):
After attending this presentation, I finally understood what DI is. The source code is fairly easy to follow, and I'm not a .Net developer. I'm so glad it finally clicked. Thanks Jeremy!
I really love to help people learn.

Looking Forward
I still have a lot of things to learn. I have a lot of things I want to do. And I have a lot of things I want to teach. I didn't get to everything I had planned this year. But I've also found that even though things don't go as I planned them, I often end up somewhere even better.

I'll keep moving forward and keep stretching myself. I'm excited about what the next year will bring.

Happy Coding!

No comments:

Post a Comment