reading-list
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:List of books and screencasts related to development, user experience design, and entrepreneurship.
= Reading list
Inspired in part by Apprenticeship Patterns, I've decided to maintain a public reading list. The goals are pretty simple: 
  
* Be honest about what books I've read, partially read, and plan to read.
* Write a few sentences about each book – mostly for myself but also for anyone who might be interested.
* Only include books related to development, user experience design, and entrepreneurship.
* Include screencasts as well since that's how I do much of my learning.

Note that many of these entries were written long after having read the actual book. I apologize for any inaccuracies. Also, the completion dates are often rough approximations.

== Books

{The Little Schemer}[http://www.ccs.neu.edu/home/matthias/BTLS/]
Daniel P. Friedman & Matthias Felleisen
  
  Really good so far. Making me think how much of our work is done recursively. It's easy to overlook using high level 
  languages, like Ruby. Currently Reading.

{The Cucumber Book: Behaviour-Driven Development for Testers and Developers}[http://pragprog.com/book/hwcuc/the-cucumber-book]
Matt Wynne and Aslak Hellesøy
  
  The most interesting chapters, like AJAX testing, are still in beta. Currently reading.

{Crafting Rails Applications: Expert Practices for Everyday Rails Development}[http://pragprog.com/titles/jvrails/crafting-rails-applications]
Jose Valim
  
  Only read the first few chapters but it's already paid off by giving you a deeper insight into whats really going on
  in Rails. Currently Reading.

{The Pragmatic Programmer}[http://www.informit.com/store/product.aspx?isbn=9780201616224]
Andrew Hunt & Dave Thomas

  Seminal book loaded with practical advice for writing good software. Packed with really smart analogies (e.g. tracer 
  bullets) written in simple, clear language. I'm inclined to agree with the book's bold, opening paragraph: "This book will 
  help you become a better programmer."

{Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman}[http://oreilly.com/catalog/9780596518387]
Dave Hoover & Adewale Oshineye

  Inspirational read, especially if you've only been coding for a few years. Lots of good ideas for improving your skills 
  organized into loosely overlapping patterns. Also, peppered with thought-provoking quotes. Completed in February 2011.

{Agile Coaching}[http://pragprog.com/titles/sdcoach/agile-coaching]
Rachel Davies & Liz Sedley

  Most useful if you plan to lead a team of agile developers. If you're simply looking to better familiarize yourself with 
  Agile practices, this isn't your best choice. That's not to say you won't read about general practices. You will, but 
  this book focuses more so on coaching. Partially read in late 2009.

{The Agile Samurai: How Agile Masters Deliver Great Software}[http://www.pragprog.com/titles/jtrap/the-agile-samurai]
Jonathan Rasmusson
  
  This book makes for a good primer. It's very easy to understand and you're sure to come away with a decent understanding 
  of what Agile is all about. A slight criticism, some of the methodologies (e.g. inception deck) seemed a little contrived. 
  Overall, a good read for those looking to learn the basics of Agile. Partially read in mid 2010.

{The Entrepreneur's Guide to Customer Development}[http://www.custdev.com/]
Brant Cooper & Patrick Vlaskovits
  
  Presents a strong case that most startups fail not because they couldn't to make a product but because no one wanted to 
  use the product they made. The solution? We need to step away from our terminals and talk to potential customers. Find 
  out what people really need. Make the product they want even if it's not entirely inline with your vision. This book will 
  guide you through the process. Completed in December 2010.
  
{Arduino: A Quick-Start Guide}[http://pragprog.com/titles/msard/arduino]
Mark Schmidt

  This is an excellent primer to building robots with Arduino. One caveat. This book is written for programmers with very 
  little knowledge of electronics. This means the book assumes a basic knowledge of programming and almost no knowledge of    
  electronics. That's great for most web developers. But if you're an experienced hardware hacker, this probably isn't the 
  book for you. Partially read in mid 2010.
  
{Pragmatic Guide to Git}[http://www.pragprog.com/titles/pg_git/pragmatic-guide-to-git]
Travis Swicegood

  This makes a good reference. If you're like me you have an excellent understanding of Git – at least until you mess some-
  thing up. That's when things get tricky and you start to feel like you could wreck the entire code base. That's when this 
  book comes in handy. Partially read in mid 2010.

{O'Reilly Head First: HTML with CSS and XHTML}[http://oreilly.com/catalog/9780596101978]
Elisabeth Robson & Eric T. Freeman

  Despite the hokey cover art, this book gets the job done. I started this read with absolutely no knowledge of HTML/CSS. 
  Two weeks later I could build a (shitty) website. Note, however, that this book is probably a bit dated (e.g. I don't 
  recall any mention of HTML5/CSS3). Complete in November 2008.

{HTML5 & CSS3: Develop with Tomorrow's Standards Today}[http://pragprog.com/news/html5-and-css3-develop-with-tomorrows-standards-today]
Brian P. Hogan

  There's a lot of HTML5/CSS3 resources out there and, unfortunately, this is not the best of them. Hogan spends too many 
  pages covering concepts that hardly require any explanation at all (e.g. how to use new markup tags). Also, he goes into
  unnecessary detail when explaining how to use JavaScript to ensure support for older browsers. I suppose this could be 
  good if you're looking for a leisurely overview of the latest web standards. But ultimately for me this book failed to 
  distinguish itself. Partially read in early 2010.

{Pro JavaScript Techniques}[http://apress.com/book/view/1590597273]
John Resig

  Excellent, exhaustive overview of modern JavaScript from the creator of jQuery. Admittedly I've never read this book 
  cover-to-cover but I seem to learn something new every time I flip through it. I suspect the web would be a different 
  place today had this been published a decade earlier. Partially read in early 2010.
  
{JavaScript: The Good Parts}[http://oreilly.com/catalog/9780596517748]
Douglas Crockford

  Absolutely my favorite JavaScript book. Crockford's style is incredibly concise – almost to the point of laconic. Yes, 
  this can make it difficult to understand. But it also makes for a rewarding read since you probably had to work a little 
  bit to really understand the patterns that make functional languages very powerful (e.g. closure, lexical scoping, currying,
  etc). As Crockford says: "This is not a book for dummies...Don’t be discouraged if it takes multiple readings to get it. 
  Your efforts will be rewarded." Completed in early 2010.

{Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques}[https://www.packtpub.com/jQuery/book]
Jonathan Chaffer & Karl Swedberg

  I've heard other books (e.g. jQuery in Action) put this one to shame but it got the job done for me. I was able to finish 
  the entire book in about a week and immediately apply what I'd learned. I'd have a look at other books as well but you 
  could certainly do worse than this. Completed in late 2009.

{Head First PHP & MySQL}[http://oreilly.com/catalog/9780596006303]
Lynn Beighley & Michael Morrison

  Every profession has it's cross to bear and ours is having to code in PHP. Truth be told, I have no intention of becoming 
  an expert PHP developer but occasionally I need to hack a WordPress plugin, build a registration form, etc. This book gave 
  me the basic competency needed to tackle simple tasks using PHP.

{Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction}[http://www.learningprocessing.com/]
Dainel Shiffman

  Excellent introduction to the Processing language. The book, however, aims also to teach the basics of programming. This 
  means experienced programmers might find themselves skipping large sections which cover rudimentary programming concepts
  (assignment, data structures, etc). Still, you'll probably run across some things you didn't know about – especially if 
  you haven't spent much time programming animations or games. Note that you can also use this book to learn Processing.js 
  since the APIs are essentially interchangeable. Completed in mid 2010.

{Agile Web Development with Ruby}[http://pragprog.com/titles/rails2/agile-web-development-with-rails]
Sam Ruby, Dave Thomas, David Heinemeier Hansson

  Relatively speaking, there weren't too many basic Rails book when I was first learning. So, like everyone else, I spent a 
  good deal of time reading Agile Web. It was decent for the time; however, I suspect beginners would be better off having a 
  look at newer, easier to understand resources – such as Michael Hartl's introduction. Partially read in late 2008.

{Getting Real: The Smarter, Faster, Easier way to build a Successful Web Application}[http://gettingreal.37signals.com/]
37signals
  
  Lots of tips for how to cut out the bullshit and focus on rapidly building a solid, successful web application. At its most 
  basic, this book suggests you stop planing, start writing code, and let the details sort themselves out as you go. That's 
  pretty good advice but only, I think, if you have a very strong team. Like all 37signals books, this has a kind of bad-boy
  contrarian philosophy that could lead to disastrous software if followed by less qualified development teams. Nevertheless, 
  it's a good read. Completed early 2009.

{Rails 3 Upgrade Handbook}[http://peepcode.com/products/rails-3-upgrade-handbook-pdf]
Jeremy Anally
  
  Upgrading is not a fun process. This tiny book makes it a bit more tolerable. A must if you find yourself needing to bring 
  an old application up to speed. Completed in late 2010.

{The Rails 3 Way}[http://www.informit.com/store/product.aspx?isbn=0321601661]
Obie Fernandez
  
  I've only poked through this book a little bit and mostly as a reference tool. But given the author, it's likely to be a 
  high quality read. Nevertheless, you might consider reading Peter Cooper's much-discussed review which details some pretty 
  significant shortcomings. Partially completed in early 2011.

{Simply Rails 2}[http://www.sitepoint.com/books/rails2/]
Patrick Lenz
  
  Along with Agile Web, this book helped me grasp the basics when I was still a total novice. Of course, I wouldn't recommend
  it for current learners since it's way out of date. If you're looking to learn the basics, check out Michael Hartl's 
  introduction. Completed in early 2009.

{The RSpec Book: Behavior-Driven Development with RSpec, Cucumber, and Friends}[http://www.pragprog.com/titles/achbd/the-rspec-book]
David Chelimsky, et al.

  I can't imagine anyone really understanding RSpec until they've read this book. It's long and at times complicated, but 
  absolutely integral if you're looking to be a professional Ruby developer. Completed (after many false starts) in mid 2010. 

{Rails Test Perscriptions: Keeping Your Application Healthy}[http://pragprog.com/titles/nrtest/rails-test-prescriptions]
Noel Rappin
  
  I was initially annoyed by this book's use of Test Unit rather than RSpec. But I gradually warmed up to it. Most of the 
  topics transcend this-or-that framework, so there's much to be gained regardless of your preferred framework. And in the
  end, there's lots of good information in here. This book is intended for readers with at least some existing knowledge 
  of testing. Completed in early 2011.

{Beginning Ruby: From Novice to Professional}[http://apress.com/book/view/9781590597668]
Peter Cooper

  Best all around Ruby primer. Cooper begins teaching you programming basics, like flow control, using simple string methods.
  Later, he gives an excellent explanation of object orientation and various data structures. By the end of the book, Cooper
  touches on to fairly advanced topics, like metaprogramming. Thinking back, it's amazing how much this book covers in 
  relatively few pages. Completed in early 2010.

{Design Patterns in Ruby}[http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452]
Russ Olsen

  Olsen covers each of the classic design patterns discussing how they might be implemented with Ruby. His simple style and 
  choice of examples makes this potentially daunting read relatively easy to follow. Especially enjoyed the "In The Wild" 
  sections which show examples of each pattern being used in open source projects. Advanced developers will probably get 
  more out of this read, but there's no reason less experience developers should be discouraged. Partially completed in mid 
  2010.

{Learn to Program}[http://pine.fm/LearnToProgram/]
Chris Pine

  Absolutely the best book to get started if you have never programmed in your life. Pine gently guides you through the 
  very basics (What's a string? What's an array? What's an if statement?). Each chapter ends with a few problems which, 
  in my experience, were difficult enough to get you thinking without leaving you stumped and discouraged. This is book 
  that got me started and I try pushing it on everyone I met. Completed in late 2008.

{Metaprogramming Ruby}[http://pragprog.com/titles/ppmetr/metaprogramming-ruby]
Paolo Perrotta

  This book answers all kinds of mysteries. If you've ever wondered "How the hell is that even possible?" this book 
  probably has the answer. Dynamic finders in Rails? How to build a DSL? How RSpec works under the hood? This book sheds 
  light on the dark magic that makes Ruby so powerful. Most importantly, however, this book showed me that metaprogramming 
  really isn't that complicated. Completed in mid 2010.

{Why's Poignant Guide to Ruby}[http://mislav.uniqpath.com/poignant-guide/]
why the lucky stiff

  Part comic, part novel, part technical manual. If Kurt Vonnegut were to write a programming book, it'd probably end up 
  like this. It's an odd book but it definitely has flashes on brilliance. I'd recommend reading it in conjunction with
  Peter Cooper's "Beginning Ruby". They make a nice pair.

{Beginning Unix}[http://www.amazon.com/Beginning-Unix-Programmer-Paul-Love/dp/0764579940]
Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, Paul Weinstein
  
  I'm no Unix hacker. And for the most part, I'd like to keep it that way: focusing on programming rather than sysadmin. But
  we all need to know our way around the terminal at least a little bit. This book taught me everything I needed to know 
  (and probably more). If ssh-ing on to a server makes you nervous, you should probably just bite the bullet and read this
  book. Completed in Early 2010.
  
{Designing For The Social Web}[http://www.amazon.com/Designing-Social-Web-Joshua-Porter/dp/0321534921]
Joshua Porter

  This book's about UX design not programming. One bit that stuck with me: Porter suggests modeling software interfaces after 
  real world objects (e.g. users don't need to be told what a shopping cart is or how it works). Partially completed in early
  2010.

{Don't Make Me Think: A Common Sense Approach to Web Usability}[http://www.amazon.com/Think-Common-Sense-Approach-Usability/dp/0789723107]
Steve Krug

  If you only read one book on usability, make it this one. It's short, pragmatic, and has surprising breadth. Some of Krug's
  advice has proven indispensable. For example, Krug explains how to get people to actually read your website. Or in another
  chapter, Krug explains how to make your site simpler through tiny, incremental usability improvements. Completed in late 
  2010.

{Digging into WordPress}[http://digwp.com/]
Chris Coyier & Jeff Starr

  I don't really love WordPress but often it's the most practical choice for simple projects. Occasionally, I find myself
  looking to do something off the beaten path, and that's where this book comes in handy. In typical Chris Coyier style, the
  prose is a bit long-winded. But depending on your familiarly with the topic being discussed, that can definitely be a good 
  thing. At any rate, it's my goto WordPress reference guide. Partially completed in early 2010.
  
{20 Things I Learned About Browsers and the Web}[http://www.20thingsilearned.com/home]
Folks at Google Chrome
  
  Nice, non-technical explanation of how the web works and have evolved over time. Impressive design and HTML5 book effect.


== Screencasts

{Meet Postgresql}[http://peepcode.com/products/postgresql]
Peepcode
  
  Gives quite a bit of advanced information (e.g. generating reports). Perhaps more than you'll need if you're just 
  looking to simply convert your Rails app to Postgres. Nevertheless, I highly recommend it if you're using Heroku and 
  need to get your development environment using Postgres rather than MySQL. Watched March 6, 2011.

{Node.js Roadmap}[http://developer.yahoo.com/yui/theater/video.php?v=yuiconf2010-dahl]
Ryan Dahl

  Dahl discusses various improvements planned for Node version 0.3 (faster buffer, streams, etc). Much of the talk is pretty 
  low level, so it's not a good choice if you're unfamiliar with Node. Concludes with a cool demo of a simple chat server.
  Watched 14 February 2011.

{Project Future}[http://developer.yahoo.com/yui/theater/video.php?v=crockford-projectfuture]
Douglas Crockford
  
  Crockford discusses a wide variety of topics – urban planning, war, politics, suburbanization, righteous hatred, and Walt 
  Disney – all as part of a wonderfully discursive discussion of our future and past. If it's not obvious, this is not a 
  technical talk. Quotes I liked: "I used to think that everyone should learn to program. I don't think that anymore. 
  Programming is a talent." Watched 14 February 2011.

{Classy Web Development with Sinatra: Series}[http://pragprog.com/screencasts/v-aksinatra/classy-web-development-with-sinatra]
Adam Keys

  A good place to start if you have no experience using Sinatra. After watching this screencast, I felt confident about when
  and how to best use Sinatra. And a few months later, when making a simple registration page, I found myself reaching for 
  Sinatra rather than PHP. That's when I knew it was a worthwhile watch. Watched in late 2010.

{Meet Node.js}[http://peepcode.com/products/nodejs-i]
Geoffery Grosenbach (Peepcode)

  Another high quality screencast from the folks at Peepcode. I have to admit I didn't run out and build the next great node 
  app, but I did come away with an understanding of what Node.js is all about and why it's so exciting. Watched in mid 2010.

{Ruby 1.9: What You Need To Know}[http://envycasts.com/products/ruby-19-package-deal]
David A. Black

  A two part screencast to get you up to speed with Ruby 1.9. It doesn't cover every little detail but it does an excellent
  job hitting the main points. Watched in mid 2010.

{Crockford on JavaScript}[http://yuiblog.com/crockford/]
Douglas Crockford

  Crockford's six part public lecture series on JavaScript. The series begins with a brief history of programming languages,
  discussing the process of language design becoming progressively more abstract and powerful. But, as Crockford is careful 
  to point out, programmers have often been terrible at recognizing advancements even in their own field. Too often, the 
  current generation of coders is reluctant to embrace a new technology. So progress is stalled until a fresh batch of 
  programmers enter the field and are willing to accept new technologies precisely because they have no ties to the old way 
  of doing things. 

  Crockford argues this same tendency in part explains why JavaScript has been dismissed as a "toy language". It's functional 
  nature was out of step with the current emphasis on object oriented design. Had anyone taken a sustained look, however, 
  they'd have discovered a powerful, flexible, even superior language. As Crockford says, "JavaScript is Lisp in C's clothes". 

  More generally, Crockford is suggesting we reconsider our current commitment to object oriented languages and their reliance 
  on complicated taxonomies. Functional languages offer more powerful features, like closure, and thus more flexible design 
  patterns. And given the popularity of something like Node.js, I'm inclined to take Crockford's ideas seriously. Watched in
  mid 2010.

{Version Control Made Easy}[http://pragprog.com/screencasts/v-jwsceasy/source-control-made-easy]
Jim Weirich

  Weirich does much more than just explain how to use Git. He takes you on a tour of how version control ought to work, 
  starting from the very basics. Gradually you'll see how Git conforms to the patterns he describes, and by the end, you'll 
  have a fundamental understanding what makes Git a superior version control solution. Watched in mid 2010.

{Haml & Sass}[http://peepcode.com/products/haml-and-sass]
Geoffery Grosenbach (Peepcode)

  If you're not using HAML and SASS, you probably should be. It's pretty awesome and very simple to learn. In fact, this 
  screencast will teach you everything you need to know. Watched in early 2010.

{Advanced Active Record}[http://envycasts.com/products/advanced-activerecord]
Envycast
  
  Awesome little screen cast from the makers of New Relic. Chalked full of little tips. No matter your experience level, 
  you'll probably learn something new here. Watched in mid 2009. 

{Everyday Active Record: Series}[http://pragprog.com/screencasts/v-rbar/everyday-active-record]
Ryan Bates

  Ryan Bates is too awesome. If you watched Railscasts, these are very similar but longer, more focused, and have better 
  visualizations. Note these are intended for beginner to intermediate level developers. Watched in mid 2009.
  
{Mastering Rails Forms: Series}[http://pragprog.com/screencasts/v-rbforms/mastering-rails-forms]
Ryan Bates

  This is like a three hour Railscast episode which focuses on forms. Very high quality. Intended for beginner to 
  intermediate level developers. Watched in mid 2009.

{Phusion Passenger}[http://peepcode.com/products/phusion-passenger]
Geoffery Grosenbach (Peepcode)

  I don't really use Passenger anymore since I deploy everything to Heroku. But if you're looking to use Passenger this is a 
  good primer. Watched in mid 2009.

{Productivity for Programmers}[http://peepcode.com/products/productivity-for-programmers]
Lars Pind

  Not amazing but totally worth a watch. One bit of advice I took from this: Identify the most and least productive hours of 
  your day. Be sure to program during your productive hours and use the less productive times for other activities (exercise,
  lunch, socializing, etc). Watched in mid 2009.

{Scaling Ruby}[http://vimeo.com/2164455]
Envycast

  Honestly, this screencast discusses a bunch of problems I've never had to encounter firsthand. Still, it was watching if 
  only to broaden my horizons. Watched in mid 2009.
  
{RSpec Series: Basics, Mocks and Models, Controllers and Tools}[http://peepcode.com/]
Peepcode

  This is a set of three screencasts each discussing different aspects of the RSpec testing framework. Testing is very 
  difficult especially at first. While these screencasts definitely help, I suggest attacking the topic with a variety of 
  resources. Unless you're already familiar with similar testing frameworks, these screencasts probably won't teach you 
  everything you need to know. Watched in mid 2009.

== Things I plan to read.
{Mythical Man Month}[http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&qid=1304104002&sr=8-1]
Frederick P. Brooks

{Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages}[http://www.pragprog.com/titles/btlang/seven-languages-in-seven-weeks]
Bruce Tate

{Clean Code: A Handbook of Agile Software Craftsmanship}[http://www.informit.com/store/product.aspx?isbn=0132350882]
Robert C. Martin

{Business Model Generation}[http://www.businessmodelgeneration.com/] 
Alexander Osterwald & Yves Pigneur

{jQuery Pocket Reference}[http://oreilly.com/catalog/0636920016182]
David Flanagan

{Design Patterns: Elements of Reusable Object Oriented Software}[http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612]
Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides

== Things I plan to watch.
{Meet Rails 3: Series}[http://peepcode.com/products/meet-rails-3-i] 
Peepcode

{Play by Play: John Barnette}[http://peepcode.com/products/play-by-play-jbarnette]
Peepcode


本源码包内暂不包含可直接显示的源代码文件,请下载源码包。