tags:

views:

785

answers:

17

I wonder what would be the best way to learn "new" technologies (i.e. like LINQ, WPF, WCF, AJAX, latest C# 3.0 stuff, etc)?

How do you learn the best? Is it by books, webcasts, online articles, tutorials, examples or hands-on-labs?

Also, how do you make sure that you will remember the learned stuff? (reading a book/article again? digging more deeply into a topic that you think you are already familiar with?)

+12  A: 

I'm old fashioned. I still start by finding a good book, reading it from the beginning until it relies too heavily on things I didn't grasp on the first read-through, then go back and do the hands-on bits.

Blogs, webcasts, and online articles usually come once I have a grip of the basics.

Jekke
+6  A: 

Start by thinking up a project to use it on. The learning process changes drastically when you are trying to use it to accomplish a specific goal.

From there what you are doing is research driven. You can look for whatever book, webcast, etc. that tells you how to do the next step in your project.

Once that project is done, you can go back and learn the inner workings of the technology with a lot more perspective. (And you are better equipped to detect the total BS some authors offer us.)

Jonathan Allen
I'm a fan of the "doing stuff in order to learn" methodology.
JeeBee
+11  A: 

The best thing you can do is to start coding. There is a wealth of information out there: books, magazines, blogs, etc. Whatever you do, don't just read them - follow along and code the examples.

The source of the learning is not too important, I have read bad books and good blogs, and I have also read excellent books and dangerously inaccurate blogs.

Andrew Hare
+2  A: 

I normally get enthused by a topic presented at a user group (we have lot's in the UK), conference or roadshow. That way you can ask questions at the end to someone who really knows their stuff.

Then I either research online, or buy an eBook and try to code come 'real' application (i.e. one you've been meaning to write to do 'stuff' but haven't got round to). If I'm lucky I code for a module for a real application that I'm working on.

It's the inspiration of someone speaking about it who actually really uses it and provides a real world example that sparks my interest.

Liam Westley
+1  A: 
  1. Find a couple of good blogs/podcasts/whatever that give you an Intro into the new technology. This let's you get up know the similarities/differences between existing technologies and gives you the keywords to look for and a general overview of the technology really fast.

  2. Find a couple of really simple projects with source code to give you an idea on how an up-and-running application works and can potentially give you a point in the right direction when you're trying to figure something out.

  3. Find a couple of good messsage boards (like SOFlow 8^D) that you can tap into when you run into issues. It will often have code snippets you need if you're piecing things together yourself.

  4. Get dirty! Come up with a great little project that you'll be passionate about creating and build it with the new technology. The passion will help you through those tricky issues and give you some personal bragging rights when done. 8^D

Dillie-O
+1  A: 

It might sound funny but this is my usual learning path. I wont say its the best way but here is how i do it.

  1. I get hold of a book that only scratches the surface, something for absolute beginners, like teach yourself in 24 hrs or something. This gives me a chance to get user to the terminologies and save myself from getting intimidated.

  2. I look for some videos and tutorials online and practice/ replicate examples that I see.

  3. Once you are comfortable you can start reading up the bibles for that language/ technology.And dont stop implementing examples.

  4. Keep looking for free online tests or questionaire to make you feel confident about it. Thats where StackOverflow comes in :)

Perpetualcoder
A: 

trial and error! This is way the BEST way to learn anything!

Think like learn to swim: you can read a LOT of swimming, but if you don't try, you will never learn.

If you learn from a book, open your editor/IDE and try ANY example of that book, even if it looks stupid. Those stupid example will develop your analytic thinking ;)

Ionut Staicu
A: 

For an overview of many technologies I'd look for a tech podcast. They are easier to keep up with than blogs (although a blog is another good choice).

For more in-depth knowledge of a specific technology, you should create a podcast on that subject. You will learn about it faster than you could imagine.

Bill K
+1  A: 

