Posts Tagged ‘books’
When I was an undergraduate, it bothered me that I never finished reading any of my math textbooks. But in graduate school, I noticed that I had learned much of the content of some of those unfinished chapters, and the content that was still mysterious seemed far less central to the subject than it had previously.
Using a textbook or a technical book is like using a highway: To get where you want to go, you need to find the right exit. The end isn’t a real goal, and it likely isn’t that interesting, anyway.
How do you know when to exit? Know where you want to go. If your goals are very specific, this is trivial, and you can use the book as a reference, rather than reading. But if you are learning completely new technologies or concepts, it is sometimes hard to know where exactly you hope to go, but I find the following techniques useful:
- Read from a combination of sources: one or two books, along with tutorials and blog posts.
- Combine the book learning with a toy project.
- Pay attention to your progress — finding the material too difficult could be an indication that this isn’t what you most need to learn right now, or that it is poorly written.
- Talk (you know, face-to-face) with others that have similar goals
If you start with a goal, and continue to adjust your course appropriately, you make much progress with books, they will often take you within miles of your destination. But if you confuse the books with the goal, you can go the entire length of I-95 without seeing anything more interesting than some roadside attractions.
If you write Java as part of you job, you need to read this book. If you are learning Java, and hope to write Java as part of a future job, you need to read this book. So for many developers, the question of whether you should read this book is answered very quickly. The most important questions that remain are when to read Effective Java, and why to read Effective Java.
This is not a book to read to learn Java, Bloch assumes throughout that you have a familiarity with the language. It is also not a book to help you take the next steps after learning core Java, such as learning popular APIs such as JDBC, Java EE, or Swing. Effective Java is unlikely to equip you to accomplish any programmatic goal in Java that you were unable to code before reading it.
If you are overly pragmatic, it may seem that this book meets no real need. But if you have learned several languages, the purpose of this book, and the importance of books like this, is obvious. Read the rest of this entry »
This is an unusual book. The first thing to know is that it does not contain chapters that are made up of paragraphs. It is a list of problems. The only way to gain anything from this book is to do the problems. Sure you may look at the first few and think you get the idea, and feel like you are doing fine just by reading the problems and solutions and thinking about them. But it won’t be long until you realize that you have no idea what is going on, and worse, you won’t know where you lost the trail.
So don’t be lazy, if you are going to read this book, set up an interpreter, and start coding.
The second thing to know about this book is that it does not attempt to teach you the Scheme programming language. Which is good news, because you don’t really want to be a Scheme programmer. What this book does teach, however, is of interest to every programmer. Read the rest of this entry »
I read Clean Code by Robert Martin (Uncle Bob), and it was well worth it. In about 400 pages, Uncle Bob gives real motivation for writing clean code, explains, in careful detail what clean code means for all of the regular parts of a typical system, and then applies the principals discussed on several substantial chunks of real-life code.
Martin begins with motivation to strive to write clean code. That may seem unnecessary, but it serves several good purposes, even for those that were willing to buy a book entitled “Clean Code.” First of all, in Martin’s engaging style , you become excited about the possibility of writing better code. More importantly, in my view, is that rather than appealing to prideful notions of craftsmanship or art, he makes it clear that clean code is about useful, maintainable, flexible software. That it is about reducing the cost of software, and preventing, reducing, and fighting the software rot and decay that often surrounds us. Read the rest of this entry »
When programmers talk about the timeless books that will always be relevant, certain classics always come up: The Mythical Man Month, Structure and Interpretation of Computer Programs, Design Patterns, Refactoring, Code Complete, and others. Code is never mentioned in that group, and for good reason. This is not a book about programming, and it is not a book about software development.
Nevertheless, it is a book of importance to software developers. Code is a book about how computers are built to understand data and logic, and how the combination of data and logic allows for automation and computation. Read the rest of this entry »
If you are want to learn Python, and you like to learn from books, there is a clear consensus: Dive into Python. It’s available free online, so I gave it a try.
I didn’t like it. I felt bad for not liking it, after all, everyone agrees it’s a great book. Mark Pilgrim takes an interesting approach, diving in with real-world examples of what can be done with Python, rather than the typical approach of introducing the language systematically. But it just didn’t work for me. I found myself unmotivated by the examples, and bothered by the fundamental questions that hadn’t been answered. I had to look elsewhere.
Finding a reliable suggestion for an introductory Python text that isn’t Dive into Python isn’t easy, but John Cook recommended Core Python Programming(CPP) by Wesley Chun. I’ve agreed with John enough times that when it was time to actually learn Python, I bought Chun’s book. Read the rest of this entry »
Every programmer should read The Little Schemer (pdf) at some point. It doesn’t take long to read, and I hope to provide a review of it soon. For now, I hope to explain how to get started practically with Scheme, as used in this book, since these details are hard to find.