January 6, 2006
@ 07:10 PM

It's a new year so it's time to make some more promises to myself which I'll likely break in a few weeks. This time I thought it would help if I wrote them up in public so I'd be better motivated to actually achieve them.

  1. Learn a New Programming Language: When I was in school, I got to explore a new programming language every couple of months. I used C, C++, Java, Smalltalk, JavaScript and Lisp while in school. In recent years I've been programming exclusively in C# although I've started toying with JavaScript again due to the AJAX hype. I've decided that I want to learn a dynamic programming language like Python or Ruby. Given that the .NET Framework now has IronPython, I suspect Python is what I'll end up picking up. Since we plan to greatly improve the plugin story for RSS Bandit, I may get some practical experience by building new plugins for RSS Bandit using IronPython.

  2. Write More Articles: Looking back on various articles I've written it's clear that since joining MSN and getting a new girlfriend my output has reduced. I only wrote two articles last year compared to a minimum of five or six in previous years. I've already tried to start on the right foot by promising an article on my Seattle Movie Finder page for the O'Reilly Network. My big goal is to update my C# From a Java Developer's Perspective article to account for Whidbey (C# 2.0) and Tiger (Java 5.0). The article still gets thousands of hits a month even though its over four years old.

  3. Come Up With New Career Goals: When I was in school, my dream was to become a well-known technology guru like Don Box or Scott Meyers then get paid consulting gigs to be the hero that comes in to fix peoples problems and tell them how to build their software. Since then, I've seen a lot of the people who I once idolized end up working in the b0rg cube. In conversations with Don Box, he's mentioned that the life isn't as glamorous as I assumed.

    It's coming on my fourth year at Microsoft and I'm not clear what my long term career goals are anymore. I love my current job; I get the build cool stuff that impacts millions of people and work with a bunch of smart people. However I don't have a clear idea of where this leads. In recent months I've gotten pings from recruiters from AMZN and GOOG, which I've discounted but the funny thing is if I was looking to leave I probably couldn't articulate what I was looking for to a recruiter.

    The only thing I am sure of is that I'm not going to get my MBA after all. My main motivation for getting it was "to do it now before it got too late" but that's enough of a motivator to put in the effort since I don't know what I'd do with it once I got it. 

    It's going to be time for my mid-year review and discussion with my boss in a couple of weeks. I hope I have a clearer idea where I want to go by then.

  4. Piss of Less People with my Writing: Whatever. I've already gotten two angry emails from different folks at work about stuff I've written online and it isn't even the first week of the year. Maybe next year. ;)


Friday, January 6, 2006 8:14:13 PM (GMT Standard Time, UTC+00:00)
#4 - you should continue to play to your strengths ;-)

Someone wiser than me (that doesn't narrow it down much) recently said if you're not pissing someone off, then you're being ineffectual.

Friday, January 6, 2006 8:28:08 PM (GMT Standard Time, UTC+00:00)
Learning a new programming language is a great idea, but why not force yourself to cover entirely new ground so that you learn not only a new syntax but also new idioms and new ways of *thinking* about solving problems? Why not invest your precious learning cycles where they are most likely to bear mental fruit you don't already have?

About 80 percent of Python is stuff you already know. Is relearning that stuff a good use of your time?

Learning Haskell, for example, would be an ideal investment because it would let you explore lazy evaluation semantics, rich type systems, embedded DSLs, monads, combinator libraries, and purely functional idioms, all of which are powerful and unlikely to be in your mental toolbox already. Further, given the Microsoft-Research connection to the core Haskell crew, I'm sure there would be karmic benefits. ;-)

Your time is the most precious resource you have. Invest it wisely.


P.S. If it does come down to Python or Ruby, I'd pick the second: only about 70 percent of Ruby programming is stuff you already know.
Friday, January 6, 2006 9:20:45 PM (GMT Standard Time, UTC+00:00)
Oh I love #4. Rock on Dare :)
Friday, January 6, 2006 11:37:23 PM (GMT Standard Time, UTC+00:00)
If I've learned nothing else in the past few years, it's that even the most benign comment (benign in your mind of course) is likely to piss off at least one insane person. Not that I really cared about whether or not I'm pissing people off, but it's just a fact of life that there's no way around it. #4 should have never even been on your list. :-)

I think everyone should learn Scheme in 2006.
Saturday, January 7, 2006 8:06:14 PM (GMT Standard Time, UTC+00:00)

Great list! Except #4, which I violently disagree with and it pisses me off!

If I put together a similar list, maybe it would include pissing off less people when I comment. On second thought, that might preclude polite disagreement and constructive criticism, which is a major function of these things in a civil blogosphere.

Have a great New Year!
Comments are closed.