Friday, February 4, 2011

Handling Information overflow

Almost everyday I see new stuffs coming out of Beta or CTP releases from Microsoft. It used to be exciting but the list of products and technologies is getting bigger and bigger everyday. WPF, WF, Silverlight, Powershell, SSIS, SSDS, EF, LINQ, WCF, Data Services, XAML, Asp.Net AJAX, Asp.Net MVC blah blah..

Since I am in a Technical role (like most of you), fundamental knowledge or just familiarity is not enough. I need to dig a little deeper into all the new technologies, try out prototypes and check if everything fits together, considering lots of other critical factors like Business, technology maturity, environment and people. Not to mention comparison with other competing technologies for convincing my team.

In some cases, you have to be strongly aware of concepts like REST and how it is different from SOAP. In other cases, you have to get your hands dirty for workflow solutions using WF. Again, one fine day you find that stuffs like WinFS is completely erased from the map and getting evolved into something different.

One of the earliest warning I got for not updating my skills was when I was a bit slow to adopt SQL 2005. Because of that, I am still having a hard time catching up with SQL 2008. In another scenario, I was involved with .Net 2.0 at a very early stage and was able to adjust faster with .Net 3.0/3.5. Even the 3.5 SP1 has a bunch of new features.

I admit I love gathering knowledge but was wondering if there are efficient ways of managing and absorbing all this information without affecting normal work schedule. My question is how do you all manage this information overload? One thing I have done is setting a filter. I loved reading hardware review sites as a hobby but now totally cut them off from my list. It will be interesting if you can share your views.

  • Focus. Become an expert in a smaller set of things. Stop chasing Microsoft.

  • You have to pick a subset and focus if you want to maintain your sanity. I recently bought a Zune 80 and have loaded it up with tech-related walkthrough videos and podcasts. I have a 30-45 minute commute each way, so that's easy time I can spend learning about new technologies without much impact to my daily routine. Beyond that, you just have to make time to focus on the things you want to learn about and forget the rest. It's like the GTD principle - clear your desk/life of anything not directly related to getting through the tasks you need to get done. Drop any RSS feeds from your reader that aren't constantly providing value. Pick a project and start coding, learning and refactoring as you go so you can practice what you're reading/listening to. Go to user groups an get involved in break-out groups for the specific topics you're interested in. Above all else, try to set yourself up with a job that requires you to work on stuff that interests you. That way, your natural inclination will be to learn and practice the stuff that makes you happiest.

  • I split up my information needs into two categories. First I want to have a good overview of what's available. And second I want to know all the details of the stuff I work with. If you try to know everything about everything you'll drown in the information.

    I found podcasts are great for the first type of information. I can listen to them on my commute so they don't take any time. For in-depth information I do only what I've heard called Just-In-Time learning. Only learn the stuff you need for a project (hobby or professional doesn't matter) try not to get sucked into every hip technology you come across but only learn stuff you're going to use. I stopped reading magazines (msdn magazine, code magazine etc) because the information there is usually too technical for the overview and too shallow to work with. I read books for stuff I'm really going to work with to get the "zen" of a new technology and I use google a lot for reference.

    Try not to stop reading stuff you love reading. If you love reading hardware reviews and you do that for relaxation then it's a bad idea replacing that time with work related stuff.

    From Mendelt
  • I'm a generalist and don't limit myself to any specific technology, so the following comment is in that spirit.

    At the very least, I keep up to speed about what's been released. I don't touch a technology until its v1.0 has been released (and sometimes I wait even after that), unless it personally is of interest to me. Until that time, I keep myself aware of what the technology does at the powerpoint level. I haven't met many managers who are eager to include alpha, CTP or beta bits into their production applications.

    When I am confronted with a technology I don't know for a project, I go and study it. Sometimes I study by reading some articles, but most of my studying is done by experimenting with the technology and pushing its limits.

    One of the measures I use to pick the projects and companies I work at is how much new stuff I can learn there and how much of a challenge they pose for me. On the other hand, I am well aware that I will never know everything and I live peacefully with that knowledge. There are always DBAs, SysAdmins, QA guys, etc. you can simply hire.

  • Owning an iPod has been a life changing experience. I now keep up on the industry through informative and interesting audio and video podcasts. Here's some of my favorites:

    There are plenty others, but these are the most interesting and relevant to me. Heck, a lot of interesting stuff can be found by just browsing the iTunes store.

    Like financial planning, keep your holding diverse. Like already said, don't focus on Microsoft-only or .NET-only. There's a lot of non-Microsoft content to learn that still applies to .NET work.

    From spoulson
  • I like to take the same approach I learned from Agile, "wide not deep". I think it is important to have at least some exposure to the new trends. F#, Ruby, IronRuby, IronPython etc. Am I going to use any of those in my current or next project, probably not. But I've already learned what I consider to be valuable insight that I am using in my current project by just very basic exposure. Chances are you will find something occasionally, if you're looking, that will provide some immediate value and that's when you go deep enough to get the details. That's why I think it's important to be looking.

    I understand your point about prototyping and actually trying the new stuff in order to get a feel but I disagree that you have to go to this level with most things before you know if there is value there for you. I think once you start looking, you start to get a feel for "what's out there". You start telling yourself, "oh, this is how project ABC is solving the same XYZ problem I read about project DEF having" - and you already understand the basics.

  • Joel Spolsky wrote an excellent article Fire And Motion which says that not all new shiny technology should be followed. I second Jason Cohen: Stop chasing Microsoft.

  • Be a late adopter. You will go crazy chasing Microsoft, Oracle, Sun, et al.. Stop reading MSDN magazine, most of what is there will be dead in 2 years. Wait for the 3rd major version of everything :-) For example, I started with Java 1.3, .Net 2.0, etc...

    I have been involved with computers for 29 years, so I have seen technologies come and go, some very fast.

  • I would apply "80/20 principle" thinking to this. Google "Richard Koch" for the world expert on this approach.

    Effectively it means that 20% of inputs to anything will generally provide 80% of outputs from it

    This means that learning about 20% of any new technology you come across will provide you with 80% of what you need to know about it.

    And 20% of the technologies out there will be used by 80% of the people - so just stick to learning in detail what the vast majority of developers already vouch for.

    And even if you do decide to learn something in detail, bear in mind that you'll be able to do 80% of everything you'll ever need to do with it from learning just the core 20% of it.

    From Joe

0 comments:

Post a Comment