General IT Books?
Torulf would like to start an ongoing discussion on books that anyone in the IT field would benefit in having in their library: "Here's a topic that might generate some interesting discussions. I'm a student trying to get general knowledge of the IT business. The question here is about what is regarded 'basic knowledge' and where to find it. As we all know (I hope), a lot of knowledge can really only be learned through experience. In many cases, however, a read through the theory will save you a lot of time. As books are also easier to look up than experience, below is a suggestion of a reading list that might give a decent general knowledge in the field. Please fill out the gaps with what you think is required
knowledge for anyone working in the industry. Mostly this is about a general overview of the
different areas of the IT industry, but if you have suggestions of good material for becoming an expert in some particular field, by all means, share your knowledge." Torulf has compiled a fairly long list of books, below, however your own suggestions are always welcome.
For any non-trivial task, it is suggested that you design before you code. User Interfaces:
A lot of programmers are more than clueless in this area. These at least won't hurt: Graphics:
Some general knowledge about graphics. Business/Management:
Here's something about management and financing. I don't really know about a good reference for marketing applied to the IT industry. This is the area where the average geek is even more ignorant than concerning UI. Security:
Alright, this list should be a lot longer. Misc.
And last some stuff that didn't fit in any of the categories above.
"To start off the discussion, here are a few suggestions as to likely candidates. The
books are linked to Amazon since they can provide a fairly quick and complete description of the books online.
Programming:
Learning a few languages certainly won't hurt. Here are some suggestions:
- The C programming language
- The C++ programming language
- Programming Perl
- Programming Python
- A Book about Java
- A Book on SQL
- A Book about Functional languages (LISP, ML, etc.)
For any non-trivial task, it is suggested that you design before you code. User Interfaces:
A lot of programmers are more than clueless in this area. These at least won't hurt: Graphics:
Some general knowledge about graphics. Business/Management:
Here's something about management and financing. I don't really know about a good reference for marketing applied to the IT industry. This is the area where the average geek is even more ignorant than concerning UI. Security:
Alright, this list should be a lot longer. Misc.
And last some stuff that didn't fit in any of the categories above.
- Modern Operating Systems
- Computer Networks
- A few operating systems
- A book about markup languages, ie HTML, XML, DHTML, etc
- A book about Algorithms and Data Structures in general
- At least some basic knowledge about Hardware
- Wireless systems seem to be growing. It might pay off to learn something about Symbian, J2ME etc."
Now that's a start to a comprehensive IT Library if I've ever seen one. How do you all feel about this list (if not the specific selections, then at least the material being covered)? If you were to make changes or additions, what would they be?
Add Michael Abrash's Graphics Programming Black Book. It's not really for true beginners and much of the techniques are probably out of date in today's SDK-driven development world, but it's a great book regardless, and has a lot of theory that's applicable in non-graphics areas (optimization, mostly).
--------
Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...
Knuth's "The Art of Computer Programming" is an absolute essential. Read it. Then read it again. Do what he says.
This book gives the basic foundation of how to program instead of teaching you how to operate the latest GUI or how to generate the latest buzz-language. It should not be optional for any computer science curriculum.
It was reviewed on Slashdot a few months back. I haven't had time to get very far in it, but so far it's been an excellent book about concepts rather than a technical howto. I highly recommend it.
These are the guide to proper systems administration.
But seriously, I cannot immagine anyone learning the "basics" better than fiddling around with things, and learning how they work (by breaking them more likely than not).
I wholeheartedly recommend Newton's Telecommunications Dictionary, its not exactly IT but has plenty of crossover with most IT stuff. Its a great reference that has quite a bit of info and background to almost all of the telecom industry jargon.
Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
For the Java book, I recommend Thinking in Java
She came sliding down the alleyway like butter dripping off of a hot biscuit.
Let me paraphrase. "Hello I'm a student looking to backpack a shitload of amazon affiliate links onto some story that I can dupe a slashdot editor into posting. That way I get a potential 500k people making me some beer money at amazon"
They who would give up an essential liberty for temporary security, deserve neither liberty nor security
You should definitely add a book on a non-strict language like Haskell. beta-contraction rocks!
There are reasons why democracy does not work nearly as well as capitalism.
-- David D. Friedman
those are mostly ALL technician books... you need project planning and project management books... group dynamics.. you need to understand IT involved a lot of people communicating with each other... ITs are not always engineers who couldn't get an engineering job... they're really just IT
and
The Practice of System and Network Administration
Time flies like an arrow, fruit flies like a banana.
Debunking the Myth of a Desperate Software Labor Shortage by Dr. Norman Matloff.
If you still want to get into IT after reading that (warning: it's very long), then you can continue with the programming courses.
Nathan
Seems like you would want at least a few books that are more, well, abstract / philosophical? I would recommend Godel, Escher, Bach or Metamagical Themas both by Hofstadter. Man can't live by tech alone.
Best Windows Freeware
How about: "Numerical Analysis" Burden and Faires "Computational Geometry" deBerg, et. al. "Matrix Computations" Golub, van Loan
word.
Having a nice library is good, but reading books is better. Do you know how long it takes to fully assimilate one of these books? At least weeks for some of them. So you don't really have time to understand them (unless you're 1) employed, 2) rich).
My point is: pick something and get good at it. As you move to more complex projects, everything will come together and you will avoid the "why in hell did I learned that" feeling. Heck , my last project uses J2EE, PostgreSQL, a geographical information system, a graphic toolkit, some shells scripts and some C programs, plus the obvious OO design.
Nobox: Only simple products.
Computer Books For A Library?
TCP/IP Illustrated by Stevens. At least volme 1, if not the next two.
I like lots of people. That doesn't mean I go carting them around the galaxy with me. --Dr. Who
all of the orielly books
may be found here:
http://members.iinet.net.au/~bofh/
Knuth: The Art of Computer Programming
... read [Knuth's] The Art of Computer Programming ... You should definitely send me a resume if you can read the whole thing."
Got to love the quote from Bill Gates(!) on the cover of my copy:
"If you think you're a real good programmer
For languages, you want to be exposed to the variety of languages. Not just C and C++, not just OOP. Look at Forth. Look at an assembly language (perferably two, to understand the variety of hardware).
Throw Yourdon's Death March in for good measure. It's a great book for those who don't want to get sucked into a dead-end project.
___
Semper ubi sub ubi
You need to add the Hardware Bible onto this list. It covers all aspects of anything to do with computers on the Hardware Level. It will give you not only the background and implementation, but also a view into what is available. Excellent resource IMHO.
You keep going until you die..."Me".
The Art of Computer Programming
Indispensable...
Winton
Hmmm, That wasn't an April Fool's story after all. I guess blatent referrer links in a story to a vendor we are all supposedly boycotting isn't advertisement?
I know a lot of people whine about Slashdot going downhill, but this really takes the cake.
I also noticed that Sourceforge is attaching ads for ThinkGeek onto all mailing list messages for projects housed at Sourceforge. Is LNUX in that much trouble that you all have to stoop this low?
I've had enough abrasive sigs. Kittens are cute and fuzzy.
...and skill of none." You need to pick an area of concentration. Something you want to DO. Be good at ONE or so things and be very good at them, gradually the others will follow. Spending all your time reading books will not make you a good IT worker. On the job training/working in the real world will.
For example, you can buy all the books on bodybuilding you want, covering every exercise and method in the bodybuilding industry. But that won't make you strong... or a bodybuilder. But getting off your ass and applying what you know will.
Sure at first you'll be a novice (or weak body builder) but as time goes on you'll be able to pick up more skills, and have results to keep you going.
A good library is one thing, but getting your ass in gear is more important.
Start a zoo. BIND, Sendmail, perl, python, if it's got a black and white critter on it, buy it and read it. www.fatbrain.com (now a Barnes and Noble site), has a good selection to get you started. Pull out the credit card, drink a six-pack, and see if your card really does have a limit.
I would have a section on relational database management systems and some good general/specific books to go w/each.
Depending on interest you could lean towards administration/development/programming/etc.
.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
Straight from the horses mouth:
Sun's The Java Tutorial is good.
Walks you through some OO concepts as well which can be a pain coming from a procedural background
So much to do, so little bandwidth.
--
Try Mozilla
The Peter Principle
:-)
The perfect introduction to understanding IT management
Nothing better than the internet. My favorite is devshed. They have great forums if you're looking for help in just about any IT topic. There is also PHP documentation and Mysql documentation.
In college, really poor, need a flatscreen.
The Camel Book.
Do you mind, your karma has just run over my dogma.
Where are Donald Knuth's books? You should have all three volumes: "The Art of Computer Programming" if you are serouse about writting code. They are the 'blue-print' of programming.
Karma stuck at 50? Add 2-5 inches.. err.. 2-5x Karmas Count to your pen1es.. err.. Karma all naturally and private
The Protocols (TCP/IP Illustrated, Volume 1) - by W. Richard Stevens
TCP/IP Network Administration - by Craig Hunt
Interconnections: Bridges, Routers, Switches, and Internetworking Protocols (2nd Edition) - by Radia Perlman
Computer Networks - by Andrew S. Tanenbaum
I liked this one By Po Bronson
As books are also easier to look up than experience....
You mean before you get it (experience) or after you start losing your memory?
Between those points experience is more portable than books.
--
As a matter of fact, I am a lawyer. But I play an actor on TV.
If you don't unix regularly a nice intro book on shell scripting followed by a reference book on your favorite shell will work.
And if you plan on interacting with management I highly recommend Pressman's "Software Engineering: A Practicioners Approach".
In the future, I would want to not be isolated from my friends in the Space Station.
Every time I see that acronym used, it's in a context far and away from what I would call traditional software engineering. I think of it as somewhere between web programming and corporate database programmer. As such, it seems that the recommended books are lean too far away from what the typical IT worker needs to know.
Or the _Unix Administration Handbook_ by the same authors. I read it straight through, and enjoyed it.
Although it is a Unix book, because so many of the issues of modern IT (and especially networked systems) have already been addressed under Unix, even (particularly) an NT admin would benefit. I was referring someone to it for Serial communications information yesterday.
Newton's Telecommunications Dictionary, as mentioned by another poster is great too.
_TCP/IP Illustrated_ W. Richard Stevens
_Interconnections_ 2nd Ed. Radia Perlman
Assembly is the reverse of disassembly.
This is how Galadriel really should have looked like when she was holding her ring to the stars:
Ring of Galadriel
This is from memory, so it's a little rough.
:-)
Unix Books
----------
*The Unix Programming Environment - Ker./Pike (Great book on the Tao of Unix)
*The Design of the Unix Operating System - ? (Good book on design and internals)
*The Design of the 4.4BSD Operating System - (The book the BSD folks rave about)
Hardware Books
--------------
*Upgrading and Repairing PCs - Scott Mueler (While kinda Windows centric, the PC Hardware bible)
Fun
---
*Mr. Bunny books - Some Guy III (Funny books make fun of Java and ActiveX)
*Programming Linux Games - Jon Hall (Good intro to Linux gaming, another fav)
Security - My specialty
--------
*Hackers Beware - a great book of stories from the trenches
*Hacking Exposed series - Great, up-to-date references on many platforms.
*Security Engeneering - The best book on comprehensive security design
*Know Your Enemy - The Honeynet Project (Great book on real hacking)
*Computer Security Basics (outdated, but still relivent. Not basic, though, by any measure)
*Applied Cryptography - Bruce Schiener (_The_ book about crypto)
*Secrets and Lies - Bruce Schiener (A management type book, but good)
Programming
-----------
*{Beginning, Professional} Linux Programming - Stones & Neal Somebody, et. al. (A good Wrox book that covers Perl, PHP, PostgreSQL, MySQL, C, shell programming, etc.)
*The O'Reilly Perl Library - Written by the guys that write and maintain Perl. Nothing short of spectacular. Everything from Perl regex to cgi to bioinformatics to databases is covered.
*Applied Cryptography - Bruce Schiener (_The_ book about crypto)
*ANSI Standard Lisp - Haven't read it yet, but it looked good.
*The K&R book, ANSI and Classic - 'nuff said.
*The O'Reilly SQL book and database-specific books - Cover all the DBA knowledge anybody needs
Non-Technical
-------------
*Secrets and Lies - Bruce Schiener (A management type book, but good)
*C for Dummies - Gookin (See section placement)
*The Mr. Bunny Startup Game
Sysadmin
--------
*The Complete FreeBSD - A great fBSD book
*Linux: The Complete Reference - Another great sysadmin books
*The purple Unix book with the animals on the cover - The Sysadmin bible, if I could only remember the name
If someone could fill in the name and author holes, you'll be all set.
My email is real.
The best primer for Java (and basic aspects of OO design) I've seen is Ivor Horton's Beginning Java 2, from Wrox. This book surpasses any other beginner book on the subject by leaps and bounds. Based on my informal tutoring of about 5 students in the language, it can't be beat. I would also recommend Ivor's books for Visual C++, simply based on his performance here (I haven't read them).
amazon listing
Anything by W. Richard Stevens is well worth having. The TCP/IP Illustrated series and the Unix Network Programming are both excellent, though the new editions of UNP are unfinished, since he died before UNP3 was published (and apparently, finished). Advanced Programming in the Unix Environment is an excellent in-depth look at Unix system calls.
Experience is the first essential, so like others, I say: Hack! (In the original sense, not the crack sense).
Beyond that, I've found:
The Art of Computer Programming, Knuth
Internetworking with TCP/IP, Comer (3 vols.)
Operating Systems: Design and Implementation, Tannenbaum
these are essentials. Every other dog-eared book on my shelf is product or language specific, and thus, I would say, non-essential.
You missed what I consider the most important book. Actually, it's a set of three books. Knuth's The Art of Computer Programming. I understand there's a fourth book in the works too, but I'm not sure. This piece of work is more important to IT (or whatever marketbabble it's called today) than any book on C or C++ or UML or whatever. Those are all a bunch of pesky details. Knuth's work is one of very few authoritative sources on anything related to the processing of information. I'd call it the Computer Programming Canon, and I think it should be required reading, even if you don't plan on doing any programming yourself. If you're in IT, you should understand the concepts.
I would recommend "Learning Python" over "Programming Python" for anyone with little or no experience of the language. I have both, and while Programming Python is an excellent book it is not at all suitable for beginners. Unlike "Programming Perl" (which is a classic text book no matter what level you are) "Programming Python" is more of a cook book - it discusses several more complex areas of Python in depth such as GUI coding and network / web server stuff but does not have much of use to language newbies. "Learning Python" on the other hand covers the whole basic language and does it in a very complete way - it's probably the best learn-a-language book in my collection.
by Bruce Schneier
A must for every PHB, this book gives a good overview of network security from a systems design standpoint.
The ultimate compliment to his other book about encryption algorithms. I find "Secrets and Lies" to be an ejoyable read. Not much of a reference, though, so give it to your PHB when you are finished reading it.
Oh yeah, I almost for the classic Unix text: "The Magic Garden Explained"
I like lots of people. That doesn't mean I go carting them around the galaxy with me. --Dr. Who
That ought to be a top priority. Once they find out you are in IT, they will run. Fast.
Get "Structured Computer Organization" by A. Tanenbaum. It's a really good beginners book on how computers ACTUALLY work. No fancy stuff in it, just plain old basic knowledge of how it actually works, which is really necessary to truly understand what is going on. And some good book on how compilers really work - that way, you can far better grasp the reasons for lots of decisions made in the design of various compilers and programming languages. I find that I apply that knowledge pretty much *all the time*.
Anyway, just my DKK 0.17 worth...
Black holes are where God divided by zero
Oh! Pascal is the best text I've ever seen on programming. The language may not be that useful anymore, but the concepts are universal. I learned all about recursion, data structures, pointers, etc. from that book. The descriptions are engaging and well illustrated. It really is a good read for any programmer.
t'nera semordnilap
It explains the broad steps each software project should have, and applies the lessons taught to a (somewhat trival) sample application.
There is little C++/Java code in the book, and for the topic, there shouldn't be. Software engineering is about overall design and executing that design towards a finished project. This is often overlooked in many projects today. For a while, in the 70's and 80's, companies poured money into their software engineering process, but recently they realized that publishing reports on how they cut debugging time by 66% might tell their competitors how to do it too.
I think this (or any other software engineering book worth its weight, such as the Unified Software Development Process, the preeminent book on UML by the creators of UML) is a must have in any IT person's bookshelf, manager or not.
Lastly, note that the 6th edition of this book is going to print soon and should be available in a few months. The new edition has been highly reworked to include concepts from the Unified Software Development Process and more on UML and how to use it in software engineering.
When heading over to the local book store there is a huge section of computer related books.
Lets see... I can find a gizillion "xxx for idots" and a gizillion "yyy for dummies".
I can find whole sections on how to step my way through system administration by just following the following steps (trust us, you don't really need to know *what* that command is doing, but it has always been done that way).
There are books out there they detail how to write "Hello World" in every language, and maybe how to read a file and add up a couple of columns. Oh... if you need to sort an array here just copy these lines right here (trust us, you don't really need to know *what* that block of code is doing, but it has always been done that way).
What is missing are the books that get down to the nitty-gritty of what is going on under the covers.
We need more books like Knuth's "Art of Computer Programming", "Introduction to Algorithms", the "Dragon book" for compilers. Yes... they can be dry, and technical, but the current stock out there caters to the beginner (programmer, sysadmin, computer user) and towards someone who needs to open the hood up and get their hands dirty.
Presumably one of the reasons you'd be building this library and gaining this knowledge is to get a job. One book that I think is especially helpful for that is Programming Interviews Exposed . Most of the book is made up of step by step examples of how to solve the kinds of problems that are presented in interviews. This is something you might not get from the other books that have been mentioned, because interview problems tend to be significantly different from those that you would encounter in classes or real programming.
Of course, I may be a little biased, since I'm one of the authors, but some other people seem to have found it pretty useful, too, so hopefully you'll consider it worth a look.
---
Can you get modded down "Self Promotion"?
Could the editors please either remove the referrer-id from the Amazon links, or maybe even insert a referrer-id for a good cause? This does reek of somebody trying to get beer money via Slashdot.
It is an interesting thread, and I replied seperately.
Assembly is the reverse of disassembly.
seems to have done OK in the IT business and wrote a nice book about it.
the road ahead
IANAL, but imagine a beowulf cluster of in Soviet Russia all your belong are base to us welcoming the new SCO overlords.
I would add the IS Survival Guide (can't remember the author). A little dated in process and methodology, but the insights into the industry are dead on the money.
The corporate-speak dictionary is worth the price alone.
I have a second sig, I call it sig#2.
I wholeheartedly agree!
I'm fairly new to the SysAdmin game (hey, you have to start somewhere) managing a network of 35 PC's and supporting one Linux and one Netware 5 server. While I have good knowledge of our desktop OS's and the server OS's - the practical know-how in this book is invaluable.
Essentially, this book offers excellent guidance and advice on how to perform your job as well as possible, maximising efficiency, the satisfaction of your users, and your own contentment with your position.
I think this book should be essential reading for any new sysadmin, and seasoned sysadmins can glean something from this as well.
To get a basic but solid background in data networks, I would recommend Tanenbaum's classic Computer Networks. A bit out of date, but unbeatable to have a clear set of networking concepts.
I highly recommend Introduction to Algorithms 2nd ed. by Cormen et al.
Also, to become an expert in the field of hardware you have to have read "Computer Architecture: a Quantatative Approach" at least once.
"Rapid Development", should have been called "preventing project management fsck ups for dummies".
Dave
I write a blog now, you should be afraid.
I have a list of titles I think people should have if they do Web Development, especially JSP/Servlet programming.
Check out http://www.starvingmind.net/tech.php
I am an amazon affilate. I'm love business and tech books, and have quite a collection of both. I'm am trying to build up a site that will make enough in sales on a regular basis to pay for site hosting on a real provider...right now it's on my cable modem.
A little project of mine. I plan to expand it into a much more complete site as time goes on. Kinda the slashdot for tech and business books. Has a long way to go, it's only been up three weeks, so don't be to hard on my lack of features and content yet.
If anyone has any suggestions, I'd be happy to add them.
-Pete
Soccer Goal Plans
- Visual Basic Programmer's Guide to the Win32API
by Dan Appleman is indispensible as it provides a valuable reference to the Windows API available to the VB programmer. It is strictly reference, with no tutorials, etc... I use this book pretty much at least once a day.Expert C Programming by Peter van der Linden. Not just how or why, but how it got to be that way. Not only is it deep and insightful, but it is great bathroom reading and has a picture of an ugly fish on the cover.
Building Application Frameworks : Object-Oriented Foundations of Framework Design by Mohamed Fayad (Editor), Douglas C. Schmidt (Editor). Discusses all of the important application frameworks libraries. The library is not the same as the language, but the structure of the library impacts your design. If you think CWindow is part of the C++ language or that Thread is a part of the Java language or even that printf is part of the C language, then you should read this book.
Computers as Theatre, Brenda Laurel, 1993. Real people use your software. How do they perceive it? Software, to a large extent, is about shaping perceptions. Good software maps well to the user's understanding of the problem it was meant to solve.
http://www.nerdbooks.com/item.html?id=0201702711&n erdsid=0a03e8c5f324d8806562917930f870dd
Best book ever for new and intermidate admins
Seriously, you are all sitting in front of the most massive library ever created on earth. Why people insist on paying an arm and a leg for these dead tree compendiums is beyond me. Nont to detract from the authors, or their content (read: Knuth), but anything I ever want to know I can find using google faster than it would take me to even reach towards the bookshelf. Rather than spend a grand or so amassing this library of books, how about spending an hour of your time amassing a usefull bookmarks collection.
Lame-o dude.
That was such a piss-poor effort, you ought to go back to your MarCom project.
Are we talking about a career in Support or a career in programming / development.
I only ask as i think it's a relevant point - some of the subjects and books you have posted are irrelevant to someone supporting Servers for example whilst the sort of books desktop support staff would need most are others - for example i have worked 10 years in IT support in roles ranging from SYS admin to IT manager and have never even picked up a book on software design or user interfaces...
If you support systems for a living things like hardwareand operating systems are more valuable than books on code, so maybe what we need is a definitive list of books by proffesiona class - IE programmer, support operator, web developer etc.
Still a damn good idea and a got me thinking.
I refuse to argue with Anonymous Cowards - if you want a discussion get an account....
Alice in Wonderland by Lewis Carroll
I see you have a book on SQL, but no more on data modelling and concepts. A good grounding in subjects such as proper table structures, data integrity, indexes, views stored procs etc. (and their various advantages and disadvantages) is a MUST. I can't tell you how frustrating it is to work with someone without that basic knowledge...
Learning, and especially using, the x86 assembly language gave me an amazingly new level of understanding of everything computers. This shouldn't stop with the x86 architechure. The simple act of repeatedly thinking in terms of bits and bytes affecting the state of the processor and how that allows everything else to happen has consitently given me more clarity while learning anything new involving computers.
While the most practical uses for this are in systems programming and design I have since thought this is _most_ important in the higher level activities. I believe the old saying is something along the lines of "To know where you are going, you need to know where you have been".
A real-world example of this happened just a few weeks ago, to a fellow in my local LUG. He had problems understanding buffer overflows, as they were taught to him in a network security course. I learned this on my own with much better clarity becauase I understood where everything started. I knew where the problem started and where it ended. He knew only where it ended. Because he did not understand where it started, he had a much cloudier idea of what came between these two points.
I think this was a major part of the section of the A+ certification offered by CompTIA+ which dealt with PC hardware. There are similar certifications, and all seem to have slightly missed their mark. In order to remain unbias and "fair" the only specific questions they ask are in relation to IRQs and similar numbers such as IO ports. This is supposed to show that you understand how they work. Unfortunately they don't.
As weird as it may seem, a certification in SPARC assembly language would be just as useful, if not more, than the A+ certification is; the goal being to show a thorough understanding of how the hardware works.
Oh you fuktards decided to moderate me off-topic?
YOU CAN"T HANDLE THE TRUTH!!!
College pukes.
At least one Dilbert compendium. You may not think it is essential at first, but you *will* eventually seek Dilbert out in an attempt to come to grips with your suffering.
People don't always associate compromise and complacency with business goals, as long as you're not losing sight of your values and recogize the greater good, then I think having a little of both will cut your levels of stress immensely.
Slashdot had a review a while back of The Practice of System and Network Administration This is a really wonderful book about system administration methodoligies and best practices. It stays completely away from the technical aspects of administration, and instead focuses on the logical and organizational aspects. This should be required reading for all SAs. Many will think it's pretty basic, but even experienced SAs will pick up a nugget or two of information, and it's a great introduction to the career for newbies.
General It took the book industry by storm when, just after retiring from the Army, he unveiled the classical gay porn trilogy "It licks", "It sucks" and "It fucks".
Those were followed by a row of minor works, the most important being "It is big" and "It is gorgeous". His last novel was published just after his dead. "It comes" finishes the saga started in the first trilogy and is considered today It's "seminal" book.
= programs.
Wirth, IIRC.
> A book about Algorithms and Data Structures in general
Other than the business-oriented stuff, this is probably the most important pair of items on the list, not something to be lumped together with the odds-and-ends at the bottom.
This is the stuff that takes programmers from an intuitive approach to the extremes of well-informed effectiveness.
Also, it's not specific to any particular language, OS, or other technology that will be out of the limelight before you finish reading your booklist.
Sheesh, evil *and* a jerk. -- Jade
Let's turn this topic around a bit and collect links to free books that can be found on the net. My favourites are:
- Dive Into Python - an excellent Python book aimed at experienced programmers
- Thinking in Java - concentrates on OOP principles. Check out Thinking in Python/C++/C# on the same site
- Secure Programming for Linux and Unix HOWTO - calls itself a HOWTO but it's practically a book
- Linux From Scratch - build your own linux distribution
There have to be more out there - post links below.I'm not suggestion that the poster of the parent thread poster was offended, but a few on the board seem to have been.
Best Windows Freeware
The book Programming Pearls by Jon Bently is an excellent book on programming practices, interesting to read, not too heavy.
-Peace
Dave
Free as in "the Truth shall set you..."
The Hacker Ethic and the Spirit of the Information Age.
The first 2/3 is mandatory reading, while the end is bit lofty. If you're in a hurry even the prologue (by Linus) is useful enough, covering the book's essence in a few pages.
"There is no substitute for thinking" - Bjarne Stroustrup
Let us know how much money you're going to make through us?
Your current list focuses a great deal on programming. There are other facets to the IT industry. Network and system configuration, maintenance and management are all parts of the business. Also, there should be some mention of project or people management, as the IT business is extremely project-oriented. I don't have any books to add to these new sections as I'm still looking for a set I like.
Hi,
If Martin Fowler's Refactoring is not on your list, it should be added.
This book is changing the way people write code, and is up there with Knuth's books, Kernighan and Ritchie, and Design Patterns in terms of influence over software development.
Don't forget about Peopleware by Demarco & Lister.
I'd suggest _Crossing the Chasm_, which explains why so many magnificent products disappear after hitting the early adopters (and what to do about it).
But let's face it, if you want a general book to take the place of practical experience in the IT field, pick up one of the Dilbert collections.
Please be aware that the only point of this "article" is to make a few bucks for some folks that have had their paper net-worth go from severl million dollars to nothing as VA stock goes down the toilet.
--
Ask the Ya-Hoot Oracle Anything!
Compliers by Aho, Sethi & Ullman "The Dragon Book"
Information Rules by Shaprio & Varian, an IP/biz book
Learn some real hardware:
The Art of Electronics by Horowitz & Hill
Something about VHDL or Verilog
Also, get a free subscription to EE times
Well, here's what I have (and only that):
Knowing a third of what is just those 4 books will make you very knowledgeable. Knowing all what is in them will make you a very valuable expert in IT/CS.
The best book out there on understanding how to make IT teams work well is DeMarco & Lister's "Peopleware." It's a great read and full of advice on how to effectively manage an unruly bunch like us. Going through it, I recognized their suggestions as the traits of the best managers I've had.
I'm ancient. If you want to catch up with my IT knowledge you better start reading these books.
IANAL, but imagine a beowulf cluster of in Soviet Russia all your belong are base to us welcoming the new SCO overlords.
Funny how even though people here seem to be against Amazon.com, they almost always link to their site when supplying links about books and such...
--
http://www.aikiweb.com - AikiWeb Aikido Information
If you're looking at software engineering as entire practice, I *strongly* recommend this book. Covers quite a lot and a lot of great points.
-Bill
SlashSig Karma: Excellent (mostly affected by moderatio
UNIX programming
"UNIX Network Programming" Vols 1 & 2 by Richard Stevens
Compilers
"Compilers: Principles, Techniques and Tools", by Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman (AKA the Dragon book)
Help find a cure for cancer!
(but you still need your vendor's documentation, because no one really implements standard sql correctly.)
There aint no pancake so thin it doesn't have two sides.
I like using these -
man(1)
K&R on C
Strastroup on C++
Larry Wall on perl
Donald Knuth on art
javadoc(1) on java
emacs(1)
I think it's valuable to do reading in things other than technical manuals to get a handle on the forces that shape and are shaped by the technology that IT professionals help shape. I know I'm playing fast and loose with the context of the quote I put above, but I really think that computer professionals benefit a lot by reading about how the law and technology influence each other (and how one sometimes outpaces the other and the ramifications that can have).
To that end, I'll recommend anything written by Lawrence Lessig until I'm blue in the face. The Future of Ideas and Code and Other Laws of Cyberspace go really far in illuminating what (to anyone without Lessigs years of education and practical application) can seem like randomly occuring and chaotic changes in policy and technology.
I also think that being able to speak about history and law in technology contexts is a good career move, especially for those of us who aren't the most talented coders. Business, government and education all waste millions every year because they lack the foresight to come up with good IT policy. There's a lot of change to be made here, but it takes more than just technical knowledge to do it right.
A Transmission From PlanetJIM.[end trans]
In all seriousness, this book is riddled with good programming advice. For example:
Good walkers leave no track.
Good talkers don't stammer.
Good counters don't use their fingers.
The best door's unlocked and unopened.
The best knot's not in a rope and can't be untied.
-------
and
-------
Obedience to law is the dry husk
of loyalty and good faith.
Opinion is the barren flower of the Way,
the beginning of ignorance.
So great-minded people
abide in the kernel not the husk,
in the fruit not the flower,
letting the one go, keeping the other.
-------
and
-------
Let them have tools that do the work of ten or a hundred,
and never use them.
As an experiment, I went and deleted all of the amazon.com cookies from my browser. I then headed over to www.amazon.com and searched for "C programming language". The "obidos" thing still appears.
My guess is that these links have nothing to do with the guy who posted it, but have more to do with how amazon.com implemented their web site and searching.
There are two ways to advertise:
1. You can put annoying pop-up in-your-face advertisements for unrelated products like Viagra and penis enlargements all over.
2. You can integrate advertising with content such that you increase sales for a particular company while still providing meaningful content that your users want to read.
We will dispense with the concept that advertising shouldn't be necessary, because we are all aware that for the present time, bandwidth and hardware require money, and it has to come from somewhere.
I for one, prefer the second method. Google is a perfect example of this. You search for particular topics, and sponsored sites are placed above your search. They aren't annoying banners, simply sponsored suggestions of "If you're looking for that, you might want to buy this." That's as close to everybody-wins advertising as advertising can get.
I do appreciate when people doing this form of advertising mark their advertising as such, just like google makes a small note to the side that labels it a sponsored link. I notice the links in this article to amazon have a referral number, which means someone is making a 15% referral fee on any purchase from those links. That makes it advertising, which is perfectly fine, but there should be a small note at the end of the article saying this.
How about the different cookbooks for the various languages out there? Perl Cookbook, Unix PowerTools, etc.
We've been here before:
2 31
http://slashdot.org/article.pl?sid=01/07/30/137
I would hesitate to buy any IT book unless either a) Its good reference manual b) I am a library or a company buying material for developers.
Seriously, You will not get enough general knowledge out of so few books to be at least knowledge enough to call yourself knowledgable.
A better suggestion is to go to yahoo, and go through every second or third sectional topic on the IT list / computer science list - then, search for the related newsgroups and find the latest research / topic debates and major faqs over the last year and read them.
Reading the debates is alot easier and gives you an understanding of the polar differences in possibilities. (Not always possible, depending on what discussions are taking place).
Dont confuse skills (C++, Perl, etc) with knowledge (pros/cons of C++, Perl, security issues).
-Tim
Algorithms is also available with the code examples in C or Java.
Sedgewick is very clear and concise with an appropriate amount of mathematical treatment for a practical algorithms text.
I also have Knuth, and while he may be authoritative, I do not always have the time to wade through three chapters of his authority to glean the knowledge required. It is my experience from school that most people who have Knuth do not spend a lot of time with him, but seek alternatives to learning MIX for code examples.
Silberschatz et al is a smaller version of their earlier thorough treatment, suited for readers who will not be actually writing OS code (most of us). It uses java for code examples, quite creatively.
For general purpose / basic sysadmin, MCSE books are fine. Some of the matter covered by them is transparent to some extent. They also cover few generic sysadmin principles, applicable to all systems. However, this would be sufficient as an informative reading only.
No flaming intended, NT 4 books helped to get the foot into IT in my case. Now I'm MS free at home and to fair extent at work, happily running on RH.
Regardless of what you do or don't do on the certification path, they are still OK but (you've got that right) NOTHING is worth as experience is.
Any book that has the name of a language in the title is not essential. The first book, for anyone who wishes to write software, should be a language neutral data structures book, to help learn the basics. Knuth is great, in parts, but it's not a beginners book. I'd recommend starting with something like "Data Structures and Their Algorithms" by Harry R. Lewis.
While working you're way though the book, pick a simple language, with a clean syntax, like python, with which to try out the concepts. Most "real" languages are unnecessarily complex for learning the things which beginners really need to know.
The second book should be an overview of the different types of languages that exist.
a person reading programming books would almost NEVER be interested in graphic design or business startup nonsense. THIS IS STUPID
Hard to believe no one has mentioned Structure and Interpretation of Computer Programs. While Knuth is a great set of reference bibles, SICP is a perfect textbook. It's funny, well-written, incredibly comprehensive and appropriately mind-expanding. Work through all of the exercises in that book and you've got a solid grasp of programming fundamentals.
Chris
The ASIN is an Amazon.com Standard Item Number. Basically it's their UNID.
/ ashaforeducation/103-6287484-7053449
The area immediately after that number is where an affiliate program would put their id (i.e. http://www.amazon.com/exec/obidos/ASIN/0596000278
I agree with diagnosis of 'no conspiracy'. It would have been a great idea, though
The seminal volumes on what keeps us all connected.
t_t_b
I'm on PJ's "enemies" list! Are you?
What part of "general knowledge of the IT business" are people having trouble understanding? No "Design Patterns", no "The C Programming Language" and no Knuth! Filter out Cliff's comments (he obviously didn't read the question either) and you'll see that the submitter is trying to figure out which "...for Dummies" book(s) he should get. (And sorry, I don't have an answer. So this post is as bad as everyone else's, I guess.)
Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein (aka the CLR book). In many ways, there is nothing more fundamental to computer science than using the right method to solve the problem at hand. That's what algorithms are all about.
I have to agree with this in relation to "Learning Perl" over "Programming Perl". Yes, Programming Perl is a great book, but I find myself referring more and more to the examples in Learning Perl simply because the layout of the book is more logical.
First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
what you are doing I guess. My list of books at home (which I bought in this order) include:
1) Upgrading and Maintaining PC's
2) Exam Cram Comptia's A+ and Network Essentials book
3) Mastering AutoCad Lt 2000
4) The books that came with Quark Express, Dreamweaver, Illustrator, and Photoshop
Of course i'm just a graphic designer who built his own systems - so i'm not really an "IT" guy but this is what I have.
Ave Molech Setting
I'm trying to remember the name of the very good algorithms book that i used in college, but it's not coming to mind. I'll have to check on that when I get home.
This Space Intentionally Left Blank
any ideas, links?
Rapid Development : Taming Wild Software Schedules by Steve McConnell. Teaches software project management through the avoidance of "classic mistakes". His list of classic mistakes reads like a diary of all the places I've been.
you can only learn so much from books. much more is in practice and doing.
Testing and Software QA
Most programmers never write tests because they don't know how. They code up a class or function with the expectation that they can brute-force test every input permutation. A few days later, they realize they'll be coding tests the rests of their natural lives.
I've only begun to delve into the subject starting with this book:
"Testing Object Oriented Systems: Models, Patterns and Tools", Robert Binder, Addison Wesley
It's a massive tome, +1000 pages, and it assumes a very "formal proof of correctness" mindset, but the techniques presented are changing the way I think about programming.
Then I cannot stress to you how good this book really is:s /ASIN/0201702711/ qid%3D1024438718/ref%3Dsr_11_0_1/102-1517140-58505 52
The Prcatice of System and Network Administration.
http://www.amazon.com/exec/obido
Its is quite simply the most valuable book a sys admin could own.
"Consider how lucky you are that life has been good to you so far. Alternatively, if life hasn't been good to you so far
"TCP/IP Illustrated Volume 1 The Protocols". A fantastic book on the protocols.
Another nice book, probably only for beginners, would be Jeff Duntman's "Assembly Language: Step-By-Step". Except for the part on binary, the book is clear and straightforward. Even for one who does not plan to code in assembly, knowledge of why assembly is the way it is helps to understand other languages.
Have you read my journal today?
First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
First they ignore you, then they laugh at you, then they fight you, then you win. -- Gandhi
The Wolf Book is one of if not the best algorithms book going even if you don't like Perl. The language is very accessible, something most college texts on the subject of algorithms are not.
unfortunately, in my experience, there is no such thing as general IT knowledge (especially when it comes to publications of any sort).
The IT field seems to be made up of an infinite number if specialties, and the people that succeed are those that find their niche and master it.
Of course, one could always study as many specialties as possible, and get a general understanding of all the ideas and how they work together, but as far as I have seen so far there is no general publication when it comes to this type of information.
Not even 'Technical Management for Dummies' =]
A great collection of entertaining/insightful anecdotes about Bill Gates and the group of CEOs Nathan Myhrvold calls "Captain Ahab's Club" (Ray Noorda, Larry Ellison, Scott McNealy, Philippe Kahn, Jim Manzi, Marc Andreesen, et al) -- CEOs who are so consumed with taking down Gates they risk destroying their companies in the process.
If you're interested in the business end of IT, you're going to run into Microsoft eventually (the first question Silicon Valley venture capitalists ask aspiring entrepreneurs is usually something like "So what's to stop Microsoft from doing the same thing and putting you out of business?"). If you want to learn from the successes and failures of companies that took on Microsoft, this book is a must-read.
=)
I know what the Internet is, what the hell is this Interweb business?!
Advanced Programming in the Unix Environment - a bit outdated, but still good; does not cover kernel internals
The Practice of Programming - good tips related to style, algorithms & data structures, debugging, etc.
UNIX System Administration Handbook- actually shows you how to get stuff done
Concrete Mathematics - to help you understand The Art of Computer Programming
Soul of a new machine - Tracy Kidder - inside the creation of the data general eagle mini comp - a great look at IT in the late 70's early 80's - considered a classic of tech writing
Fire in the Valley - Frieberger and Swaine - Considered the definitive history of the PC revolution and silicon valley.
Infinite Loop - Micheal S Malone a good look inside Apple computer - real insight into what went on behind the scenes
Hackers - Steven Levy - the classic of computer tech writing - the reality of hackers and an insight into where open source came from
Free as in Freedom - Sam Williams - Fascinating look at RMS and what makes him tick, even someone who often disagrees with him(like me)found a new insight into him and the book is GPL and available in full online
Thats just a few with links for you - PS i also love the following books myself - theyre a great read for many reasons...
-The unix Haters Handbook (dont laugh - its a funny read and so much of this stuff still bugs me)
-Sluggy Freelance Books
-The Bastard Operator from hell books
-Underground - Sulette Davies (great book about hackers and available online if you lookat www.underground.com)
-Insanely Great and Crypto - Newer books by steven levy
-The Cathedral and the Bazzar - Eric Raymonds book on open source
-Takedown - The pursuit of Kevin mitnick (a bit biased but a good read) let me know your favourites ok.
I refuse to argue with Anonymous Cowards - if you want a discussion get an account....
Unix Administration
Essential System Administration, O'Reilly
Java Programming
Java in a Nutshell 4th Edition, O'Reilly
UNIX C Programming
Advanced Programming in the UNIX Environment, Addison Wesley
I don't know where I would be without these books. Check them out.
I have compiled a list of IT books available online for your reading & enjoyment.
The description that I wrote for each of them is in spanish, but they are written in english. I've read all of them and I can assure you they are among the best.
Fh
Possibly a sham to promote Amazon.com? I see about 2500$ worth of books listed in the "article."
That's why I double-majored in CS and Bio CS really is worthless in the "real world."
I noted some in the Misc should be categories themselves:
- A couple of Data Structures books are essential. Mine is Weiss' "Data Structures and Problem Solving" and "Data Structures and Algorithm Analysis", available "in" different languages (C++, Java, at least).
I think they're great, but then again, I took that class with Weiss and the book was heavily recommended anyway. I'm sure there are other outstanding books out there I don't know about.
- An Operating Systems book is essential. I have the "Dinosaur book", however it's called. It's not bad, but it's not great either. I heard good things of Tannenbaun's "Modern Operating Systems" and it's on my buy list, but unless you're in OS development only one competent book is necessary.
- A hardware book is essential. Tannenbaun's "Structured Computer Organization", for example.
- An SQL reference is essential, and a good theoretical introduction to relational calculus as well. For the first, almost any decent SQL reference is good enough (O'reilly has a bunch of PL/SQL books) and some "Enterprise" references include 80% of what you'll ever need in some appendix. For the second, you need a good database class.
But the point is that SQL is not exactly "programming", although it may be hard to explain to someone who's not a programmer (HR departments included). It's relational calculus, which deserves a whole category by itself, and solves different problems than what we normally call programming.
In Design:
- "Design Patterns" by the GoF. It's essential. Even if you don't get into the hype of Patterns, a student will learn a lot of neat solutions to complex problems without stumbling his/her way through at first. Which, incidentally, is what the hype of Design patterns is all about.
- "Refactoring" by Martin Fowler.
Refactoring is not yet another experimental methodology, it's something we will probably do sooner or later, and doing it sooner and having a methodology just makes life that much easier. This book is great.
In Programming:
- "Thinking in *" by Bruce Eckel, where * is whatever language you want to learn.
Not only is it free, and online, I think it's one of the best series of introductory books I have read. I learned Java with it and found it the only reference for the core language that I needed... my college's required book (Dietel & Dietel) is still collecting dust.
I keep both the Java and C++ versions as references on my hard disk, and plan to learn Python from "Thinking in Python" at some point.
I recommend these because they're good "learning to program" books. Having a basic reference for each language your using is essential, but every student should have a good "basic programming" reference, whatever the language it uses. They're two different kinds of books, the latter is harder to find.
- "Programming in SML" by Robert Harper. There should be at least one functional programming book in the student's bookshelf. You may want a theory-oriented book too, but I think a practical manual for the language and lots of experimentation are what is essential to grasp the concept, SML is a good choice, and Harper's book is a great reference. It will help anyone to develop better in any modern language.
Things that are useful but should not be considered essential:
- Wireless books. Useful if you're interested in the subject, but not essential and a bit too specialized for "basic knowledge". For the interested student it is vital, but for the typical student it will not make a difference.
- Graphics: same as above.
- "Mastering Regular Expressions" (O'Reilly). Regex can save a lot of programming time and provide simple solutions for some common needs.
- For J2EE and web-development references, "Web Development with Java Server Pages" (Manning editorial) is my favorite book in the subject, with "Server Progamming in Java" (Manning again) for heavier, more general stuff and "Core Servlets" (Sun) for reference.
But that's only if that's of interest to the student. I would recommend getting familiar with the concepts, but it would only be part of the "core library" if it's part of what they want to do.
- Cryptography: "Applied Cryptography" is the book to get. But for most people it's an obscure subject and should be dealt with as a black box. Too specialized to be considered "basic".
A good security book should cover all that really matters in the application of cryptography (when to use it and how) anyway.
Freedom is the freedom to say 2+2=4, everything else follows...
As they already said, Knuth's "The Art of Computer Programming" is an absolute essential.
For JAVA, by far, the best book I read (and I have read A LOT of JAVA books) is "Just JAVA and Behind" by Peter Van Der Liden, Funnny as hell and great technical book too!
Just a book to understand why no system can be coherent and complete at the same time "Godel, Escher and Back" by Douglas Hofstadter. After you read it, you will accept that software will always suck.
Regards!
If you are bored, pick up your copy of Kernighan and Ritchie and look up "recursion" in the index. Okay, I know it's lame. But I found it at eeggs.com which is kind of a cool website, if you like that sort of thing.
Roy Fielding is chairman of the Apache group and a key contributor to the ideas that have become "the web" (e.g. HTTP, URI). His dissertation outlines the architecture of the web and why certain decisions (such as statelessness) were made. Note that it was written in 2000 so I'm sure it's a bit revisionist. At the same time, every theory has since been implemented so it's a high-level theory paper without any of the pie-in-the-sky crap.
p .h tm d ing_dissertation.pdf
html:
http://www.apache.org/~fielding/dissertation/to
pdf (1.3mb): http://www.apache.org/~fielding/dissertation/fiel
Introduction to Algorithms -- Cormen, Leiserson, Rivest,
C++ How To Program -- Deitel & Deitel,
Programming in Prolog -- Clocksin & Mellish,
Programming in Perl -- Larry Wall et al,
The Art of Programming -- Kernighan & Pike,
Database Management Systems -- Ramakrishnan & Gehrke,
Art of Assembly -- Randy Hyde
I also like the Oreilly books as well as the Unleashed books. I have the Java Oreilly books and I have an old edition of Red Hat Linux Unleashed which I have found useful when developing on Linux.
Pretty much you could also ask any cs college student right now to figure out the most popular college texts.
I'm actually kind of interested to see what people say on this subject, as it's something I've been thinking about recently.
Seems to me that "IT" is a much broader subject than what is suggested by this list, and that an "IT Professional" is much more than a programmer. To me, an IT Professional is someone who can walk into a business, assess their situation and needs, recommend a solution, and see through the implementation of that solution.
This obviously requires solid programming skills, but it also requires real business knowledge, finance, operations, knowledge of the IT industry, people skills. Let alone software and hardware architecture.
The fact is, that code is becoming largely a commodity. A growing percentage of business problems can be solved more cheaply using off-the-shelf components. So "implementing a solution" is more and more a matter of tying together pieces.
What becomes valuable and in demand, then, is your integration skills, your knowledge of business needs, your experience dealing with vendors, and your ability to nurture your customer relationships.
So I would conclude that yes, it's critical to have a solid tech background, and all that stuff should be on your bookshelf, but you really need to succeed as an IT Professional is a global view of the IT Industry and its relationship to business.
What I'd like to see added to the list is recommendations of books that would help one achieve this sort of perspective.
...is Just Java by Peter Van der Linden. As an almost-middle-aged engineer, technical writer, and beginning programmer, I combed through every Java book I could find. Most of them either explained everything in terms of C++, which was useless for me, or they were too basic, or they were just badly written. Just Java is a really well written book by any measure. It's suitable for any level of programmer, and a great reference.
I've also added books on my own - on Perl, MySQL (which I use frequently). Maximum Linux Security (Anonymous, published by Sams) has
I use Macs to up my productivity, so up yours Microsoft!
Mission Critical Systems Management by Yuval Lirov is a great book for IT people and managers alike. Yuval used to be my manager back when I worked at Lehman Brothers. All of the applications he describes in this book are real and are used there. This is a great read for anyone who has to manage 24x7 systems. Especially thousands of them.
Andy Hunt and Dave Thomas' The Pragmatic Progammer" is a wonderful condensation of the general wisdom a smart person will gain in their first five years or so of a career in software development. A lot of the stuff in here is just common sense, but some of it (too much of it, really) some people never seem to learn.
Cantankerous old coot since 1957.
Beginning Linux Programming (mentioned earlier) helped me through many of my CS courses. Some of my other CS books include C Programming - A Modern Approach (K. N. King), and Unix Shell Programming (Arthur, Burns). I've probably used these books much more after I had finished with the courses, than during them. Some of my non-CS books are on Perl, and MySQL (which I use frequently).
I use Macs to up my productivity, so up yours Microsoft!
Sorry, but I think Knuth's The Art Of Computer Programming is massively overrated as a general-purpose text. It's like that presentation edition of The Complete Works of Willy Wagglestick that sits on the shelf looking splendid and making you very proud that you own it, but never actually getting read.
For most purposes, a good book on basic data structures and algorithms is far more useful in the real world than Knuth's complex explanations with examples implemented in MIX. Maybe I just don't need the deep stuff behind it regularly, but if I don't then surely neither do most other professional programmers, and that pretty clearly contradicts the "essential" status. If it was a choice between making computer science students read TAOCP or making them read Sedgewick, then I'm sorry, but I'm choosing Sedgewick every time.
This is not to say Knuth's work doesn't have immense value as an authoritative academic treatise on its subject matter; clearly it does. But that's very different to calling it "absolutely essential" for just anyone.
And to preempt the obvious replies... Yes, I've read several bits of TAOCP. Yes, I do like other things Knuth has written (notably his TeX-related stuff). And no, I don't much like Numerical Recipes either, for exactly the same reasons.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Big shout out ta all ya'll bitches and hoe's in mah posse...
Peace out niggaz.
In my GUI class our prof had us read "The Design of Everyday Things" by Donald A. Norman. It is an insightful book that looks at general principles that are paramount to designing usable systems. Also not a bad read.
For those that can't afford $60+ for some of these books, check out online documentation, tutorials and how-to's.
You could read every book on the list and in the threads (I have and many more besides,) and still fuck up when you realize that you're working for people who didn't read any of these books but who got there before you did, haven't learned squat in all the years they've been working there, couldn't manage to find their ass-holes with both their hands and still they have the power (authority is something else,) to TELL you to do your job wrong because they don't know what the fuck you're talking about but they've never done it your way and they're not about to start now, nobody ever went broke buying IBM, yadda, yadda.
/. but now I won't give a shit. :-) Man there's NOTHING like walking away! :-)
I've just tossed in the towel and bought a dog grooming salon.
High-tech businesses and their (mis)managers?
Fuck 'em where they breathe.
A less than satisfied high-tech struggler in the trenches. Make that an EX high-tech struggler in the trenches.
I'll keep reading
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
The ACLU voted this book best C++ book of 2001.
Michael Feathers of ObjectMentor described this book as "Porno for Programmers"
With accolades like that, it is obviously an, umm, ah, unusual, book.
Let me start with a "Once upon a time story...."
Once upon a time, I wrote a C++ library that should have become the Standard Template Library. But Stepanov didn't play fair. Whilst I, in my third worldish corner, dreamt up arcane workarounds for the deficiencies of the C++ compilers of the day, Stepanov walked next door to Bjarne Soustroup's office and told him to do it right.
I remember the frustration, I needed template template parameters. I needed traits, above all I needed ways of manipulating types and getting information about types. I did some amazingly convoluted and tricksy things to make it work. My library did work, but bygorrah was it arcane.
I gave up on C++ as an "almost" language that didn't quite make the grade.
After Stepanov's bullying, C++ was better but it still lacked things. RTTI is deficient. Types are not first-class objects.
I had given up hope of it ever becoming my dream language.
Now there is a new player on the C++ scene. Andrei Alexandrescu.
He is starting from the base that Stepanov, Moo and Soustroup created. The nifty template template stuff is now in every compiler. We all have partial specialization. We have traits.
Now he tackles the rest of the deficiencies with a bullheaded aggressiveness that is amazing. He does horrible things. Truly evil things. Things that make me blush to read. He then sweeps all the nasty stuff under a nifty carpet called the "Loki Library".
Its neat and usable. All the deficiencies of C++ are gone.
The grand promise of very efficient reusable generic code lies open before us with all the obstacles blasted away.
Java will never compete with C++ for efficiency and flexibility. Alexandrescu has created a new future.
Now we know this book is important, so what is in it....
Policy Based Class design.
Every design has trade-offs. What works in one situation is slow in another. What is safe here is a disaster there. Some situations allow some really good optimizations, but other places not.
We want reusable components, but if we make it generic, we end up with a "Lowest Common Denominator" kitchen sink mess.
Policy Based class design is the answer.
Read the chapter on Smart pointers. It is the best example of generic, flexible, efficient, reusuable design I have ever seen.
Part I Techniques and Typelists.
This is the "porn" in the "porno for programmers". What he does here is pure horror. This the Steven King of the software development literature. This is why people who have looked deep into the heart of C++ templates shudder.
But don't worry. He neatly prepackages it all and serves it up in a nice tidy API. Enjoy.
Chapter 4. Small Object Allocation.
Don't discount this one. STL actually quietly does a lot of this. It is amazingly effective.
Part II Components.
All the high-tech of Part one applied to roll out generic, efficient and flexible implementations of 7 standard patterns.
For anyone who's interested in programming C++, this list from a newsgroup thread on the subject is a decent starting point.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
If anyone else isn't familiar with his works yet, I strongly recommend they go to their local library or bookshop and ask for a copy of the aformentioned title, they will be glad they did.
Be careful! New moon tonight.
I'd recommend Crossing the Chasm by Geoffrey Moore and The Innovator's Dilemma by Clayton Christensen. Crossing the Chasm is especially depressing as you can follow along as your company loses focus and does all the things Geoffrey tells you not to do.
development.lombardi.com
Also, before you withdraw all your life savings to buy all these great book recommendations you might like to think about what area of 'IT' you like the sound of.
;) and knowing general 'good design practices' helps (both for SA and coding jobs).
...
Generalizing wildly, IT comes down to keeping things up and running (sys.admin), making stuff (programming) or helping people (support/requests). The boundaries are fuzzy though (eg SA's automate jobs, programmers write documentation, support staff check services, etc).
I recomended thinking about the sorts of things you like doing or the kind of area you would like to work in, and use that as a general guide for the kind of books you buy (for example, the greatest book in the world on database administration isn't much good if you end up as a graphics programmer).
There are some useful general skills though. Knowing how to program (if you can program in one procedural language you can program in them all
And my book recommendation, if you are an SA (or even if you're not) is
"The Practice of System and Network Administration" by Thomas Limoncelli & Christine Hogan.
Dr. Doug Schmidt rocks the house, his ADAPTIVE communications environment starts where the design patterns from the Gang of Four left off, and fully explores networking and concurrency. A very fine read for anyone serious about designing and maintaining enterprise networking software.
/ 104-1218059-2713563
http://www.amazon.com/exec/obidos/ASIN/0471606952
As others have posted, O'reilly makes excellent books. Essential System Administration is great, and Practical UNIX and Internet Security is a good oine. There are lots of others good ones from them.
Outside of Oreilly, things get thinner. For a seriously solid networking overview, the Voice and Data Communications Handbook is a truly great book. Voice networking is something niglected by geeks, but a common necessity with employers. History, a whole bunch of 'whys', and a well-rounded technical overview is presented. This is one of the few computer books that I've honestly felt wiser for reading.
I use my Cisco CCNA Exam Guide as a general networking book. It's well-written, thorough, and has an absolutely great explanation of the OSI model.
rhadc
Atlanta, GA
As a web designer, I found that Designing Web Usability by Jakob Nielsen and HTML: The Complete Reference are both vital references, and, of course the aforementioned Design of Everyday Things has always been one of my favorite reads.
;P
Yah, and before you flame me, I put my amazon associates code in the links, so gimme some $$$.
::.. check out some Cell Phone Reviews
The Practice of System and Network Administration is a very good book covering many good processes and procedures in systems admining and the what not. I would recommend this book to any one working in the field.
Check out the slashdot review here
Author: Thomas A. Limoncelli and Christine Hogan
Publisher: Addison-Wesley
now go buy it, it is good you will like it trust me on this one.
man
No manual entry for
Computer Science: An Overview by J Glenn Brookshear
7 X/ qid=1024452701/sr=8-1/ref=sr_8_1/103-7392120-70558 43
Most useful computer book I have ever owned. Something I will reread/review for many years to come. A must for those who never had a traditional comp sci education.
http://www.amazon.com/exec/obidos/ASIN/02013574
Languages ...My 1991 copy of this book is so tattered and dog-eared from heavy use that I'm going to have to replace it soon.
...An excellent reference that covers the language's intricacies.
...Even if you never ever write anything in Lisp on the job, you should still learn to program in a language such as Lisp or Scheme because it will expose you to powerful ideas that will have a lasting effect on how you approach programming tasks, regardless of what language you end up using.
C++: The Complete Reference, Herbert Schildt
The C++ Programming Language, Bjarne Stroustrup
ANSI Common Lisp, Paul Graham
Database Design ...This book is the Bible of good relational database design.
Designing Quality Databases with IDEF1X Information Models, Thomas Bruce
Operating Systems ...A good explanation of all the nitty gritty details you never learned in college for working with Solaris.
...If you need to do something with a UNIX shell script, you'll find something in here that'll accomplish your task with minor modifications.
...The Classic OS book.
...Everything you ever needed to know about UNIX system calls.
Solaris 2.x for Managers and Administrators, Freeland, McKay, & Parkinson
UNIX Power Tools, Peek, O'Reilly, & Loukides
Modern Operating Systems, Tanenbaum
Advanced Programming in the UNIX Environment, W. Richard Stevens
Theory ...Grammars, Finite Automata, Turing Machines and other good stuff.
Languages and Machines, Thomas Sudkamp
Mathematics ...If you're ever going to deal with vectors and matrices and all that other fun stuff, this is a good book to learn it from.
...Sooner or later, the probability that you will need to use statistics for something approaches 1.
Linear Algebra and Its Applications, Gilbert Strang
Statistics for Engineering Problem Solving, Stephen Vardeman
Software Design ...Does this one need explanation?
...An excellent treatise on processes of software development.
...Great design advice.
...If you don't get the software requirements right, you'll inevitably build software that solves problems that nobody needs solved.
...Read it. Read it again. Did I mention that you should READ THIS BOOK?
The Unified Modelling Language User Guide, Booch, Rumbaugh, & Jacobson
Software Engineering, Sommerville
Software Architect Bootcamp, Malveau & Mowbray
Use Cases: Requirements In Context, Kulak & Guiney
Design Patterns, Gamma et al
User Interface Design ...What you really need to know in order to get your users to tell you what they need and build software that they can really use.
...An insightful look into what makes a user interface good or bad.
...Know the look and feel of the platform you're developing for and always adhere to it unless there is some very compelling usability reason not to.
...This book isn't even about user interfaces, but everything it says about good graphic design is applicable to user interfaces, web pages, printed documentation, etc.
User and Task Analysis for Interface Design, Hackos & Redish
The Usability Engineering Lifecycle, Mayhew
The Humane Interface, Raskin
Java Look and Feel Design Guidelines
The Non-Designers Design Book, Robin Williams
Artificial Intelligence ...An excellent introduction to the field.
...When they subtitled this book "A Comprehensive Foundation", they meant it.
...A relatively light read that introduces some very interesting concepts.
Artificial Intelligence, Winston
Neural Networks: A Comprehensive Foundation, Simon Haykin
An Introduction To Genetic Algorithms, Mitchell
Graphics ...The nitty gritty algorithms behind graphics.
...A comprehensive treatise on damn near anything you want to know about graphics.
Graphics Gems, Andrew Glassner
Advanced Animation and Rendering Techniques, Watt & Watt
The Computer Image, Watt & Policarpo
Miscellaneous Useful Books ...Your software is worth nothing unless you can explain clearly and concisely to somebody else how to use it.
...How to test your software systematically and thoroughly.
Technical Writing, Paul Anderson
Software Testing and Continuous Quality Improvement, William Lewis
When someone asks for a good programming book, why does someone always recommend K&R? Where did we get this crazy notion that the guys who invented the language obviously wrote the best book about it? I mean, the Stroustrop C++ book is actually pretty good, but K&R is terse, obtuse, and out-of-date. It's like trying to learn Perl from the man pages.
I still remember my introduction to C. I was in high school and a friend of the family arranged for me to volunteer at the CS department of the local university. Someone handed me a copy of K&R and told me to go write something. I was already an experienced Pascal/Basic programmer by that point, but K&R C was clear as mud. I think I managed to hack the thing together by trial and error. The next year I took a C course which was pretty much self-directed (the prof didn't actually know C), and I learned the language mostly from the TurboC help files... a better reference than K&R if you ask me.
-a
How to rationalize theft.
Hustler! Every IT guy should read it. Obviosuly IT girls might want something a little different.
http://www.hustler.com/
To answer your question, if the skills used in your OSS work or in your moonlighting are relevant to your career and are non-trivial, then by all means list them. But be ready to demonstrate that the skills are beyond the hobbyist level. And be ready to answer questions about your outside projects interfering with your ability to do the job you are seeking.
Remember, your resume is just a tool to get you an interview. The hiring manager is just interested in skills and experience relevant to the job they are hiring for. So list those skills, and only those skills, that are relevant to the type of position you are applying for. Don't pad your resume with skills that you cannot demonstrate proficiency in. And target your resume to the hiring manager, not HR.
My experience has been that HR has little to do with the hiring decision, it is the hiring manager that you are trying to impress.
I the jobs where I've had hiring responsibility I looked for:
- A skill set that matched my hiring criteria.
- Evidence of real word use of those skills.
- Previous work in a similar environment (i.e small vs. large shop) or on similar project or in the same or related industry.
On the other hand, skills padding usually resulted in a TNT letter (Thanks, No Thanks). For example, don't list every language, every computer, or every OS you've ever used. (Do list those you can demonstrate proficiency in.)
The one exception is when the job calls for a skill, for example C++ experience, and you've only used C++ on a couple of academic projects. Then go ahead and list C++ on your resume to get yourself in the door. But be sure to mention this to the interviewer before they dig it out. Thus someone with a strong programming background, proficient in C, who tells me that their C++ experience is limited has a much better chance of being hired then the person with the same skill set but which I uncover that his only C++ experience is a few college assignments. But this only works if you have all the other skills needed.
And good luck.
Steve M
I would like to say read a good book on the history of computers. My favorite is Computer: A history of the information machine, by Campbell, Kelly, and Aspray. Little dated, but still a good read. This is just my personal opinion, but I think it is a good idea to have a general understanding of how things got the way they are now.
Great people don't need people to complete them, great people complete other people. -- Matthew Pawlikowski.
One book about software metrics:
0 534956009/ ref=cm_mp_fil/002-5413933-8950461
Software Metrics: A Rigorous and Practical Approach
http://www.amazon.com/exec/obidos/ASIN/
A wonderful read!
Mats
I'd have to agree with this. I like the way Lutz's exercises have the reader type code straight into the interpreter, as an impatient type who'd had some programming experience and wanted to get up to speed fast, this hands-on approach worked wonders.
Once one has digested this book, the online python documentation is quite useful, or for a dead tree book, there's Beazley's "Python Essential Reference" (New Riders)
.
Nothing teaches code like code.
"First you gotta do the truffle shuffle."
I'm sure it was so obvious you all just forgot to mention it,
that you all have it on your shelves both at work and at home,
but it really needs to be said anyway, in case there's some
poor newbie who just doesn't know...
You've gotta have the Hitchhiker's Guide to the Galaxy.
I'd also like to add that the Camel Book (Programming
Perl, already mentioned) is one of the best of the lot.
Cut that out, or I will ship you to Norilsk in a box.
Try to learning some programming. I suggest starting with an interpreted language, like Python. It's easy to get started quickly. Good programming books to get started with: Learning Python by Mark Lutz for Python, and Accelerated C++ by Koenig and Moo for C++. The recommended books (Programming Python, The C++ Programming Language) aren't terribly good for starting out (to put it mildly. The latter is a reference, which basically assumes you know C++, it's not a tutorial)
Also, play around with Apache, try to write some server side scripts using Python or whatever other tool you fancy.
Beginning Linux Programming (Matthew/Steones, Wrox press) is a good intro to several topics on programming for Linux. Cheers,
The Inform Designer's Manual, by Graham Nelson.
4th edition if possible.
Dead tree copies of this one are slightly difficult
to find in stores, but this book is worth going out
of your way to get. It's not just loaded with
interesting examples of OO design in action -- it's
also one of the most _interesting_ programming
books ever written. The Inform language is niche,
but this book is worth reading for its own sake.
Cut that out, or I will ship you to Norilsk in a box.
These lists by Richard Bejtlich provide reading suggestions based on your knowledge level and current responsibilities. The reviewer breaks down the material into three tiers. Tier one is entry level. Tier two is 1-2 years' experience. Tier three is 3 or more years' experience.
Following the recommendations is nearly equivalent to a four year independent study program in digital security.
Recommended Security Reading
If you want to see all reviews (over 70 security books from the last three years), check here:
All Reviews
According to Richard's web site:
"At the start of 2002 I resolved to stop reading and reviewing books on familiar topics. I will no longer try to review every security book which hits the shelves. If a new book does not offer original content, I will not read and review it. My recommended reading lists will reflect my opinion of the authoritative books on each subject relevant to the digital security profession."
Enjoy,
Helevius
Google says:
/. article, I searched for it at alltheweb as well. "Willy Wagglestick" gave no results, and no hint that maybe I wanted "Willy Wigglestick". It did return both pages for Wigglestick that were returned by Google, but were it not for Google I would have found nothing at alltheweb.
Search: "Willy Wagglestick"
One result. Not very helpful. But 'Did [I] mean: "Willy Wigglestick"'? Maybe I did...
Search: "Willy Wigglestick"
Two results, both from the same site. It appears to be a nickname for Shakespeare.
And to tie this in with another
What about the web? Dynamic websites (y'know, like Slashdot) are a big part of IT today, certainly the fastest growing part over the last few years. (And I, for one, don't think B-to-B web services are going to take over anytime soon, so don't waste too much time on not-yet technology.)
Philip and Alex's Guide to Web Publishing is a great overview of how to do dynamic websites. Philip Greenspun champions his chosen tools (Unix, AOLserver, TCL, Oracle) but he mentions alternatives and gives reasons for his choices. One of the benefits of his personal style is that he tells you enough about himself and his projects so you understand the context of his technological choices.
Greenspun doesn't attempt encyclopedic coverage of each technology. Instead, he goes into enough technical depth (including illustrative code) so you can see what needs to be done, using whatever tools you choose, to accomplish the tasks required by dynamic websites. And he gives you perspective you need so you can make the right choices for your own projects.
What really sets this book apart is how entertaining it is. Greenspun is a very smart, very funny guy, with a lot of practical insight and a lot of color photos that cleverly liven up the pages. The book is free on the web, so take a look (don't skip the acknowledgements), but really, you'll want to own it.
While of course much of it is C++ specific, there is a great deal of information that applies to nearly any language. Most notable are his discussions of analyzing dependencies, and extensive discussion on resolving circular dependencies, and software "Design for Testability" (Unit Testing discussed much earlier than eXtreme Programming came along, as well as "White Box" testing.)
Lakos used to work for Mentor Graphics, an electronic CAD software vendor. Mentor was one of the first companies to adopt C++ for the development of large production systems back in the 80's, and their first attempts were collosal disasters. But surprisingly they didn't give up, instead they worked out a detailed methodology for doing successful and productive C++ development.
It has helped me immensely in my work, and I am on a quiet campaign to get all of my client's programmers to read it.
My page Avoiding Unnecessary Header File Inclusion is based on the ideas in Lakos book, if you want a detailed example of why this is worthwhile reading. (That part is C++ specific, though.)
About dependencies:
A well-designed program will have a "dependency graph" that has no cycles in it. This allows components of the programs to stand on their own, depending on at most a few other modules. This aids comprehension by developers, and also aids testing.
What this means is that many components of a program will depend either on nothing else at all, or at most on standard libraries. Then at the next level up, there will be some components that depend only on the components at the first level or the zeroth level (the standard libraries). You can continue up this way, with components depending only on levels below them.
This aids both reusability and unit testing. Reusability because a component can be taken elsewhere and only requires the few components it depends on to work, and unit testing because you can build test executables by linking in only a few dependencies. It also aids testing because you can be sure a component is tested if you have a test for the component directly, and tests for each of its dependencies.
Poorly designed (and all-too-common) programs have dependency cycles. That is, the graph of module dependencies is not acycling, and you cannot link a module in its own test harness without taking a lot of junk with it. Maybe it even requires the entire program. Really bad programs will have a great many cycles in their dependency graphs.
There are quite a few techniques for managing these dependencies, a few C++ specific but many of them language-independent. Lakos catalogs many of them.
About unit testing:
Probably most people here are at least passingly familiar with unit testing. But Lakos has a strategy for making the effort to write tests manageble while still getting good test coverage.
First, you "levelize" your program (that is, create an acyclic dependency graph for your program).
Then, for each module, you make the assumption that the dependencies are already tested, and write the test for the module itself so that it only intentionally tests the code which is actually part of the module under test. You don't try to test the dependencies "through" a module that is at a layer above them.
This makes the amount of test code scale linearly with the number of modules, and also moderates the requirements for the effort a test must make.
While complete test coverage requires a unit test for each module, it is not really necessary to write the tests for the lowest levels first (although that is probably the best strategy).
In an automated test run, though, one should generally run the lowest level tests first.
Finally, Lakos discusses how one could write automated tools for doing dependency analysis. One can do this for C++ by basing it on Open Source tools like mkdep.
-- Could you use my software consulting serv
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
-
Reviews arranged by subject
-
Reviews arranged by Title
-
Reviews arranged by author
-
Reviews of Highly Recommended Books
-
Highly Recommended books on Advanced C
-
Highly Recommended books on Java
Here is a review of a book that is "Not Recommended" so you can see the value the ACCU reviews will have in helping you avoid bad books.The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-- Could you use my software consulting serv
And lo! Not only much slower (unless I just hadn't noticed how slow it was last time), but now missing out even more areas of text!!
AARGH! Well, it was kind of too late to replace it with the old version, so I mucked about a bit, and found that untagging the "Antialias" option in the "State" menu made it render everything (well, everything I've looked at with it so far. It's 80-odd chapters, don't forget!). Unfortunately without the antialiasing the text looks vile.
I also noticed that it seems to be showing the pages as different sizes... I'm not sure what is going on there, I'm sure it didn't do that before... Oh the wonders of software.
Be careful! New moon tonight.
The OReilly CD bookshelves are really really good value for money, and the space saving on a bookshelf is nothing short of phenomenal (in addition to searchable pages and indexing)
Not all of them are of the same quality, though.. as mentioned earlier, the Perl CD bookshelf is excellent, I'd also highly recommend the Oracle PL/SQL bookshelf (for anyone interested in doing database programming in particular)..
In addition to Code Complete, Rapid Development is also a great book for anyone in the IT industry (this is also written by Steve McConnell).. another couple of great programming books are written by Steve somebody (McGuire ? yup, google tells me that's right.. link here )
Another book highly recommended to me is The Pragmatic programmer, although I haven't gotten hold of a copy yet :).. You've also missed out some literature on Extreme Programming which might come in handy...and here's the link for the FreeBSD book, mentioned earlier...
- The Art of Computer Programming (Knuth)
- Computer Networks: A Systems Approach (Peterson and Davie)
- Distributed Algorithms (Lynch)
- Designing Web Usability (Nielsen)
Danny.I have written over 900 book reviews
The best book on programming for the layman is "Alice in Wonderland"; but that's because it's the best book on anything for the layman.
deus does not exist but if he does
Why, it even inspired poetry: "waggling, wibble wobbling, spiraling ever upwards", from Blue Clear Silence, by Claiborne Schley Walsh. (Warning: link may be considered literary equivalent of goatse, by some...)
A couple of books I've read or am reading at the moment.
Weaving the Web - Tim Berners-Lee
The Cathedral & the Bazaar - Eric S. Raymond
A good insight into how applications are developed and why the web _should_ exist. Good things to keep in mind while designing an application.
The Cluetrain Manifesto - Christopher Locke, Rick Levine
Rules for the new economy. Maybe not really IT related but should encourage you to think about your end users.
/b
[Please type your sig here.]
.. and I thought all my 10 years of experience that those are advanced books for people who write device drivers and OS kernels!
Joe Celko's trilogy of database books is pretty good, as is the "Data Warehouse Lifecycle Toolkit." so that you can understand what the heck a Data Warehouse is. SQL for Mere Mortals is a decent start if you're completely ignorant of the what SQL is all about.
Extreme programming by Kent Beck is where you should look so that you don't fall into the Rational Unified Process trap.
Last, get "Soul of a New Machine" by Tracy Kidder. It's an all time classic.
Jer
PS. Forgot about Aho's "Dragon Book" on compilers. Probably a little technical for most "IT" folks, but part of the canon, for sure.
If you are just starting out in C++, even if you are proficient in C, stay clear of Stroustrup's "C++ Programming Language." If you are like me, you learned a lot from K&Rs "C Programming Language" and that will make you think that the supposedly C++ equivalent will be just as helpful. Unfortunately, Stroustrup's book is mostly a refernce and goes into the concepts far too quickly for the beginner. I recommend Deitel&Deitel's book.
I have nothing to add at this late stage, except ....how about forwarding the completed, audited and metamoderated list to Amazon and negotiating a discount for /.ers?
In my opinion, this is a very important subject that might have its own place in /. Why not keep a list of "recommended books", maintained by the readers. Some short reviews could be added as well.
Just an idea, but I have seen many good book references here to be missed.
I'm surprised noone has mentioned the Hacker Ethic. It's not a technical book as much as it is an instruction as to how any modern IT professional/nerd/guru/wannabee should live, think, eat and sleep. This book has been great for me and helped me restoring my pride in waking up at 10 and working 'til midning in a society where the 9-5 mentality is what is socially accepted.
/John Sjolander, project manager Contribio
- The Pragmatic Programmer
by Hunt and Thomas. Covers many common pitfalls and comes recommended by, among others, Ward Cunningham. This book is not tied to any language, but leans toward object oriented programming and uses some examples (with explaination) in Java, C and Smalltalk. A truly excellent book although much more technical is- Object Oriented Methods
Principles and Practice by Ian Graham. Graham has been around the block and it it shows. This is really the A-Z of OO. From the basics through artificial intelligence and fuzzy set theory, this is a book that you can grow into over time as you develop skills and understanding. When the math gets deep, he gives signposts warning "If you are not interested in the math behind how this database stuff works, skip over this section". 800 pages of gold.What this list is missing is a good book about Algorithms & Data Structures - what most software development is all about. Several comments have suggested Knuth's The Art of Computer Programming; however, for getting started, a book like Introduction to Algorithms by Cormen, Leiserson and Rivest (MIT Press) seems more appropriate.
1) A manual for whatever hardware you're going to be programming on.
2) A manual for whatever OS you're going to be programming on. DOS is not CP/M is not MP/M is not Solaris is not HP-UX is not AIX is not Red Hat Linux is not Debian Linux.
3) Anything (preferably put out by the company you're working for) on their programming standards. FOLLOW THEM. If the company you're working for doesn't have standards, find several, and figure out what will work best, and then FORCE THEM TO BE A STANDARD.
4) Anything (preferably put out by the company you're working for) on documentation standards. FOLLOW THEM. If the company doesn't have documentation standards, find several, figure out what will work best for your project, and then FOLLOW THEM.
Personally, I would put good, consistant documentation as priority #1 for any programmer. The rest of it you can beg, borrow, steal, or fake.
Karma: Food Fight (Mostly affected by Date Plate).
I'd suggest to expand the list of Programming with "The Practice of Programming". It's written by Kernighan and Pike. It doesn't specifically handle a programming language but more the concept of programming, setting up good data structures, etc.
It is a must if you want to learn programming the good way.
Guide to the Software Engineering Body of Knowledge: http://www.swebok.org/
Steven's books on TCP/IP
Any of Stallman's books on networks
Brinch Hansen's "Operating System Principles" and related books
Lion's Commentary on Unix (r) Sixth Edition
Linux Core Kernel Commentary, formerly published by Coriolis
A whole list of Linux Kernel books
Most of Tanenbaum's books
"FreeDOS Kernel" and "Dissecting DOS" if you're into that sort of thing
A whole skerrick of "Undocumented
"The Magic Garden Explained" for SysVR4
A room big enough to store them all. And that's not inculding the Elec.Eng. books.
Ciao
"I his bow, and spun and wove, likes you." Vere de Vere out of my mould's mouth dragged me of the voluntary apes.
Hear hear, as soon as I get my book budget out of the claws of finance one gets bought. In fact, I'm almost tempted to...gasp...spend my own money on it!
The book has a web site - http://www.sysadminfocus.com/index.html - and you can read an excellent appendix on-line - giving quick summaries of "what to do when". Good stuff.
~~~~~ BigLig2? You mean there's another one of me?
If you're a sysadmin, the Solaris System Administration Guide(s) from Sun are handy in book form, even if they're free online. Sun Performance and Tuning is good so as to learn how Solaris memory and other functions work. It is not a day-to-day operations guide, it is more high level. For topics from PERL to awk to NFS, O'Reilly books are the best. Buy whatever you need. I also like the Osborne "Teach yourself C" (and C++) books by Herbert Schildt for the little C and C++ programs I write.
Software Engineering 6th Edition - Ian Sommerville
I'm amazed nobody has mentioned this book, it was the primary text on my Software Engineering degree. It would have probably helped me pass too if I wasn't drinking so much.
Anyway, anyone that's going to even think about doing any sort of technical project management, system design, progamming, testing, specification, etc. should read the relevant chapters. Its my bible.
"COME ON ENGLAND!!"
The one book to have about databases is Christopher J Date’s An Introduction to Database Systems, 7th edition, Addison-Wesley 1.999. The edition is relevant, because it includes recent, fundamental work about type inheritance and other fundaments for relational databases supporting OO programming.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
Tog has a unique writing style though, so you should check out his website first and read a few articles.
For those of you who don't yet know of Tog, he was the Human Interface Evangslist at Apple.
The book, as the Amazon review states, does not describe a methodology or a set of guidelines but a state of mind. The mindset that Tog describes is one that I personally think the open source movement could benefit from.
All I know is that once I had finished the book I couldn't help but look at all software differently.
A good book about programming for the Web. A reference.
Philip and Alex's Guide to Web Publishing, Philip Greenspun
Applied Cryptography (http://www.counterpane.com/applied.html)
Numerical Reciepes
http://books.cambridge.org/0521750342.h
Knuth's Art of Computer Computer Programming
http://www-cs-faculty.stanford.edu/~
I must add a canny way of earning refer credit with amazon
http://www.amazon.com/exec/obidos/ASIN/15561548
Zen and the Art of Motorcycle Maintenance - An Inquiry Into Values by Robert M. Pirsig.
Yes, it is a novel not a textbook. However, much of the IT industry would do well to consider Pirsig's thoughts on the 'Metaphysics of Quality'.
I haven't read it, but I heard that SQL-99 Complete, Really is quite comprehensive.
chris@unconnected.org || irc://undernet/hansapils
Everyone working in a tech company should read...
Crossing the Chasm by Geoffrey Moore
Then you'll know why the marketing guys act so stupid.
[And if you want to get into the sales guys heads, try PowerBase Selling].
The inmates are running the asylum by Alan Cooper, SAMS, 1999 ISBN 0-672-31649-8
Here is the announcement.
Now that's a start to a comprehensive IT Library if I've ever seen one. How do you all feel about this list (if not the specific selections, then at least the material being covered)? If you were to make changes or additions, what would they be?
IT, Information Technology. This list is a basic
PROGRAMMERS REFERENCES, NOT a collection of texts on IT. You need to clear the fuzzy thinking first and figure out what the acronym really means!
id like to add Thinking in C++ to the list, by Bruce Eckel. You can download it from here
by Geoffrey A. Moore, Regis McKenna
The bible for high-tech marketing.
Kernighan and Pike's The Practice of Programming is an excellent book on general issues like style, algorithms, testing and portability. They emphasize simplicity, clarity and generality as the keys to writing better programs, regardless of the language or the application. Examples are in many languages -- C, C++, Java and Perl at least.
Brief Table of Contents (extended TOC)
Style
1 Algorithms and Data Structures
2 Design and Implementation
3 Interfaces
4 Debugging
5 Testing
6 Performance
7 Portability
8 Notation
The Practical Guide to Structured System Design by Meilir Page-Jones
though this from the "structured days", if you hvn't read this then you don't know about coupling and cohesion (and various other things). this should be the first book to read on design.
followed by
Bertand Meyers's OO book (forgot the name)
GoF's Design Patterns
Progamming::
The C Programming Language:Kernighan & Ritchie
The C++ Programming Language:Stroustrup
Thinking in C++:Eckel
Thinking in Java:Eckel
Palm OS Programming Bible:Foster
Palm OS Game Programming:Pleis
Distributed Applications with COM+ and VB6:Pattison
Programming Components w/ MS VB6:Eddon
Hitchhiker's Guide VB & SQL Server:Vaughn
ADO Examples and Best Practices:Vaughn
ADO 2.6 Programmer's Reference:Sussman
General::
Code Complete:McConnell
Rapid Development:McConnell
Sofware Project Survival Guide:McConnell
UML Distilled:Fowler;Scott
The Tao of Objects:Entsminger
Object-Oriented Analysis and Design:Booch
The UML User Guide:Booch;Rumbaugh;Jacobson
AND just about any "Nutshell" book from O'Rielly.
We have a web site about the book called www.EverythingSysadmin.com which includes a free copy of Appendix B (which, by the way, is my favorite chapter). And I would be remiss if I didn't mention that Amazon sells it too.
I hope you enjoy it!
Available at:
http://psg.com/~dlamkins/sl/contents.html
This book has several possible paths through it for different audiences. I would suggest the "Professional Programmer" path for this audience, with special attention to the "How to Find Your Way Around" chapters.
Also check out the "New to Lisp" section on the Franz Inc home page:
http://www.franz.com
To a Lisp hacker, XML is S-expressions in drag.
If you aren't going to be working with MS machines, then this book is worthless. OTOH, if you are going to deal with Windows 2k Server (or Advanced Server), then this is a great book. Heck, its worth a read even if you are into linux, just so you aren't an uneducated zealot who mistakenly says "But windows can't do that" when it can.
Programming is not only tech; you work with people, too. These books will help you consider the human side of your work. They are worth every penny.
Stanford, where Knuth is an professor emeritus does not require or even suggest that students read ANY of TAOCP to obtain a CS degree. Reading all of it would be difficult since it isn't completed.
Lasers Controlled Games!
Just spent 4 years in Computer Arts school. Here's the bibliophile equivalent:
I would also recommend browsing around your local bookstore's typography / design section and just picking up whatever books mirror your aesthetics, these things are subjective.
And the magazines:
The URL's:
I don't work for them, but I find the Construx Software Reading List to be an excellent guide. It has preferred and alternates for various topics. Here's a sampling:
Introduction to Algorithms, Thomas H. Cormen, et al
Code Complete, Steve McConnell
201 Principles of Software Development, Alan M. Davis
The Design of Everyday Things, Donald A. Norman
Fundamentals of Database Systems, Ramez Elmasri and Shamkant B. Navathe
Design Patterns, Erich Gamma, et al.
Software Runaways, Robert L. Glass
Wicked Problems, Righteous Solutions, Peter DeGrace and Leslie Hulet Stahl
The reading list also includes classic articles and recommended periodicals.
If you work with a Unix shell: one of the best references that I found: O'Reilly's Unix Power Tools. Some stuff may be outdated, but it's packed to the brim with useful, hands-on info and it's a very good bang for the buck.
Idempotent operation: Like MS software, wether you run it once or often, that doesn't make it any better.