Showing posts with label Agile. Show all posts
Showing posts with label Agile. Show all posts

Tuesday, November 18, 2008

Agile Reading List

Last week I attended an Agile Mini-Conference (hosted by my company) featuring Martin Fowler and Neal Ford. During the course of the day, there were many books and papers mentioned by both of these Agile luminaries. Below is the list that I compiled.

Books

Smalltalk Best Practice Patterns
Kent Beck, ISBN 013476904X

The Pragmatic Programmer: From Journeyman to Master
Andy Hunt & Dave Thomas, ISBN 020161622X

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition
Frederick P. Brooks, ISBN 0201835959

The Productive Programmer
Neal Ford, ISBN 0596519788

Pragmatic Thinking and Learning
Andy Hunt, ISBN 1934356050

Essays

No Silver Bullet: Essence and Accidents of Software Engineering
Frederick P. Brooks, Jr.

Code as Design: Three Essays by Jack W. Reeves
Jack W. Reeves

Tuesday, April 1, 2008

Dependency Injection/Inversion Overview

James Kovacs' article, Tame Your Software Dependencies for More Flexible Apps in the March 2008 issue of MSDN Magazine is a great read. If you have heard of either Dependency Injection (DI) or Inversion of Control (IoC) and wanted to know more about what they are and how they work, then I would recommend that you check out the article; as James gives a very good explanation of both.

Thursday, November 15, 2007

Writing Testable Code Is About Managing Complexity

 

Writing Testable Code Is About Managing Complexity is a recent blog post by Phil Haack. He provides some good insight into the benefits of writing testable code. My group is getting ready to kick off a project using Agile practices and writing testable code is going to be key to our success, so this was very timely information for me. Phil summarizes with the results (or side effects) below. Please check out his article for more details.

  1. A nice suite of regression tests.
  2. Well separated code that helps manage complexity.
  3. Well separated code that helps enable concurrent development.