Often students and colleagues ask “where do I learn that?”, or “where is a good place to start learning…” To answer those questions, this page collects a variety of materials that have been useful to me over the years as reference, as learning materials, and to keep up to date with current practices in software, electronics, and the things I’m interested in. This is the 2021 revised version.

Top 10 Technology (Computer) Books

These are the books I would suggest you get a copy of and read cover to cover. They range from hard-core code to interfacing with the end user and include some physical (meaning hardware) titles. Later on there is a selection of other helpful resources, but these are the ones you cannot do without.

  1. The Art of Readable Code The Art of Readable Code: Simple and Practical Techniques for Writing Better Code by Dustin Boswell and Trevor Foucher.

    This replaces my previous number one pick. It is up-to-date with recent languages and techniques. Though I don’t agree with all of them (specifically class member variable naming with a trailing underscore) and the sample code often violates some of their guidelines, the advice is solid. In fact, the key ideas should be written on a 3x5 card, laminated, and kept in every developers pocket! If you forget to do that, at least remember, “Code should be easy to understand.”

  2. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.

    This is a very practical, biased, and proscriptive approach. That should not dissuade you though as it is more often than not spot-on in their methods. It is a key work in the line of clean, effective, code-writing books that are often missing from curriculum and teaching of Computer Science. Not missing any longer as I’m using it for a course in the _Art and Craft of Software Development_ in the Spring of 2021!

  3. Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell.

    Code Complete should be on your book shelf and well dog-eared. It’s getting a bit dated but still holds a wealth of information for developers and it still gets a strong recommendation. For a long time this has been better than any other code-writing book I had ever read, seen, or heard about. I still say, “Buy it, read it completely.”

  4. Writing Solid Code (20th Anniversary 2nd Edition) by Steve Maguire.

    Yes it is from the dark empire, but they got to be the dark empire by writing a lot of code. Perhaps dated in using C and not Java, C%2B%2B, or Python, but still very applicable.

  5. Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition by Frederick P. Brooks.

    There is a new “anniversary edition” out, I have read the original not the new one. Beautifully explains that throwing more people at a project does not make it develop faster. Easily number three on the list. Short and sweet as well.

  6. UNIX Network Programming by W. Richard Stevens.

    This book has been split into two books in the most recent revision. I have not read the new ones, but I hear good things. My original is falling apart at the binding from overuse. The examples are wonderful starting points for any network-based system.

  7. The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition) by David Thomans and Andrew Hunt

    I’ve only given this one read and letting it sink in before I move it further up my top 10 list. I really like the ideas and how they express them in a very practical way.

  8. Design of the UNIX Operating System by Marice J. Bach, Maurice Bach.

    If UNIX, Linux, or variant is your game this is your book. Describes in detail the decisions made in development of the BSD UNIX operating system.

  9. Modern Operating Systems by Andrew S. Tanenbaum.

    Before Linux there was Minix, a more modular well-built operating system for teaching operating system courses. This book details the concepts and the source code for Minix. Perhaps my favorite applied operating system book.

  10. Compilers : Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman.

    The dragon book. You never think you will be writing a compiler, but you never know. The techniques on parsing and symbol table maintenance are applicable to many other aspects of software development.

  11. Database Systems: A Practical Approach to Design, Implementation, and Management, by Thomas M. Connolly, Carolyn E. Begg, Carolyn Begg.

    The best database book I have found. Yes even makes those Microsoft Access people happy.

Top Periodicals

My magazine subscriptions have somewhat passed in the last year, so I will not rate them like I did with books. These however are magazines I regularly read soon after they arrive in my box.

  • C/C++ Users Journal

    An old fashioned C programmers dream. Nice code examples, sometimes funny editorials. They cover a nice range of topics.

  • MSDN Magazine

    Yes Virginia, another dark empire link. For Windows development, you cannot beat the word of the evil lord. This is also an excellent magazine, regardless of the ties.

  • Java Pro (defunct)

    Great magazine for Java17 developers. Very timely articles on progress in Java17.

  • MacTech

    Old timer apple people will know this one. I especially love the Programmers Challenge each month. Yes, this one is geared to Macintosh programmers, but you should always know all the angles!

  • Software Development

    Used to be Computer Language. A very nice magazine that explores the design, management, and architecting of software rather than the development of it.

  • Oracle If you develop for Oracle this is their magazine.

    I find it is full of marketing junk, with the exception of one or two actually technical articles on managing an Oracle database.

  • WebTechniques

    Wonderful magazine for web developers. Often includes articles on Apache, Perl, and other web scripting/development topics.

  • Dr. Dobbs Journal

    They had been the cat’s meow for a long time. A few years ago, they got a little off for me and I let my subscription lapse. Perhaps it’s time to reconsider.

