As a developer that is often confronted with learning new technologies in relatively short amounts of time (6 months, 1 year, 2 years) should you always start with reading a book about that technology (possibly giving up on some of your spare time) or simply dig in and start writing code picking it up as you go, and only after some time, picking up a book when you already have the grasps of the technology.

In summary, when confronted with new technologies (languages, frameworks, etc) :

a. Start by reading a book about it.

b. Dig in, learn as you go, and when you are comfortable with the technology grab a book to perfect your knowledge.

I'd personally go with a) (and have so far) but I'm pretty much the only one around in my shop doing this, lots of developers chose b), so I'm interested to know what would you chose and why.

+3  A: 

At first I try to understand by myself, by available examples, by online resources, by questionning colleagues.

I only buy books when the technology does not change too quickly and the book is a widely accepted reference.

I stopped buying 'technology' books after about 8 years of being a professional. Most aren't worth keeping.
Pete Kirkham
I agree with Pete that they aren't worth keeping, but *not* that they aren't worth buying and reading. I'm still buying, often used on Amazon, and the selling them if they aren't worth anything as a reference.
+12  A: 

A book allows you to take your learning offline - which I personally find very useful.

A lot will depend on whether the books are good quality or not.

+1, I read coding books while waiting for the movie at the theater to start, while sitting in the passenger seat and while waiting around on campus.
+1, it really depends on the book...
+1 just like it depends on the quality of food. :)
+10  A: 

It depends on how you learn best. I would choose b). I have a hard time learning something when I don't know any context so I usually just dive in, try stuff and use google as a reference. Then after some time I read a book to get a better overview and see if I missed anything obvious. Having experience with a technology makes it easier for me to get what the book is talking about.

I can imagine that if you have the self-discipline to read a book about something you have no experience with then a) is a better way to get started.

+2  A: 

Good content/concepts does matter, not the medium.

+1  A: 

Reading a book is fine, as long as you can convince your boss to give you enough time. But often you are forced to learn as you go, or leave a book halfway and just start coding.

Thats why I always start coding just after completing a couple of tutorials, and refer to books only if stuck with something.

Dev er dev
+2  A: 

I would always go for b.

With new technologies I like to tinker... So I'll look online, find examples, start off small.

Then if there's a specific part of the tech that I want to learn I'll look for more in depth resources / tutorials online again.

I'd probably only then pick up a book if I found online resources lacking, or if it was a nice fundamental reference book that I would go back to many times.

+1  A: 

Both. I'll find whatever I can and often books help and I up-voted @Nick & @FortyRunner. I especially LOLed Nick's quote of Joel.

+2  A: 

I've done a lot of b) in the past and finally found a) to be superior. (Good) Books, paper or digital alike, help you overcome all the usual teething problems quickly and also show you how to do all the important things the right way. I lost so many days trying to X in framework/language/API Y, coding a somewhat working but hacky solution, only to find out later there's a simple API call or a better, canonical way to do it. That's just wasted time and superfluous frustration.

I find that "teething problems" end up teaching me the most and make it easier to remember the solution.
+1  A: 

Books help me get a more complete understanding, so if I want to learn something well and quickly, like a language I intend to keep using, I get a well-reviewed book. (Reading offline helps eliminate distractions for me.)

Googling is generally sufficient for things like tweaking a web server, where I don't need exhaustive knowledge.

I rarely just tinker. Why waste time doing it wrong?

Nathan Long
+2  A: 

If I've got the time or it's a technology I will be using all the time, I try to grok it. Personally, the best way for me to do that, is with a book.

If I've got to fix something today that involves a new technology or I will never use the technology again, I will try to get enough to get it done .. dive in and experiment.

John MacIntyre
+5  A: 

Books are a valuable resource, but both knowledge and practice are two important factors of learning. Whilst it's great to read to know about the fundamentals it can be better to put that knowledge to practice. After all, wasn't there an old saying like

I hear, I forget
I see, I remember
I do, I understand

I tend to read a book to gain knowledge, but I practice in order to understand.

+5  A: 

As online documentation gets better and better (At least for some projects/technologies/languages/techniques), I find myself reading less and less books.

Some standard works like K+R's C Book will always stick around, but their number is small compared to all those which I threw into the recycling bin.

christian studer
+1  A: 

There's certainly nothing wrong with reading a book, but if you tell yourself you have to read a book before you can using new technology, then you force yourself to wait for a book to be published before you can begin. It's even longer if you insist on waiting for a good book. So if you're trying to learn an established technology, and you personally learn best with a book, by all means go ahead. But for truly new technology, you probably won't want to wait that long.

Craig Stuntz
+1  A: 

No, you should not always start with reading a book about the new technology, especially if you have to pick it up very quickly.

Often it is quicker to get a tutorial and start getting your feet wet right away.

That said, it can't hurt to skim a book in addition, but don't just read it from start to end. Read it with certain questions in mind -- questions that came up while you were trying things yourself.

+1  A: 

Depends how new the technology itself is.

If it is an emerging technology then there will probably not be a huge choice of quality books.

If the technology has been around for a while then you'll probably find quite a lot of online examples, tutorials, forums and other chatter which might help as much as a book.

Books have become -less- important to me over the past years...

+1  A: 

It depends on why I'm learning the technology. When I had to learn SQL for an internship I used a book since I needed to become proficient quickly. When I decided I was going to learn Perl to do some quick and dirty scripts I just googled hello world and took it from there. I'm not what I would call good in Perl but I know more then enough to be proficient with it for personal use. If I were going to use Perl in my job on a team with other Perl programmers I would read a book to fill in my knowledge gaps.

+1  A: 

