In his book "The Productive Programmer" Neal Ford suggests several ways to become a more productive programmer.
The book is divided in two parts. The first part titled "Mechanics" describes which tools can be used to improve your productivity. It starts with suggestions for every day tasks like launching applications quickly, automating file related tasks with build tools and ends with a more philosophical chapter about canonicality.
The second part titled "Practice" describes how you can change your daily development practice to become more productive. It covers well known practices like test driven design, static analysis, meta programming and polyglot programming. Additionally he discusses more unusual practices like "Question Authorities" and "Good Citizenship".
In his conclusion he states that the most important practice to become more productive is to be aware of your own practices and the underlying patterns. And to keep on reviewing and improving them.
The book is easy to read and contains a lot of good ideas on how to improve your productivity. Neal quite often refers to "The Pragmatic Programmer" book by Andy Hunt and Dave Thomas. Compared to this book he mainly provides more concrete advices and less philosophical ones.
Overall I think this book is a good read, although it provides not a lot of new insights for me. I like his ideas about typing more and using the GUI less, especially since I'm a visually oriented person and am always impressed by colleagues who seem to use the shell much more often than I do. He sure is right when saying that it's vital for a programmer to know his tools. I especially like his metaphor of the woodworker, who often uses throw away tools to do his daily work. And I think he's right in suggesting programmers to create more throw away tools to become more productive.
But on the other hand I quite often think that impressing people by how quickly one can solve a boring task is most important for consultants. Although I'm not a consultant, I think that I should improve my typing skills and my use of the shell. But improving in this area won't help me to become a better problem solver, I just will be able to solve some problems a bit faster.
The Productive Programmer