Best working technique for me:

  1. A few webcasts to get a quick overview of what can be done an how
  2. Use it in some way, either on my project or in some sandbox application
  3. Now it is time to get in deep with the technology: books and blogs
Philippe
A: 

I learn best when I have a purpose so starting with a good idea for a test application is best. I will use a good blog post or 2 to get me going then some trial and error! It is nice to go back and refine what I have learned using books, webcasts etc, however there is nothing like learning via actually doing. If I am spoon fed too much it is harder to comprehend.

Jim Petkus
+1  A: 

Unfortunately for me the only way is by practicing in a real world assignment.

I can read a lot of articles, and download the frameworks, compilers, samples etc. etc and it is very helpful, because I know what the technology is all about, but I just don't learn it until I have to use it on my job for a customer.

The hobby projects, just don't work for me, for the requirements are always "too soft" that is, since I set my own requirements, I tend to "require" only what I know. But when it comes to a new customer and they ask something that never crossed my mind, and I have to find out how to do it ( or if it is feasible in first place ) then I can say I've learn something new.

OscarRyz
+2  A: 

I never managed to really learn a new technology just by reading about - the first step was always an idea that I saw somewhere or that came to my mind that I really wanted to see implemented. In the ideal case (for maximum motivation), you find that there is something you want, but it's not out there yet - then you just start to get going (slowly at the beginning ;-) and while trying to accomplish your project learn from the various sources that exist (whether that's books, blogs, articles etc. didn't really matter for me).

ISW
A: 

I'd go with 33% listening/reading, 67% doing.

Read, listen to podcasts etc. until you feel like you have a decent handle on what the technology can do. Then find someone who needs a software widget built, has a flexible timeline and not much money, offer to build it for them at a reduced rate if they'll agree that it's to be built with Technology X. You get to learn the tech in a real world way, they get a solution that's gonna last a while. You'll have a real user with real requirements and you'll be required to build something that works in the real world. Much better than a hobby project or a tutorial. That's how I'm learning Silverlight.

jcollum
A: 

Here's the approach I'm taking now, I think its a good way to become very proficient in a technology:

  1. Read a book and create notes while you read. I personally almost always use the Apress books as my first book, but everyone has different tastes.
  2. Based off of your notes, start using the technology on toy projects, so that you can touch on all of the important topics. If your notes weren't enough to pull you through on these mini projects, they weren't sufficient. Go back and backfill whatever notes you need.
  3. Read another book, with your notes on hand and fill in whatever you missed from the first book.
  4. Start using the technology on a real project.

This seems like a lot, but I think it'll help you get very proficient in a short period of time. Steps 1-3 can be done slowly, whenever you have free time at work. Because you have a (good) set of notes, you can refresh your memory to where you left off.

Giovanni Galbo
+1  A: 

For every piece of technology you want to learn, create a proof of concept of something you want to make out of them.

Example, create a proof of concept for autocomplete using Winforms, or Ajax. Out of Remoting or Webservices technologies, make your own proof of concept of how to communicate with the server without using sql nor low-level tcp/ip plumbing.

Learning how to do(write) things, will give you a real and fast way to learn something. Google and Stackoverflow is your friend, read a lot of books. For LINQ-related stuff, the amount and quality of LINQ questions and answers here is pretty good.

Michael Buen
A: 

I think that the best way is doing some real work that the technology claims to be good at (WPF => Smart Client, ASP .Net => A Web Site).
Also, if you have a running project using a legacy version of the newly technology that you are intending to understand (Windows Client to WPF, ASP to ASP .Net, Flash to Flex), a migration of it would speed up things a lot.
Hope this helps.

Jaime Febres
A: 

I like to start by ready a good book about that particular technology. Sometimes i don't read it cover to cover and just read important sections and tips. Then i make a list about any new interesting fact I've found so far. This makes my starting point. From this point on, I'll continue playing and doing some stuff with that technology and also I'll follow blogs or websites that have related content.

I think the most important part of learning a technology is using it and learning its practices, both best and worst.

O. Askari