From my experience in the current working environment, one's professional development is definitely in the hands of the individual.

As I see it there are several routes to the same objective based on cost, time and availability

  1. External Offsite training Online
  2. Training providers (itunes U,Pluralsight etc)
  3. Books
  4. Specialist /user groups
  5. Specialist web sites (Channel9, stackoverflow,dnrtv,codeplex etc)

What would you consider to be the best approach (blend) to continued learning and maintaining a professional standard of work?

  • 1
    your list seems to miss the route that is probably most reliable: attending job interviews at other companies. Besides guiding through what's hot and what's not, it has an additional advantage of giving a chance to get a better job. programmers.stackexchange.com/questions/105280/…
    – gnat
    Commented Oct 14, 2011 at 7:29

6 Answers 6


However you learn, you should always think about works for you. What works for me may not work for you, and vice versa. Here's what works for me:

  1. Always learn from more than one source.
  2. Always put into practice what you're learning whilst you're learning (if that isn't possible then as soon as you can afterwards).
  3. Try not to learn about something in isolation. Sometimes you can't avoid it, but try to understand the context in which things are done and alternative approaches. In particular try to understand the consequences (good and bad) of doing something a certain way.

Here are the sources of information that I find valuable in order of usefulness to me.

  1. Books. For me these work really well, you're presented with a coherent (hopefully!) block of knowledge. They're easy to use, cross-reference and if you're not intending to read it cover to cover you can often pick up extra knowledge by page flicking (something I find missing from electronic resources where I find that sometimes I fall into the trap of going looking for the answer I'm expecting).
  2. Colleagues. Probably the best way to learn about something is to work with someone who knows the topic well and is willing to share that knowledge. It can also be useful to learn with someone else who also doesn't know much - but beware of jointly coming to the wrong conclusions and developing bad practices.
  3. Online Resources. Books can never keep up with the speed of development and discussion in the world of software development. If you want to keep up to date you need to read blogs, mailing lists and so on. You'll also got detail on topics that either aren't mainstream enough or are too narrow to have had a book out yet.
  4. Real-world Meetups. These are things like conferences and user groups. I think these are often nice introductions to new topics and good for confirming what you already think/know about - but don't expect really in depth coverage unless the event is extremely focussed. Where the real value for me is that you often get a lot more honesty than you get from books and blogs, especially during the Q&A part.
  5. Formal Courses. A lot of people sneer at formal courses - I suspect that's because they've not been to really good ones. Formal courses are really good when you need to get up to speed with something really new really quickly. Providing the person delivering the course knows their stuff you will also get a good feel for the thinking behind something not just the technical part.

    Self-taught people (and all good programmers will be mostly self taught as soon as they're more than a couple of years out of the last course they did) tend to pick up bad habits without realising it because what they're doing has worked in the context that they're in. That knowledge tends to not hold up when put into a different context. Sometimes it doesn't matter, you just recalibrate what you've learnt, but sometimes it does.

    Sadly good courses are rarely cheap and often aren't associated with any sort of certification - so picking a good course is both hard and (financially) dangerous so you could end up doing a rubbish course and having paid through the nose for it. Still, I recommend that people do a formal course every now and then to supplement self development.


In addition to what Martin wrote, I will add the following:

The most effective way to learn is practice. Unless you are Raymond Babbitt of course.

So try to ask for tasks that you don't master completely. It will forces you to learn the appropriate technologies to complete it.

Example: You don't know anything about WCF? Take that task that state "build a WCF service for the customer object".

EDIT: Just noticed that I already answer the same question here.

I hear, I know. I see, I remember. I do, I understand. [Confucius]

  • Read! Mainly blogs in my case
  • Chat! Make time to discuss and validate with your peers
  • Seminars and workshops, instead of (rather dry and formulaic) classroom training

If you are on a team, I'd say the best way for learning is to work together with your peers and learn from each other.

  • 1
    I think this is the best single way, but it's not always possible. You can always learn from other people, even if they're more junior that you, but your team may not be involved in the topic you're interested in.
    – FinnNk
    Commented Oct 30, 2010 at 12:43
  • Constraining learning to what the crowd knows can cause a kind of Lemming effect, where we accidentally and blindly follow each other to our mutual harm. If you want to learn something the crowd doesn't know, you can't follow the crowd to do it. We need the true innovators in our field, and they always follow their hearts. Commented Mar 12, 2020 at 19:07
  • Besides this, I believe that the best way to do professional development is to master subjects enough to teach them, and then actually teach them. There is something about understanding a topic well enough to explain it to others, that catapults our own understanding, and our ability to use it -- leading to synthesis, invention, and advances in our field. Commented Mar 12, 2020 at 19:15
  • According to Steve McConnell, author of Code Complete, our Holy Grail is simplicity, minimizing complexity. But our pride is an ever-present inherent conflict of interest we must quell. From Code Complete, see chapter on "Personal Character". So, my last suggestion is to get this particular book. I have read it repeatedly -- it has a lot of research-supported wisdom, and that section on character. I haven't taken his classes yet, but it's on my to-do list. (Oh, yes, have both the print, and the Kindle versions, and it's worth it!) Commented Mar 12, 2020 at 19:20
  • Best suggestion I heard: every year, pick one new Programming Paradigm or programming language to learn during that year. My best suggestions are Factor and Common Lisp. Commented Mar 12, 2020 at 19:22

The best approach would be to get books and update you knowledge on tools you wish to learn.

Specialist websites should help you to answer some of your main questions.

Of course we have to consider that you should have, something like:

  1. Willingness to experiment: try different commands until he got the software to do what you want. Try a few fixes on your own software before asking for help!

  2. Ability to learn independently: never wait for an explanation, go for it! Hard-earned knowledge never fades and provides motivation when the next challenge appears!

  3. Great sense of curiosity: ask your self how does this work? what does this code do? what about if you try a particular sequence of commands? Master your programs.


Within the work environment always volunteer.

Whenever someone asks for help installing new software, is looking for someone to join a new project, needs someone to look at some unmaintained software -- stick up your hand.

You will learn a lot even if the software is outmoded and unsupported! After a while people will come looking for you when a new project comes up or some new software needs evaluating.

Not the answer you're looking for? Browse other questions tagged or ask your own question.