Slashdot Mirror


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.

"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:

Design:
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.

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?

40 of 373 comments (clear)

  1. The one required book for programmers by cheebie · · Score: 5, Informative

    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.

  2. BofH books. by Telastyn · · Score: 5, Funny

    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).

    1. Re:BofH books. by 4of12 · · Score: 4, Insightful

      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).

      My thoughts exactly.

      Find a crusty old 1995 vintage computer at a garage sale and force yourself to bring it to life where you can browse the internet, write a letter, print it out, and play your favorite CD. For good measure, read some files off a floppy created with an entirely different platform and application.

      At that point you will have an inestimable education on what most everyday IT is really all about.

      --
      "Provided by the management for your protection."
    2. Re:BofH books. by Dr+Caleb · · Score: 3
      Hence the are no books on the "IT Industry". There are books on technology, but they have only a passing inference at the industry.

      Much like reading books on cars and how to fix them doesn't make you a mechanic. You gotta get greasy!

      --
      "History doesn't repeat itself, but it does rhyme." Mark Twain
  3. Thinking in Java by rmjiv · · Score: 5, Informative

    For the Java book, I recommend Thinking in Java

    --
    She came sliding down the alleyway like butter dripping off of a hot biscuit.
    1. Re:Thinking in Java by tdrury · · Score: 5, Informative

      I suppose you could buy Thinking in Java, but I'd prefer to download it for free

      -tim

  4. Non-Strict Languages by jcast · · Score: 3, Insightful

    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
    1. Re:Non-Strict Languages by jcast · · Score: 3, Informative

      Btw., The Haskell School of Expression by Dr. Hudak is an excellent choice.

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  5. I would add by spurious+cowherd · · Score: 5, Insightful
    --

    Time flies like an arrow, fruit flies like a banana.

    1. Re:I would add by debaere · · Score: 3, Insightful

      I whole heartedly agree with The Practice Of System and Network Administration. Its not *nix or MS centric, and full of great advice on anything you want or need to know.

      The sections on time management is saving my sanity as we speak :)

      If you are a System Admin, or want to be one, run, don't walk, to your nearest bookstore/site and get this book...

      what are you still doing here?

      --

      DOS is dead, and no one cares...
      If there's a Bourne Shell, I'll see you there
  6. Mandatory reading... by gblues · · Score: 3, Informative

    ... for anyone thinking of entering the IT industry as a life-long career:

    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

  7. more abstraction, please by L.+VeGas · · Score: 5, Informative

    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.

  8. Reading books is better by AdamInParadise · · Score: 3, Insightful

    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.
  9. Networking by Daeslin · · Score: 4, Informative

    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
  10. RDBMS Section by stoolpigeon · · Score: 3, Informative

    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?
  11. Re:Slashvertisements by L.+VeGas · · Score: 3, Insightful

    I guess blatent referrer links in a story to a vendor we are all supposedly boycotting

    Gee, am I out of the loop. I didn't get the official authorized vendor list. Guess you're cooler than me.

  12. Depends on your definition of "IT" by Junks+Jerzey · · Score: 3, Insightful

    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.

  13. My Bookshelf by Hal_9000@!!!@ · · Score: 5, Informative

    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.
    1. Re:My Bookshelf by haus · · Score: 3, Informative

      The Purple Book is: UNIX System Administration Handbook (3rd Edition) by Evi Nemeth, et al. And it is a very good read.

  14. W. Richard Stevens: Tha Man by wilhelm · · Score: 3, Informative

    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.

  15. Essentials by evilpenguin · · Score: 3, Informative

    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.

  16. Knuth is your friend. by rice_burners_suck · · Score: 3, Informative

    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.

  17. "Learning Python" better than "Programming Python" by skunkeh · · Score: 4, Informative

    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.

  18. Steve McConnell by WasterDave · · Score: 3, Interesting

    "Rapid Development", should have been called "preventing project management fsck ups for dummies".

    Dave

    --
    I write a blog now, you should be afraid.
  19. How about free books available online? by skunkeh · · Score: 5, Informative

    Let's turn this topic around a bit and collect links to free books that can be found on the net. My favourites are:

    There have to be more out there - post links below.
    1. Re:How about free books available online? by skunkeh · · Score: 3, Informative
      Found another one:
  20. Programming Pearls by anonymous_wombat · · Score: 3, Insightful

    The book Programming Pearls by Jon Bently is an excellent book on programming practices, interesting to read, not too heavy.

  21. Refactoring by djKing · · Score: 5, Insightful
    Refactoring: Improving the Design of Existing Code by Marting Fowler shows you how to take bad code and turn it into good code, and there is a lot of bad code out there.

    -Peace
    Dave

    --
    Free as in "the Truth shall set you..."
  22. Pragmatic Programmer by wdr1 · · Score: 4, Informative

    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
  23. Re:This guy... by rnturn · · Score: 4, Funny

    Nice try, Bill. We know that's you.

    --
    CUR ALLOC 20195.....5804M
  24. Abelson and Sussman by chriscrick · · Score: 4, Insightful

    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

  25. Accidental Empires by Robert X. Cringely by madmancarman · · Score: 4, Interesting
    While Cringely is a geek favorite here at Slashdot, I really got a lot out of his take on the whole computer industry, "Accidental Empires", on which the documentary "Triumph of the Nerds" is based and from which the made-for-tv-movie Pirates of Silicon Valley is loosely derived. It attemps to answer a lot of "why the hell did they do that?" questions that pop up whenever you deal with some strange aspect related to computers, and it really gives a good overview for how the industry developed to where it is today. I've made it an option for my IT students to read during the semester, and they usually get a lot out of it (and they're in high school). The only major weakness the book has is that stops right before the Internet revolution of the late 90's, so you'll have to find something else to pick up the slack. But when it comes to covering the industry from its earliest days through the early 90's, it's a great book.

    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
  26. IT books of general interest by q-soe · · Score: 4, Informative
    For those wanting some history of IT reading here are some books for you

    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....
  27. IT book available ONLINE by Felipe+Hoffa · · Score: 4, Interesting

    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

  28. Really? by Anonymous+Brave+Guy · · Score: 5, Insightful

    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.
  29. Modern C++ Design by refactored · · Score: 5, Informative
    "Modern C++ Design - Generic Programming and Design Patterns Applied" by Andrei Alexandrescu

    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.

  30. John Lakos: Large Scale C++ Software Design by goingware · · Score: 3, Informative
    I strongly recommend John Lakos' Large Scale C++ Software Design to any programmer, not just C++ programmers. Here are the Amazon and Association of C and C++ Users Book Review pages about 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
  31. Please Link to ACCU Book Reviews Section by goingware · · Score: 5, Informative
    Everyone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.

    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:

    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
  32. some reviews by danny · · Score: 3, Interesting
    You might want to check out the computing, networks, computer science, and Internet sections of my collected book reviews. Some IT books that make my "best books" list include: Danny.
    --
    I have written over 900 book reviews