Recommended reading

Being a programmer means that besides reading, designing and writing code, one should read some relevant books. These books should help you develop both technically and personally.

As a programmer I suggest you read at least two programming related books a year for fun! That means not counting the books you need to read due to some project specific language or task. I mean books you read to educate yourself on programming. Not books you are forced to read.

Programming is fun, it should be kept fun. The following is a list of books I recommend that you read. Unfortunately, Coding Drunk isn't one of these books. For that part you're on your own.

General and project related

  1. The art of Unix programming
  2. Journey of the software professional
  3. The psychology of computer programming
  4. The mythical man month
  5. Tao che thing 
  6. The tao of programming
  7. The Dilbert principle
  8. The Cathedral and the Bazaar
All of the above books are not language specific, they are people and somewhat methodology specific. I do not preach the gospel of these books being the golden calf of software development. But I believe they are essential to all aspects of software development.

Design, Architecture and Quality

  1. Design patterns: Elements of reusable object oriented software
  2. Pattern-Oriented Software Architecture (series)
  3. Compilers, principles, techniques and tools
  4. Computer Graphics: Principles and Pratice
  5. Refactoring
  6. Managing projects with GNU Make
  7. Gnu Autoconf, Automake and Libtool
  8. Extreme programming
  9. The Art of Agile
  10. The pragmatic programmer
  11. 97 Things every programmer should know
  12. 97 things every software architect should know
  13. Reading code
  14. Code quality
These books have an approach of software and build design. Attempting to assist you in designing scale able long term solutions, and helping you in changing broken software in to quality software.

Language specific

  1. The C programming language
  2. Thinking in C++ 
  3. Thinking in Java
  4. Flex and bison
  5. Mastering regular expressions
  6. Learning the bash shell
  7. Learning PHP, MySql, Javascript, HTML5
  8. Perl library
  9. PHP Book
  10. Dive into HTML5
  11. HTML5 for web designers
  12. Eloquent Javascript
  13. Hardcore Visual Basic
In general you should know more than one language. If I should suggest a language, that language would be C. The reason for this is that mostly any other major programming language like, C++, C#, Java, PHP, Javascript, all share a common set of features with C.

By learning C you'll have a great entry point into learning all the other languages in no time.I know there are aspects of object orientation that are not covered by C, to this i say: "Did you know that all member functions of your objects are defined by using structured programming?".

Embedded, System and C/C++ specific

  1. Programming Embedded systems in C
  2. Test Driven Development for Embedded C
  3. Advanced C++
  4. Effective C++
  5. More Effective C++
  6. Effective STL
  7. Programming with Posix threads
  8. The black art of 3d game programming
When developing embedded systems, computer game, platform software, dynamic libraries, etc. There are some optimisation requirements that you simply need to know about. Also, concepts like multi threading, and fixed math must be covered.

These things may not be directly projected into other languages or libraries. But if you look carefully you might see the similarities in pthreads and Java threading.

UX related

  1. Don't make me think
  2. Java 2D Graphics
  3. Build an HTML5 game
This list is far from complete! UX is the hardest field in design and programming. So be sure to know this list will grow. But do read Don't make me think!

Websites

  1. Coding horror
  2. Smashingmagazine.com
  3. Stack exchange
  4. Embeddedgurus.com
  5. Yo Linux
  6. CSS Zen Garden
  7. ioccc.org
Besides the listed books there's a few blogs and sites out there that I suggest you get familiar with. All of the above should keep you entertained for years. I'm attempting to review and rate the books on Goodreads.com. Have fun learning.

John's books

Hacking: The Art of Exploitation
it was amazing
The 480 pages in this book are the most valuable information you'll ever read. Then you realize this is just the introduction.

If you study or work in computer science read this book now. It's practical and to the point!

Plus, it puts ...


goodreads.com

No comments: