Designing Learning for Software Professionals

[article]
Summary:
As software development professionals, we're always learning—not just new technology, but the problem domain, the quirks of the users/clients, even the characteristics of the evolving system itself. That's a lot of learning—from many sources.

In order to be successful, we need to improve and take a more active role in our own learning whether we are working as developers, testers, or managers. 

People at different skill levels have different needs when it comes to learning. Beginners need unambiguous, context-free rules, with no confusing reference to the larger picture. More advanced practitioners cannot work to rule, and must see the larger context and a holistic view.

In addition, people have different learning styles—some prefer to read, others to hear a lecture, others to just wade in and play (also known as "experiential learning"). Oh, and before we even start learning, there's the small matter of trying to determine what you need to learn in the first place. Create a plan.

In order to focus deliberately on your own learning, start with these three innocuous questions:

  • What do you need to learn?
  • How are you going to learn it?
  • How will you know you're done?

Let's take a closer look at each of these.

What Do You Need to Learn?
This is a much harder question than it first appears. If you are on a project moving to a new language or environment, then the answer might be pretty simple. But many times, what you really need to learn isn't so obvious.

What's broken? What's lame? What are you guessing at that you really ought to know? What's missing in your knowledge portfolio, either for your current project or for your career in general? Besides obvious things such as a technology or a technique, think about less obvious things like, "What are the characteristics of the system when placed under load?" Make a list. Go on, grab a piece of paper or a keyboard and make a list. We'll wait right here.

How Are You Going to Learn It?
Okay, now you've got a list. For each topic that you've identified as relevant, you need to figure out how you're going to learn it. Unless you've picked all new topics and you're a complete beginner, you will have some experience with each one. Depending on how much experience you have in each topic, you'll have to approach each one differently.

One size does not fit all, even for you! For topics in which you are a novice, you need to find very basic, rule-based, "cookbook"-style instruction, possibly cutting across different technologies. For instance, Greg Wilson's new book Data Crunching gives a beginner's overview—and concrete recipes—using XML, SQL, plain text, and binary file handling. If you have more experience, you need to find something with more of a big-picture overview. For instance, if you're fluent in several programming languages, a simple overview of a new language's syntax and key features is probably enough to get you going. How do you learn best? If it's by reading, then go buy some books. If you need to hear it or attend a class, then start scouting the web for an appropriate conference, workshop, or other learning opportunity. 

About the author

Andy Hunt's picture Andy Hunt

Andy Hunt is a programmer turned consultant, author and publisher. He co-authored the best-selling book "The Pragmatic Programmer," was one of the 17 founders of the Agile Alliance, and co-founded the Pragmatic Bookshelf, publishing award-winning and critically acclaimed books for software developers.

StickyMinds is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Nov 09
Nov 09
Apr 13
May 03