Wednesday, February 27, 2008 10:00:17 PM UTC #

"Learn at least one new language every year."

    -Andy Hunt and Dave Thomas, The Pragmatic Programmers

For a while now many of us in the .NET space have complained of the never-ending torrent of new technologies and frameworks coming from Microsoft. While excited by the potential benefits (and yes, the shiny bits), we're so inundated with NEW that it's impossible to keep up. Something has to give.

Arrival stage left: the Pragmatic Programmers, circa 2000/2001, who inform us in their "Your Knowledge Portfolio" section that in order to be well-rounded developers, in addition to the learning we do related to our job, we need to set a goal to learn at least one new programming language every year.

What's unfortunate about this whole situation is that I actually think this advice is harmful.

One language a year: unattainable

No one learns a language a year, year after year. Except Ted Neward, and let's face it, he's nuts, and therefore doesn't count. So why should we set it as a goal? So we can fail, unless we're Ted Neward? GREAT.

Now I'm depressed

Why set unrealistic goals for ourselves?

Why a year?

Why not 18 months? Am I still broadening my horizons if I take 18 months to learn Lisp? or 10 years to learn C++?

Alternative to '1+ language/year'

Instead of hyperfocusing on '1+ language/year', why not take other advice offered by the Pragmatic Programmers on the very same page? I particularly like the way they present learning as an investment [the following is paraphrased]:

  • Invest regularly
  • Diversify portfolio
  • Balance portfolio for risk
  • Buy low/sell high (get in on technology early)
  • Portfolio should be rebalanced periodically.

See! All this is useful, spot-on, helpful advice! And what's more, I don't even feel a sense of crushing despair!

Generalizing specialists

Let's work this from another angle: on this page Scott Ambler discusses what it means to be a generalizing specialist. The summary, by example, is that instead of sticking your head in the sand and learning SharePoint Designer 2007 to the exclusion of all other things (i.e. becoming a 'specialist'), you make a conscious effort to learn things that are NOT related to SPD 2007, however lucrative it may be at the time.

Nowhere on the description of generalizing specialists is there a mention of yearly language learning quotas.

So what language are you learning, Peter?

I'm going to make a conscious effort this year to learn C#. Wait a minute dude, I'm supposed to know C# already! Well, sure, yeah, but I would like to, you know, REALLY know C#. I would like learn C# such that I'm effective with it—such that when I read Bill Wagner's Effective C#, I'm not surprised by any of his 50 discussions of C# programming. Think about it.

I want to learn all the C# 3.0 features, aside from LINQ. I don't even honestly know if there are other 3.0 features, oops. Wait, extension methods. Awesome, I didn't totally forget.

I'd like to learn C# to the point that the very sight of Java code disgusts me. I want to see an Eclipse window and feel the physical urge to puke. That's how awesome at C# I want to be.

I'm not going to promise I will be C# dominant by EOY 2008. It may take longer. But I will work at it, on a regular basis. And I will get better.

And I think this is all the Pragmatic Programmers ever intended in the first place: pick a language; learn it and gain some perspective; pick another language; absolutely don't stop learning after your first language; don't take too long to learn the new one; constantly learn. There we go; that wasn't so bad.

Categories: .NET | SharePoint
Technorati:  | 
Wednesday, February 27, 2008 10:00:17 PM UTC  #     |  Comments [3]  |  Trackback Tracked by:
"Learning Lahar" (Peter Seale's weblog) [Trackback]
"PowerShell: Here to Stay" (Peter Seale's weblog) [Trackback]
Wednesday, February 27, 2008 2:40:40 PM UTC
Perhaps corollary to that suggestion is the suggestion that you should work in more than 1 technology at any given time. I'd also consider Frameworks in that "1 language a year."

For example, I'm deeply invested in NHibernate, but I should get out of my comfort zone and try SubSonic (which I'm doing) or Entity Framework later on. If nothing else it gives me more perspective in my tool of choice. I don't have any pressing need to learn WPF or WF, but I think I will tackle it at some point, just to make myself more well-rounded.

For you, maybe it's Sharepoint 2003, then 2007, then 2009, etc. ;) You could easily spend a year and not be an expert with each one of those.
Wednesday, February 27, 2008 3:02:57 PM UTC
New year resolutions at the end of February...... tsk tsk...

All the same, you have a definite point. I have absolutely enjoyed getting back into programming with .Net and Powershell, so perhaps I should set a similar (if somewhat less ambitious) goal for myself.
John
Wednesday, February 27, 2008 3:25:56 PM UTC
Don't forget out-of-band SharePoint releases like the MS Search Server 2008. I guess that's technically my language for the year. Also Office Business Applications and VSTO, and watch out! And Silverlight is on the horizon. Argh.
Peter Seale
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview
Syndication

Search
Posts on this page
Categories
Sites I visit regularly
About

Powered by: newtelligence dasBlog 2.1.8102.813

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008, Peter Seale

Send mail to the author(s) E-mail



Sign In