Drinking From the Firehose
As a developer trying to stay sharp and keep up on the latest technology, frameworks, and best practices, you probably find that you are overwhelmed by the sheer volume of information that is coming in every day.
I often feel like I am swimming hard in a river against the current, sometimes making ground, sometimes losing ground.
So many sources of data
There are so many sources of information coming at us every day:
- Trade magazines
- Technology news
- Software and tool updates
- User group meetings
Sometimes sitting at my desk is like having my eye-lids taped open and being forced to watch a Nazi brain washing video. ”You will kill the prime minister of Malaysia!”
With all the sources of data coming in all the time, there is really no way to keep up on all of it, but that is okay. At least I keep telling myself it is. What you really need is a good strategy for dealing with all of this. I’ll be perfectly honest here. I don’t have one, but I have a few tips that I have been using and just maybe it can help you.
Pick your priorities
You have to know what is important to you in order to make decisions about what content to consume. If you can’t pick it all, you want to make sure you are getting the best and most important information.
As a developer who has been straddling the line between Java and C# for the past 2 years or so, I have found that my number of information sources is close to double the number of sources for a purely Java or C# developer. If you are Ruby/.NET or Scala/Java or any other kind of dual casting class, you’ll have the same problem.
Fortunately, there is a simple solution, as far as priorities go, to this problem. Prioritize language agnostic sources of information as the highest. What I mean by this is, instead of reading a book about C#’s or Silverlight, read a book about writing better code, or being a better programmer, or design patterns. You want to prioritize those kinds of things near the top of your list because those skills have a long shelf-life. Learning better ways to express yourself in code or design patterns is likely to benefit you regardless of the technology or environment. Those kinds of things go to the top of my list.
Next, I try to pick as a priority the technologies that I am currently working on right now. If I am working on building a DSL using ANTLR then I want to read things about ANTLR. If I am working on an ASP.NET MVC application, then I want to be picking blogs about ASP.NET MVC. The idea here is that I am learning about something that:
- I know has value, because I am using it right now
- I can immediately benefit from as it will help me do my job
- Is interesting to me, because it is about what I am doing
- Doesn’t lead me in a different direction, because I want to use what I just learned
Finally, I try and pick as priorities things that I am interested in. Perhaps something that I would like to learn about or do as a hobby. For example, I don’t get paid to write iPad or Android applications, but I am really interested in both of those technologies and I might like to someday write a little app as a side project. Having a bit of diversity into some technology you’re not really working in for a living, but you are interested in can be good. It can prevent you from being too narrowly focused and becoming a technology or language bigot.
Pick your data sources
I absolutely hate cable TV. I haven’t had cable TV for about 7 years now. Why? It is a lousy data source. The signal to noise ratio on cable TV is horrible. You sit down and almost end up spending as much time watching commercials as you do shows. Plus, when you are flipping through channels, you end up losing hours watching stuff you are not really interested in, just because it is on.
Instead, I use a service like Hulu or PlayOn to only watch the shows I want, when I want, with almost no commercials. (And it is free.)
My point here is that you have to be picky with your data sources. You want to pick the data you want to get, and you want to pick sources that have high signal to noise ratios.
To do this takes some effort and some time. The best way I have found to do this is to figure out strategies for determining quality.
- For books, look at reviews and recommendations, don’t pick up a book because the cover looks cool. Make sure you’re not going to waste your time reading something that is not good material.
- For blogs, put them in your RSS reader, read all the ones in your reader. Over time, the ones that you feel like you don’t want to read, remove from your reader, or put into a folder for checking every once in a while, instead of your must read list. You can scan the lists every couple of days or so and read just the things that interest you.
- For podcasts, recognize the difference between entertainment and information. It is okay to listen to podcasts just because they are entertaining, but make sure you know which ones you consider good information, and which ones you consider good entertainment. The best ones are the ones that combine both.
Keep your lists active. Add things, remove them, always optimize it. Sometimes data sources that were good go sour. Sometimes new good ones pop up. Don’t get stuck in a rut reading stuff that doesn’t benefit you anymore. Your own growth will change what is valuable to you also.
Figure out your schedule
You have to know how much time you are going to dedicate to the fire-hose drinking. If you have more things than you have time, you end up becoming stressed out. Your reading list backs up and becomes a pile of work instead of something you enjoy doing. Don’t let that happen, make sure you have a plan and stick to the plan.
You need to figure out when you are going to do particular things and about how much time you have. This will force you to set some limits on the number of things that you allow in each day.
For example: I know that I will spend about 45 minutes to an hour each morning catching up on blogs and things in my RSS reader. I know that I have a commute each day which allows me about 40 minutes each day to listen to podcasts. I know that during the day I have about another hour of doing something mindless where I can probably listen to a podcast while I work. I know that I want to dedicate about 30 minutes each day to reading a book.
Based on my schedule, I know that I can’t really have more than about 8-10 things in my RSS reader to read each day. I have to pick about 3-4 podcasts to subscribe to (depending on frequency of updates and length of episodes), and I can pick a book off my reading list on average about a month.
Use your knowledge of what your schedule is to put hard limits on the amount of information you allow into your world on a subscription basis. Remember also that things like tweets are going to show up at different points during the day, and leave some time for discovering new sources from recommendations.
Do you like wasting hours of time with nothing to show for it? Avoid the temptation to mark things off your RSS reader or your book list, just for the sake of marking them off. If you are going to subscribe to an RSS feed, read the content. Read the whole thing. Don’t skim through it and not gain the information. The same goes for books and podcasts.
If you feel like you don’t want to read it and you want to skim it instead, then simply remove it from your subscription, close the book and move on or stop the podcast. Don’t waste your time, and don’t do things just to check them off a list.
Hopefully my advice has been of some help to you. I am still trying to figure how to do all these things myself, and I still do feel overwhelmed at times, but I do feel like I am getting better at it. What do you think? What kind of strategies do you employ to “drink from the fire-hose”?