Junior year is in full swing and I’ve been starting to think seriously about what I want to do once I finish college in two years time. I’m pretty certain that I want to go on to grad school, and work on a serious research project. However, I also want to be a proficient programmer by that time. I may not be an expert, but I want to be good enough to be able to hold my own and would like to complete 2-3 large projects of my own. While I certainly need to be writing actual code, I’ve always believed that you can’t become a top notch programmer without reading widely about the software industry and people in it. Considering that I have three engineering classes as well as two others, I might not have enough time to do much reading over the next semester. But I have just over three months before I need to start buckling down for finals, so here’s a list of one book a month that I plan to read cover to cover and hopefully learn something useful from
This is a book about code. It contains 33 chapters and in each one a master programmer walks though an elegant solution to a programming problem. The problems range from a small regular expression matcher to debuggers and MapReduce. It covers a wide variety of programming languages and approaches all focusing on the elusive goal of elegance and simplicity. It’s worth a read, but definitely requires some patience especially if you are unfamiliar with the languages and problem domains that are being talked about. It’s a fairly large book, but that’s offset by the high quality of the writing in it. Any competent programmer should be able to follow what the numerous authors are saying without much difficulty. I’m on my third chapter at the moment, and at just over one chapter a day, I should get in done in a month.
Coders at work
This is a new book which will be publicly available later this month. It’s written by Peter Seibel, the author of Practical Common Lisp (which I recommend for anyone starting Lisp). This is a series of interviews with 15 all time programming legends. Among them are names like Donald Knuth and Jamie Zawinski: people widely considered to be experts in their respective areas. I’ve preordered it from Amazon and while I eagerly await my copy there are some excerpts on the book website and a good review up on Slashdot. I’ve always been a fan of biographies and autobiographies, especially when it involves people I really look up to. This book won’t teach me how to be as good as the programmers interviewed, but it might give me some useful ideas on how to go about improving myself. This book is actually bigger than Beautiful Code by page count, but I think it will be easier reading since it should be less technical than Beautiful Code. I won’t be able to tell for certain until I actually get the book, so I’ll keep this on hand until October.
Code Complete 2
There are lots of books out on there design principles and techniques, design patterns, agile development, so on and so forth. There seem to be much fewer books on how to simply sit down and write code. This is one of them. I’ve read bits and pieces of this before and found it very helpful and insightful. Sometimes it might seem like what’s being said is fairly commonsense stuff, but it’s stuff we often tend to forget while pumping out the code. If you’re a serious coder looking to improve your programming skills, this is a good starting point. This is a quite a large book with lots of good material so it will be a challenge to finish in the month-long-span I’ve set for it, but I’ll certainly give it my best shot. Because of the size I might need to devote more than a month to it. I plan on starting it in November and maybe continuing till finals in mid-December.
Once again, I’d like to reiterate that I don’t expect any of these books by themselves (or even all together) to magically make me a better programmer. Rather I’m going to view them as ways to learn directly from the masters of the field and use that to guide my own programming training.