I believe it's best to learn a new technology with some materials such that they get you the essential understanding of the technology. For example, what motivated the founder of technology? how the founder intended the technology to be used? what's the inspiration and rationale behind the design? The materials helpful to understand these important concepts could be the official reference manual, specification or books published by the founder, or some other well written books. It does not necessarily have to be printed books.

As far as I observed, developers who skip this learning process only know how to use the API and make it work. They do not have deep understanding as to what the right way to apply the technology to the problem they are facing. It's partly not their fault because developers are always under immense pressure in term of schedule so they do not have time to learn theoritical aspect.

Metaphorically speaking, using the technology ignoring the theoritical background is like climbing mountain in the mist without map and compass. Theoritical understanding will clear the mist and get you a map and compass for the hike.

My advice is, if you are in a position responsible for designing software architecture or evaluating technologies for the solution, you'll make a better decision with the knowledge from 'good' books. Luckily I have been in such position and I enjoy learning the technology in depth and feel more confident in the decisions I make.

+1  A: 

It dependes on "If I need to learn it".

I usually start with B - I need to solve some problem, so I try to find informations online (for that particular work). When the technology is too new, you usually cannot get any book about it (not even good book, just try to find some book).

But when I really need to understand it, then the book looks necessary.

On the web - we are used to look shortly on the text and go to other page. So often, when I get information from the web, I don't concentrate enough. I want to get it quick, but it's harder keep it in my mind.

+2  A: 

I like to use a mix of the two. I find it really useful to have a book that I can flip through while leaving the code I'm testing with up on screen. Usually I'll get a book and read through it while doing all of the examples and messing around with them. It seems to work well for me, but you should really only be worried about what works best for you.

+1  A: 

I prefer to try a new technology (often a new language or API) perhaps by running through a quick tutorial or a Hello World example before reading a how-to book. This frames my reference so that the book isn't talking about things I have never seen. Then I like to read about the technology and try a harder, more abstract, task (like partially implementing my last project.) I generally don't go all out on such an effort. I do just enough to compare the technology to others I'm familiar with and learn the differences and hopefully the benefits.

Chris Nava
+1  A: 

Usually, this is true: If you don't understand it without a manual, you won't understand it with a manual. (You can replace "understand" with "like", "love", "find it useful")

You will out quickly if some technology is user-unfriendly, complicated and brittle without the help of some book. Since my goal is usually to find a technology which helps me reach some goal, I play a while with it. When I'm certain that it's worth my time, I'll buy a book for the professional details. But if I can't make heads nor tails of it after a day or so, I don't bother with a book.

Aaron Digulla
+1  A: 

Great question!

I used to read books a lot. I thought mostly cover to cover was good. However, there are just too many now and not enough time, unless you're really a speed reader...

I think one has to try to do a little of everything.

--Read/scan the books --Create the "Hello World" apps and tinker with it --Look at intellisense, APIs, etc. --Read helpful content on blogs, dev web sites, etc. --Videos (DNRTV etc.)

I've found the videos pretty helpful in terms of getting a lot of info in a short amount of time, if the interview is good.

+1  A: 

I have found a hybrid approach works best for me. I want a book to take offline in a attempt to grasp the fundamental and architectural concepts. I also want to dig in right away actually writing the code mostly from internet examples to grasp the language/development environment. For me it helps to create a little project to work with. When I was learning asp.net I created a little recipe application so my wife could add and search for her favorite recipies.

Ron Skufca
+5  A: 

I am trying to wean myself off the 'buy a book' trap. Maybe because I've been coding a long time, but when I first started the only way to approach a technology was to buy a book and read it - because there was not online documentation. This remained true in essence well after the arrival of the Internet.

Except nowadays I find that when I want to learn a technology I find I have a tendency to pick up a book that I think I'm going to read and use, but when I get down to coding (and I'm a person who learns new technologies best by trying to tackle a real-life problem - possibly because I've enough experience that I'm rarely totally at sea with anything new) I rarely look at it because I find it easier to Google answers or use online documentation than skim through pages.

Even for factual reference books - generally of the O'Reilly or Developer's Library series - I'm using these less and less. For instance time was that developing a website application I would constantly have a copy of O'Reilly's 'Dynamic HTML' and 'Cascading Stylesheets' open by the keyboard - but no longer -mostly replaced by w3schools.com.

The only exceptions that I can see remaining from this move online are

  1. Some reference manuals where the information is particularly dense and not easily found online in a usable form. The OpenGL red book for instance.
  2. General books about the process of development - Code Complete, Design Patterns etc.
  3. Books on advanced topics where having the information collected together is valuable - and often where the information is not available online. The GPU Gems series, Texture & Modelling, etc.

I most certainly not see an end to the use of books for development work, but I do think the days of the 1000 page monolith on getting to grips with a new technology are probably drawing to a close.

Well, perhaps you are right, maybe the time of 1000 page books is going away, and the time of "the one big book" (the internet), is coming ...
Pop Catalin
+1  A: 

A then B. If you don't have SOME sort of grounding in your project then you won't get anywhere. OTOH, you can read a book for years, but if you don't dig in and use the (little) knowledge you have learned from A in producing something real, then you won't achieve progress to any worthwhile extent.

+1  A: 

I would say always go to the new technology source and read their official documents then decide on if a book is necessary or no;t.


A good book for the essential background and base information is invaluable (tip bits about why certain things are implemented in a certain way etc etc ) but when finally come to use the technology the internet and the real world examples available normally take over as primary source of info.


I wouldn't mind having a 1000 page book in a Kindle format. But a lot of tech books are doing away with the concepts + excruciating detail for least used functions. All I need is a quick Hello World, and a Reference book. I'm more than willing to pay for a digital book where I could search for a "How do I?".