Earlier this month, I wrote about how it’s inevitable that you’re going to be distracted during the course of your workday. Today I’m adding a second installation to the “You’re going to…” series by assuring you that You’re going to fall behind.
What I mean by this is that as a developer, there will always be things you can’t keep up on. Be that a new language, framework, toolkit, backlog of features, unit test coverage, or even documentation. There simply has become too much to learn, too much to consume, too much to monitor, for any normal person with a day job to manage. And that is okay.
Back in the day
When I started software development in the late 1990’s, there really were fewer options for how you did your work. It really came down to a few languages, and those mostly supported by Microsoft, namely FoxPro, Visual Basic, and C++. Even Java, released in 1995, was only beginning to garner some momentum. Consequently, there were finite choices, and seemingly finite amounts of reference material to consume. These are the days when not only would you get 25 3.5 inch floppy disks to install the product, you’d get 3 or 4 printed volumes as instructional guides. If you were lucky enough, as I was, to have an employer who would spring for the CD-ROM based MSDN library subscription, then your reference base grew a bit more, especially with each quarterly release.
But in the end, if I had a problem I couldn’t solve, the standard solution was at the other end of the Microsoft Support telephone number. I have many memories of sitting on hold waiting for a support representative to pick up so I could ask a single question.
The release cycles for new products in the late 90’s and early 2000’s were long. And the infancy of the Internet at that stage meant that only so many new products or technologies became available each year. I dare say it was manageable, and if you paid attention, you could reasonably stay current with the latest and greatest.
The Internet changed everything
In my view, the Internet has had two significant impacts on the field of software development. The first is the amount of content available related to any given programming language, or in fact any given specific issue. The second is the acceleration of new technology being released for developers to leverage.
To illustrate the former point, do a simple Google search for your programming language of choice. The results may surprise you.
21 million results. 21 million pages that all may have something relevant to the problem you are trying to solve. It’s no wonder we feel overwhelmed.
How to keep up
Just as you would if you found yourself falling behind the pack in a footrace, keeping up with the industry requires that you dig deep in to your core and put all you have towards closing the gap. Here are some things I have found useful.
1. Plan to give a talk
One of the most effective ways I have found to embark on learning a new technology or method is to commit myself to giving a presentation about that topic. This can be at a user group, a code camp, or even just as a lunch-and-learn with your team. The risk of embarrassment in front of your peers is a giant motivator, and a deadline can help you prioritize and structure your learning.
2. Optimize your online consumption
With the glut of material out on the Internet, how possibly do you filter though the volume and get to the best resources. One method I use is to always start with what I call my trusted sources. These are individuals like Scott Hanselman, K. Scott Allen, and Randy Drisgill, who have an established reputation as reliable authors. The next tier is material from the producers of the technology themselves. Everything from Microsoft down to the discussion threads on CodePlex, if it’s directly tied to the people creating the technology, chances are you’ll get better quality information. Finally, expand to the general tech blogosphere. Every developer has their own application and experience with a language or tool, and that broad base will give you lots of insight as to what is good, bad, and ugly about the product.
3. Online video and Podcasts
In the last few years there has been a downright explosion of online video training materials available online. Free sites like DimeCasts; paid sites like WintellectNow and Pluralsight; and of course, lots of user-sourced material on YouTube. The genre of tech-focused online screencasts is maturing rapidly and gaining not just popularity, but quality. Similarly, chances are there are dozens of individual podcasts available oriented around the topic du jour. Online training and podcasts are great because they can be portable as well as passive. You can listen to a podcast while on the treadmill, or watch a video while traveling. These are great tools to help you incrementally grow in knowledge.
4. Start a side project
If you are like me, and I think most developers, you learn best by doing. So if your main job doesn’t afford you the opportunity to explore and apply new technology, create your own project that does. I started HomeSpotHQ.com in 2009, and it became the venue in which I learned MVC. Setting off to create a product, whether or not you make it public, is a great form of focused learning. If you’re particularly motivated, you can follow in Jennifer Dewalt’s footsteps and do 180 websites in 180 days, each implementing a specific method or tool. The point is to not just read and watch, but do.
Long journey, first steps
Photo credit: http://www.flickr.com/photos/pigpilot/