Other Items of Interest

So what about all the other stuff? Well there are plenty of items that did not make the top lists that are still very useful, not to mention very fun. Here is a collection of items you should investigate if they peak your interest.

  • ARRL Handbook

    No amateur radio person would be complete without knowing about the American Radio Relay League Their publications are second to none in the areas of radio (wireless) systems. This is definitely a hardware hackers item. In 2021 this became a six volume set.

  • New Hackers Dictionary or similarly called Jargon file.

    If you ever wondered where a geek term came from. This is the official source, if there can be one.

  • The Art of Computer Programming, Volumes 1-4A Boxed Set, by Donald E. Knuth.

    The _computer scientist_in me forces me to put this landmark, comprehensive set of books on the list somewhere. If it is algorithim it is Knuth.

  • Algorithms in C, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms by Robert Sedgewick

    An oldie but goody. I understand there is a Java version now.

  • Gödel, Escher, Bach: An Eternal Golden Braid by Douglas R. Hofstadter.

    O.k. this may not _technically_be a software/computer book, but the essence of and recursiveness in the book applies itself to many computer problems. Besides, if you make it through this book, and understand half of it, you will be admired by all who know it. A former top 10 book for me.

  • O’Riley Publishing

    Perhaps the number one publisher of good UNIX and practical books I know of. Especially their series on Perl.

  • Java Look and Feel Design Guidelines

    An excellent book, easily extended to programming languages other than Java, for developing graphical user interfaces.

  • The Unix Operating System by Kaare Christian, Susan Richter.

    My favorite intro to UNIX book. Used in my COS 212 UNIX Operating System classes.

  • Computer Networks and Internets (6th Edition) by Douglas E. Comer, Ralph E. Droms.

    Another networking book with a new version out. Much more detailed about the protocols and less on programming applications. Perfect for network engineers and developers needing to understand the lower layers of the network model. A former top 10 book for me.

  • Applying UML and Patterns by Craig Larman.

    I have gone mostly through the abbreviated CD/video version as well – got bored. Text has many good points but is often too dragged into details. Repetitive – as is the iterative cycle pushed in the book. Good reading and reference regardless, length just not needed.

  • Core J2Ee Patterns: Best Practices and Design Strategies

    Tells you what you will learn, learns you, tells you what you learned, then repeats three or four more times. The introduction to patterns and the pattern library are essential. There are parts in the middle I could have done without. makes me wonder which patterns Sun is pushing though Home == Factory!?

  • Art of Java Web Development: Struts, Tapestry, Commons, Velocity, JUnit, Axis, Cocoon, InternetBeans, WebWork by Neal Ford.

    An excellent diganosis of Java web development. I love his approach in leading you down the path to Model 2 and Model-View-Controller applications from an application that you think is flexible already. Every Java/JSP/Servlet web developer should give this a good read. One down fall is that it gets to web frameworks, but does not quite give enough information to use them. Regardless this book is an excellent overview.

  • Programming and Customizing PIC Microcontrollers, by Myke Predko.

    This is not only a great book on the Microchip PIC Microcontroller, it is an excellent hardware book. There are many interface circuits and general purpose ideas that are incredibly useful. This is my first reference for hardware projects.

  • Head First Design Patterns: A Brain-Friendly Guide, by Brian Bates, Kathy Sierra, and Elisabeth Robson.

    The whole Head First series seems really, really good. I’m intrigued to read the newer Head First Python: A Brain-Friendly Guide as I’m developing more in Python these days.

Final Notes

I hope that this reading list has given you some ideas and places to start researching more computer, software, and hardware topics. In the future we will refer back to parts of many of these books, magazines, and other items as backup material.

Until then, “So long and thanks for all the fish.” (Hitchhikers Guide to the Galaxy Trilogy by Douglas Adams)