A lot of professions require practitioners to take continuing education classes. Every year my wife (a nurse), my accountant (a certified public accountant), my lawyer (a member of the bar) and my family doctor (a licensed medical doctor) all take continuing education classes in order to stay current with the most updated techniques, policies and procedure guiding their professions. For this I am thankful. I would rather deal with a professional who is current in their respective field.

As software developers we are well aware of the need for continuing education but sometimes it takes something external (say an editorial) to inspire you. After all, most software developers aren't required to take continuing education classes to keep writing software. The field of software development moves at a pace that few industries share. Just this last year, a number of new software platforms were released. 2010 brought us: iPad, iPhone 4, Windows Phone 7, Android tablets, Ruby on Rails 3, Visual Studio 2010, SharePoint 2010, Silverlight 4 and numerous others. It's a challenge to keep up with our current platforms let alone the onslaught of new platforms. So how is a developer to learn these new platforms?

Start with the Basics

Sometimes we need to just focus on the basics. My career in software began in the late 80s at a community college. I took a class called Database Programming 100. We learned how to program in dBase. The professor used a very interesting technique. In dBase there were two major categories of keywords: commands and functions. Commands were used to perform what we now know as CRUD actions on your data, while functions were used for math, system state and transformations. We learned ALL OF THEM from A to Z. This foundation of knowledge provided great benefit to me when it came to building real-world applications. While no substitute for experience, having knowledge of all the available options increases the likelihood of choosing the right tool for a job.

After taking every database and software engineering class I could attend, I entered the workforce. My first gig was as a database programmer/network administrator for a destination resort in central Oregon. At this company FoxBase+ (a dBase clone) was our tool of choice. When I moved to FoxBase+ I used the skills I learned in my Database 100 class. I opened the FoxBase+ Commands & Functions book and read it cover to cover. In this process, I learned new commands and functions that didn't exist in dBase. This proved fruitful as FoxBase+ was superior in development tools and functionality. Over the years I moved from FoxBase+ to FoxPro and finally to Visual FoxPro. Every time a new version of the software was released, I did the same thing. I cracked open the product documentation and learned what was new in each new version. Figure 1 shows you how the Commands & Functions book changed from FoxBase+ to Visual FoxPro 3.

Figure 1: Many more commands and functions to learn.
Figure 1: Many more commands and functions to learn.

To a new developer, learning literally thousands of pages of commands and functions might seem to be an insurmountable mountain to climb. To reduce this challenge to a manageable task, consider the old saying: How do you eat an elephant? One bite at a time! Sorry to any vegetarians who read this column ??

Taking a First Step with Koans

This brings me to today. Actually it returns me to last week where I spent four days at the CodeMash (www.codemash.org) developers conference in Sandusky, OH. One of the sessions I attended was called “Ruby Koans: A Gentle Introduction to the Ruby Language.” This session harkened me back to my Database 100 class. The Ruby Koans (www.rubykoans.com) is a set of lessons that take you through the process of learning the language constructs found in the Ruby language. The Koans are broken down into numerous sections: Arrays, Strings, Regular Expressions, Classes, Objects, etc. I found this class to be very rewarding. I have been doing a lot of Ruby on Rails work and it helped clarify constructs I was using and pointed me towards constructs that I might not have discovered on my own.

There are other flavors of this type of learning. Click over to the Scala Koans (https://github.com/rubbish/scala-koans), a set of lessons for learning the functional language Scala. There is a cool site called Rails for Zombies (http://www.railsforzombies.org/) for learning how Ruby on Rails works. These are just a few of the great online resources you can use to learn new tools and techniques. I highly recommend checking them out at least for inspiration. I could definitely see koans being developed for C#, Visual Basic and other software development tools.

Another idea is to explore the .NET Framework itself. The idea is to take a single class or assembly from the .NET Framework and explore all of its various options. Imagine spending time really exploring the String or Math libraries. I guarantee you will find something useful in there you didn't know existed.

Learning Is Social

One thing to keep in mind: Software development is a social activity. I highly recommend finding a learning partner to explore these things together. The best part of CodeMash was what happened in the bar and in the halls. I spent numerous hours hashing out ideas, concepts and code with other developers. Having someone to learn with is optimal.

So go out there and keep exploring new ideas and techniques.