Tuesday, 5 March 2013

When and Where Do You Learn?

In a previous post, I mentioned a favourite interview question of mine: Stored Process Server vs Workspace Server - What's the difference? I thought I'd mention another. Outside of incidental information picked-up through your regular work, how do you gain new knowledge?

If you rely on your regular work tasks to guide you into learning new stuff, you're likely to be limited to a slow pace of learning, and likely to learn more about what you already know, but much less likely to learn completely new concepts and technologies. For instance, you don't *have* to use hash tables, there are plenty of adequate alternatives, but once you've got to grips with the concepts of hash tables you'll see how you might approach your work in a different way and/or approach tasks that you'd previously thought too difficult.

Take regular expressions as another example. SAS has a raft of string functions, so why learn a completely new way of handling strings? Well, those who've put time into understanding regular expressions will tell you that the ability to do complex string functions in a simple fashion with regular expressions makes your coding and testing simpler too.

And, it doesn't have to be code syntax that you learn. Perhaps you could make better use of Enterprise Guide's interface and features, strengthen your adoption of modular design, or gain a stronger grasp of the concepts and rationale for change management.

So, voluntarily learning new things (and practising their use with code katas, maybe) is a "good thing". How might you go about it?

There are two broad approaches. The first is to pick topics of your own choosing, and then go and research them; the second is to be randomly given new topics to understand and learn.

For the first approach, you have a choice of courses and books, but you also have a cornucopia of information on the world wide web which is available through a small number of well-chosen searches. Conference papers are an excellent, readable source of information.

Taking the latter approach, you might subscribe to one or more blogs such as NOTE:. Not every article will be of interest or relevance to you, but you shouldn't feel obliged to read and learn everything that comes your way! My December article on the use of blogs and RSS readers spelt out how to make the best use of tools such as Google Reader, and offered advice on the discipline required to read when you've got time, and discard when you don't.

Attending conferences offers opportunities for both approaches. You might attend papers because they are focused on a topic of specific interest, but you might also choose sessions from the agenda in a less focused approach which is driven more by a sense of curiosity.

Having encouraged you to learn new things (and I do strongly encourage everybody to do so), I should offer a word of caution. Code has to be maintained and supported; by people other than yourself. So it is unforgivable to write code that is so complex that it is beyond a reasonable expectation of understanding by others. When you do learn something new and distinctly different (perhaps hash tables are an example), always take the opportunity to share your new-found knowledge with others. Your team mates will appreciate it and respect you all the more for doing so.

What steps to new learning will you take today?