The main constraint in software development is learning. This means that learning is a core skill for developers and we should not think we’re done learning after graduation. This post explores some different ways in which to learn.
Go To Conferences
Conferences are a great place to learn new things, but also to meet new people. New people can provide new ways of looking at things, which helps with learning as well.
You can either go to big and broad conferences, like Java One or the RSA conference, or you can attend a smaller, more focused event. Some of these smaller events may not be as well-known, but there are some real gems nonetheless.
Take XML Amsterdam, for example, a small conference here in the Netherlands with excellent international speakers and attendees (even some famous ones).
Attend Workshops
Learning is as much about doing as it is about hearing and watching. Some conferences may have hands-on sessions or labs, but they’re in the minority. So just going to conferences isn’t good enough.
A more practical variant are workshops. They are mostly organized by specific communities, like Java User Groups.
One particularly useful form for developers is the code retreat. Workshops are much more focused than conferences and still provide some of the same networking opportunities.
Get Formal Training
Lots of courses are being offered, many of them conveniently online. One great (and free) example is Cryptography from Coursera.
Some of these course lead to certifications. The world is sharply divided into those who think certifications are a must and those that feel they are evil. I’ll keep my opinion on this subject to myself for once but whatever you do, focus on the learning, not on the piece of paper.
Learn On The Job
There is a lot to be learned during regular work activities as well.
You can organize that a bit better by doing something like job rotation. Good forms of job rotation for developers are collective code ownership and swarming.
Pair programming is an excellent way to learn all kinds of things, from IDE shortcuts to design patterns.
Practice in Private
Work has many distractions, though, like Getting a Story Done.
Open source is an alternative, in the sense that it takes things like deadlines away, which can help with learning.
However, that still doesn’t provide the systematic exploration that is required for the best learning. So practicing on “toy problems” is much more effective.
There are many katas that do just that, like the Roman Numerals Kata. They usually target a specific skill, like Test-Driven Development (TDD).
Filed under: Software Development Tagged: certification, code retreat, collective code ownership, conference, Coursera, cryptography, deliberate practice, design pattern, kata, learning, open source, pair programming, Roman numerals, swarming, TDD, user story, workshop, XML Amsterdam
