Programming Pearls by Jon Louis Bentley
An old but still revelevant book composed of technical journal articles from the 80s, Programming Pearls delivers sound engineering knowledge. This book makes you think critically. It covers such topics as efficiency, algorithms, data structures and real life problems. Some problems may not be applicable for our modern machines with inexhaustible memory, but nonetheless learning how past engineers solved confounding problems proved to be a lot of fun. A nice addition to any programmers library.