For anyone using visual basic for windows .net programming, by far my favorite book is:
Visual Basic 2005: The Language
Jeff, I notice on your snapshot of your bookshelf that you have all four of Tufteās self published books. Iām willing to be that a large percentage of your audience (read āprogrammersā) donāt know what Tufte is all about. Iād love to see a note on why Tufte is an absolute must read for all programmers (especially if contemplating any sort of computer/human interface).
Thanks for the blog. I look forward to reading it everytime a new article (?) appears.
ā¦and one more thing for Darenā¦
I have read Normanās TDoET (The Design of Everyday Things, originally published under the name The Psychology of Everyday Things until Mr. Norman realized the bookstores were improperly shelving it with the Psych books). A great book and another must read, if you ask me.
Thank you very much for this post.
I set out looking for some great literature on the WHY as opposed to the āDo this and that and Boom!ā This post came at just the perfect time.
Lake
I have been programming for over 25 years now. I remember back in the early days that the only way you could learn anything was from books. We didnāt have the internet to go to and lookup how to perform certain functions, etc. Luckily that habit has stuck with me over the years and I now have a rather decent sized library (including a couple of old machine language books for the Commodore 64 and 1 book for the Timex Sinclair). Maybe one day Iāll open a museum and make my years of being a pack-rat pay off.
I have yet to meet a good programming book. I own a dozen or so, and I have found some good references now and then, but aside from the introductory books Iāve not found one that can teach anything.
Nowadays there is so much online as far as reference material for various languages that it seems almost silly to buy a paper version which will be outdated in a few months anyway.
I read a great deal, but I have never seen a programming book I find useful outside of reminding myself of syntax or features Iāve forgotten the proper name of.
When I do read books its for: beefing up for certifications, tired of reading off a screen, very brand new programming concept languages (like linq and WCF), or when I donāt have Internet access.
I also think you forgot to mention one good reason why most programmers donāt buy books. The stale fish concept. Most tech books canāt update themselves and who wants to date themself by having books on languages that are extinct.
Iām reminded of a good analogy:
Reading on a monitor is like reading the small text on a light bulb while its on.
It hurts my eyes and gives me a nasty headache to read 100ās of pages on a computer screen. Books are no problem though, and in fact itās been proven that people are typically able to read books faster than text on a screen while maintaining the same level of comprehension.
This is why books will never go away - at least not until we can create some sort of ultra-crisp elecronic print that doesnāt require a backlight.
???
I am really not sure how it is possible to gain absolute knowledge without reading booksā¦
@Jan Willem de Birk
PHP gets no respect because itās simple and nobody gets paid big bucks to setup a web site on a LAMP server. No, see, corporate web sites require an application server. And a web server. And an Oracle server. We need tiers! Each tier needs its own server! Ok, so PHP can do tiers, but it all runs well on a single server and you only need to separate when you get big. I thought you wanted a real enterprise web application? Enterprise applications all have many servers.
Scalability. Donāt forget about that. Ok, so you only sell a dozen widgets a day on your site now, but what if youāre the next Amazon.com? You can scale your tiers and sell ten million widgets a day! First weāll scale the data tier because the advanced connection pooling doesnāt actually help. Two more in a cluster ought to do it. Then weāll scale the application tier because the application server provides advanced session and failover management. That management adds some overhead, so weāll get two more servers instead of just one more. Alright now this cool template abstraction we used for the web front-end tier is pretty slow so weāll add another server there, too.
Man, itās a good thing we didnāt choose PHP for this because PHP doesnāt have an application server to manage all this scaling. Some people talk of the āshare nothingā approach to scaling, but Iāve never done that and I think itās voodoo.
your pretty much right, I have been coding for 10 years and I learned basically from trial and error(oringally went through all the intellsense options till I figured it out ) and the internets.
Another thing Iād like to bring up:
I wish I didnāt have to work, so that I could spend serious time reading tech books.
On week days, after a long hard day, the last thing I want to do is more tech stuff at home. I do some reading and programming side projects on weekends though - but if thatās all I have it takes a year to do anything that I otherwise could easily have finished during a summer break (if I was still in college).
āThe Mythical Man Monthā should be on the top list, why you havenāt included it?
Learning principles from a book is good. But the best way to learn how to be a good programmer is to maintain and make directed changes (user specified requests) to your own code. After a few years maintaining your own code you learn how to make it easier to change. After 30+ years of programming I am still learning how to make code easier for the programmer coming behind me to maintain it.
@mistoneā¦ you got it understood.
@jeffā¦ you ever live in cary,nc?
@Dave
I work in a company where theyāve build an entire Enterprise server out of PHP. I help develop on it. The company sells their software (not only the server in PHP, but also some C++ stuff) to everyone who needs a media solution (publishers, newspapers, etc). And believe me; it works. I bet that 8 out of 10 papers/books/magazines you read (either online or printed) are made with that softwareā¦
So in my opinion; everything is possible with PHP. And it sells, once proven
Hey Jeff, how about some comment modding or maybe even paging?
Itās getting a little crazy here, 90+ pages of comments for a single blog.
I do agree with this one, I think the big difference between picking up a book and just trolling the internet is that a good book will provide information you can use but may not have looked for.
For example, there is a guy here who became our new DBA. At first he made some improvements just by regularly reading a few blogs and picking up some tidbits, but it wasnāt until he read a few good Oracle books cover to cover that he really took it to the next level.
Googling for code samples is typically reactionary. Youāre looking for a solution to your problem, and youāll only find results that fit into your search criteria. There may be some great solutions that you havenāt even discovered because they donāt fit what youāre looking for in that narrow list.
A startling number of people commenting here seem to have accepted the fantasy that knowing how to look things up is as good as knowing those thing.
This is a dangerous fantasy because it severely limits how you think about problems. If you represent all your knowledge as a tree, the stuff you google for can only form the leafs.
As an example, if I need to change how my drives on my Linux machine are mounted Iāll look up the syntax I need in āman fstabā. Easy. Because I already know the exact piece of knowledge Iām looking for, and thereās no appreciable sub-knowledge. (The second item on a line is the mount point. I canāt learn that in any more depth.)
If I didnāt ALREADY know the name of the file system table, it would take a few minutes of awkward searching to find it, but Iād still be close to the knowledge I need.
If I didnāt ALREADY know that there WAS a file system table I would have to start my research by first researching the mount command. Not only are we increasing my research time for a simple task, but Already weāre pulling back to the point where weāre running the risk that it wouldnāt even occur to me that the data I needed to change was stored in a human-editable file somewhere.
If I didnāt ALREADY know that I had more one device in my filesystem that could be mounted and unmounted, etc, then my problem (which can be solved with a one-line change in the fstab file) could seem insurmountable. I would not even occur to me that the correct solution might exist so I couldnāt search for it. I would probably wind up thinking up some convoluted solution involving symlinks or something. (Assuming I was aware of their existence.)
This sort of coding-by-google approach has filled the archives of thedailyWTF.com. Are the people who write the code featured in TheDailyWTF some sort of knuckle-dragging low-IQ cavemen? I suppose some might be, but most of them just lack an understanding of their field, and depend far too heavily on just-in-time googling to figure out whatever crazy thing is in their heads because they DONāT KNOW THE CORRECT THING TO LOOK UP.
Thanks for the article. Itās good. I have blogged about it, adding my own comments, here.
http://ploneglenn.blogspot.com/2008/04/why-johnny-coder-doesnt-read.html
Maybe you can make a āBest Buy Guideā section or a āMust Readā section where other programmers can vote for their favorite books?