Monday, July 16, 2007

An Agile Bookshelf: 10 Must-Read Books

I did my best to select books I believe have something to offer for both those already doing agile software development and those who are curious about agile but remain skeptical. I'd like to think that even if you think "Agile" is a useless buzzword, you'll find something useful in each of these books. Quite simply, they are books that have changed the way I think about software development and how I practice it.

Without further ado (and in no particular order):

Agile Software Development: Principles, Patterns, and Practices
by Robert C. Martin

This book is more about good object-oriented design as it is about agile development practices. In fact, Martin is done with his overview of agile practices by page 84 (out of a total of 524 pages.) The rest of the book focuses on fundamental principles of OO design (using the definition of design from Jack Reeves' classic essay "What Is Software Design?".) This book confirmed my suspicions that there was a strong relationship between good OO design and agile practices. Good OO design gives your software the flexibility it needs to enable rapid response to change. Agile practices (particularly Test Driven Development) give you the feedback you need to keep your design clean... if you have the discipline to do it.

This book is best suited to developers who already have a few years of practical experience and a good understanding of the basics of object orientation. It will solidify your understanding of good OO practice, provide a few new insights, and give you a vocabulary to talk about both. I consider it a must-read for any serious professional working in an OO language.

Working Effectively With Legacy Code
by Michael Feathers

"Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts."

So begins the back cover of this book. Feathers throws out the traditional (and vague) definition of legacy code and replaces it with this one: code without tests. Without tests, you don't know whether your software is getting better or worse when you make changes. Without rapid feedback after changes, quality suffers and time is wasted in tracking down defects further down the line (when it's much more expensive).

I meet lots of people who are curious about unit testing, but don't know where to get started with their current (untested) project. Feathers explains a number of techniques to get you existing code base under tests as safely and painlessly as possible. If you're interested in developer testing but feeling overwhelmed, or just wondering how to tame a big, messy code base, this is the book for you.

Test-Driven Development: By Example
by Kent Beck

When you get into the habit of writing a test before writing the code that will make it pass, some very interesting things start to happen. Beyond the benefits you get from unit testing after coding (a growing suite of regression tests, confidence your code works, etc.) you get several new benefits: better design (because you're forced to pay attention to it earlier in the process), tests that are more readable and less fragile, and a lot less time spent manually testing and debugging.

You also start spending a lot less time writing unnecessary code, since your tests are derived from actual requirements, and you don't write code unless you need it to make a test pass. The tests act as unambiguous, executable requirements. You've connected the dots between vague requirements and working code.

This book is an an hands-on tutorial of how to develop software test-first. If you're curious about test-first development, this is a great book to get you started.

Refactoring: Improving the Design of Existing Code
by Martin Fowler

No one gets design perfect on their first guess. You will always have a firmer understanding of the needs of your design after getting feedback from reality than you did at the beginning of a project. Besides that, the needs placed on the design will almost always change over time, so even if you guessed right, your design is going to change. If you don't make an explicit effort to change it, it will degrade over time as hacks are put in place to work around the current design in order to get new features in place.

The best way to change design is to consciously evolve it over time. Keep it clean; improve it a little bit every time you add a feature, and you won't hit that dead end where it's impossible to add new features and a total rewrite is the only option. This book shows you how to do that. It explains the link between good tests and refactoring, lists the 'code smells' you should keep an eye out for that may be a sign that your design isn't optimal, and gives some advice about which refactorings are most appropriate in each situation. This book is a must-read for anyone who is interested in software maintainability.

Agile Estimating and Planning
by Mike Cohn

This book takes the guesswork out of software estimation. In it, Cohn outlines an empirical estimation process; that is, one based on evidence rather than predictions. Rather than just take a best guess at the beginning of a project (when we have the least information of any point in the project's lifetime), he uses early measurements of the work capacity (or 'velocity', in agile terms) of the team to determine the real pace at which the team can deliver working software. This gives management critical information early (allowing them to adjust scope to meet a given deadline, or adjust the deadline to meet a given scope). This puts an end to the trap customers, management, and developers so often find themselves in: not realizing until very near the deadline that you're way off schedule.

If you've ever been surprised by a schedule slip, or want more predictability in your software development process, read this book.

The Goal
by Eliyahu Goldratt

This is the business novel about The Theory of Constraints, a set of principles for continuously improving operational efficiency. Although the specific example in the book is industrial, the principles also apply to software development.

The book is a fun and easy read, but contains a number of dramatic insights into what productivity really is, how it can be related to everyday tasks, and how it can be improved. I don't want to elaborate and ruin the story for you. I'll just say this: I can practically guarantee you will discover unnoticed inefficiencies in your software development process after reading this book.

Fearless Change: Patterns for Introducing New Ideas
by Mary Lynn Manns and Linda Rising

Very few software professionals work alone. So chances are, if you have a brilliant idea about how to work more effectively (agile or otherwise), you're going to need to convince others to do it too. Usually, the higher-leverage the idea is, the more people you need to convince. Unfortunately, people often instinctively resist change, and most of us don't have a natural gift for making people more comfortable with it. That's where this book comes in.

This book is about introducing new ideas to established organizations. The first half of the book explains the nature of the task, your role as a change agent, and the challenges you'll face. The second half is a catalog of patterns you can use to face those challenges.

Introducing new ideas to an any large organization is never easy. If you've ever thought of a more effective way to work, but had trouble convincing others to adopt it, this book can help.

Waltzing with Bears: Managing Risk on Software Projects
by Tom DeMarco and Timothy Lister

Risk management is possibly the only element of management that cannot be delegated; at the very least you have to manage the risks of delegating risk management. Neglecting sound risk management principles and practices can be an extremely costly mistake. Unfortunately, risk management is done extremely poorly, or not done at all, in many development organizations.

In this book, DeMarco and Lister explain why risk management is so important, why it is often done so poorly, and how to do it effectively. It's short and conversational, but packed with valuable ideas. I recommend this to anyone who doesn't want another late, over-budget, or otherwise failed project on their resume.

Crucial Conversations
by Kerry Patterson, Joseph Grenny, Ron McMillan, Al Switzler

A 'crucial conversation' is any conversation in which opinions vary, stakes are high, and emotions run strong. They have long lasting effects. They can transform relationships, both for the good and the bad. They are the most important conversations we have, and have long-lasting effects. Unfortunately, most of us handle crucial conversations poorly.

In this book, the authors provide tools for getting better results from crucial conversations. They explain how to recognize when a conversation turns crucial, how to focus on your real goals (rather than your transient emotional goals, like your sudden urge to prove the other person wrong), how to curb your own defensive/aggressive reactions, how to share information without making others defensive, and how to create conditions of safety that allow the other party to share information freely.

Unless you work by yourself, you need these skills to work effectively. (And they're handy skills to have for your life outside work, too.)

Peopleware
by Tom DeMarco and Timothy Lister

This book questions the application of standard management theory to knowledge workers. They show how this misapplication causes many of the problems perennially faced by managers of software professionals, and outline some new management principles specific to knowledge workers, backed by years of research from the authors' work with dozens of software organizations. Even better, they point out where management is missing out on opportunities not just to avoid problems, but to actively develop highly effective, productive teams.

Peopleware is a short read full of interesting ideas. Chances are you'll strongly disagree with some of the ideas in this book, consider some of the others common sense, and pick up a half dozen new insights along the way. I'd recommend this not just to managers at all levels, but to anyone who works on a team as well.

86 comments:

patrickwilsonwelsh said...
This comment has been removed by the author.
patrickwilsonwelsh said...

Awesome list. I see a couple I have not yet read, and I have been meaning to! Cheers, --Patrick

Scott Bale said...

Great list! One of my favorite parts of Bob Martin's book is his transcript of pair-programming a bowling game with one of his colleagues. It's certainly entertaining, and encouraging, to see a seasoned vet like Uncle Bob illustrate that not even he designs the perfect system on the first try, but has to struggle and refactor and improve the software iteratively just like the rest of us mere mortals.

koundinya said...

Hi Patrick,

Good set of titles especially agile related ones. I wanted to know if there are any books which gives tips about how to understand a existing framework on the lines of 'Working Effectively With Legacy Code'. Please suggest me if u know any.

xmlblog said...

What no SICP or Programming Ruby? :P

Ryan Cooper said...

I still haven't read SICP, but that just reminded me to put it on my reading list. Thanks! :)

Mike Bria said...

Super list indeed. One other book I recently read and found incredibly useful for anyone involved in leading an organizational transition, say, for example, from [the methodology we speak not of!] to the use of agile methods is 'Managing Transitions' by William Bridges (2nd Edition). Thanks for the list. See ya in DC!

Steven "Doc" List said...

I'm delighted to see someone besides me advocating Crucial Conversations (and Crucial Confrontations) as a must-read book for agile teams.

Communication is critical, and holding difficult conversations and dealing with failed commitments, broken promises, and bad behavior are skills that most of us don't have.

My team and I are doing a book study with Crucial Confrontations, and it's showing dramatic results in the quality and nature of the team's communication.

Anonymous said...

Hey Ryan - great list!

No "Top 10 Marriotts in Miami" books I guess??

I'll take a queue from you and re-read Fearless Change to further change within my organization.

Good to see you are still blogging!

tbiz said...

Great post. I appreciate your thinking in the agile space and value your opinion. Would value your comments on books on http://agilebooks.blogspot.com

Would also like to link to your post on if that is ok with you?

Ryan Cooper said...

tbiz, you're certainly welcome to link to this post.

I'll have a look at agilebooks.

Cheers,
Ryan

Anonymous said...

Great list, but you're missing a crucial book, Refactoring to Patterns (Joshua Kerievsky)- this book does an excellent job of bringing patterns into coding, rather than relegating them just to design discussions.

home for sale costa rica said...

I love when I have the opportunity to read blogs as interesting as this. really thanks and congratulations. is of great concern to me about "An Agile Bookshelf: 10 Must-Read Books" your topic

Steve said...

vHello .. firstly I would like to send greetings to all readers. After this, I recognize the content so interesting about this article. For me personally I liked all the information. I would like to know of cases like this more often. In my personal experience I might mention a book called Generic Viagra in this book that I mentioned have very interesting topics, and also you have much to do with the main theme of this article.

Generic Cialis said...

Hey there,
Really nice job, There are many people searching about that now they will find enough sources by your tips.
Also looking forward for more tips about that

Networking solutions said...

Nice work, I would like to read your blog every day Thanks

ガバペン said...

Great tips, I would like to join your blog anyway

Alkeran said...

Really great post, Thank you for sharing This knowledge.

careprost said...

Really great post, Thank you for sharing This knowledge.Thank you very much for sharing this knowledge.this graph really conveyed the part which i was looking for.

Seo Services India said...

There are may person searching about that now they will find enough resources by your post,

Cialis Generico said...

Nice post!! Thanks for sharing!!

creditcard cash said...

It was very interesting to read.
serve as a reference

SEO Pakistan said...

Easily, the post is really the sweetest on this worthwhile topic. I fit in with your conclusions and will eagerly look forward to your approaching updates. Saying thanks will not just be sufficient, for the exceptional clarity in your writing. I will immediately grab your rss feed to stay privy of any updates.

buy xanax without prescription said...

Really you have done great job,There are may person searching about that now they will find enough resources by your post.I like this blog.

seositeden.blogspot.com said...

I think every person should glance at this.

best prices on brand viagra said...

Thanks mate... just dropped by. Will look for BIKE STN when we get to Seattle. Still in Buenos Airies.

Buy Stratterra said...

This is one of the most incredible blogs I have read in a very long time. Your blog is great for anyone who wants to understand this subject more. Great stuff; please keep it up!

Affordable Logo Design said...

It’s really amazing work, I am inspired by your work and obviously this blog is perfect.

Natural stress relief pills said...

This book is more about good object-oriented design as it is about agile development practices.

viagra online said...

Hello I enjoyed yoiur article. I think you have some good ideas and everytime i learn something new i dont think it will ever stop always new info , Thanks for all of your hard work!.

cialis reviews said...

Thank you! I didn't know they picked up on it until I saw your comment.

Prosolution erectile dysfunction gel said...

though I have a very poor knowledge about software development and management, still I have to say this is a nice blog.

viagra said...

Thank You a ton for writing such a wonderful piece of information. Keep sharing such ideas in the future as well. This was actually what I was looking for, and I am glad to came here! Thanks for sharing the such information with us.

Hersolution female stimulant gel said...

Books are man's best friend.As a human being, My best friend is BOOK.thanks for sharing the golden pieces here.From them, I only read "Goal".I love to read the other one.

Duramale anti premature ejaculation pills said...

I read The Goal by Eliyahu Goldratt .It must be read . Read will find some good knowledge . You listed good things .

NeosizeXL increase penis girth pills said...

They are books that have changed the way I think about software development and how I practice it.

Buzzurica said...

Yea!You are right.In that year the 10 Must-Readed Books wre does that you nominated.

Play Rummy said...

Thank you for sharing this kind of important information. and especially for sharing your own experience with these.

Play Rummy said...

Thank you for sharing this kind of important information. and especially for sharing your own experience with these.

Play Rummy said...

Thank you for sharing this kind of important information. and especially for sharing your own experience with these.

Play Rummy said...

Thank you for sharing this kind of important information. and especially for sharing your own experience with these.

Duramale delayed ejaculation pills said...

This book is more about good object-oriented design as it is about agile development practices.

Un26d4003 review said...

This book is about introducing new ideas to established organizations

Duramale stop quick ejaculation supplement said...

this blog is kinda awesome to me.it has given good information and some good list.thanks for sharing with us.keep posting.

Duramale stop quick ejaculation supplement said...

this blog is kinda awesome to me.it has given good information and some good list.thanks for sharing with us.keep posting.

Increase low semen volume supplement said...

This puts an end to the trap customers, management, and developers so often find themselves in: not realizing until very near the deadline that you're way off schedule.

Infrared grills review said...

After reading your article today i think im gonna make myself some time to read this books you wrote about.

Svetlana said...

Great books for sure! We have a review on some Agile books on our blog too, your readers might also like: http://www.learncomputer.com/best-agile-books/
Best regards

Svetlana said...

Sorry, didn't link the URL correctly. Here it is: http://www.learncomputer.com/best-agile-books/.

Thanks!

Svetlana

Ponca city oklahoma hotels said...

Great article post. This is the best article I have ever found on the Internet.Carry on this.

shamsrock said...

how may i get information about flights from this site.
saudi airlines

reviews online said...

how may oi get information from this site.
Internetpillsshop.com reviews

grasya said...

Please post more about that one .. This article is required in order to complete my job as I was in college, and it is the same thing in your article. Thank you, a large share.







pay per head shop said...

This is very great thing you have shared with us. Now I found enough resources by your tips about this issue, Thank you.

Anonymous said...

Patients in the United States have had access to Klonopin since 2007. http://www.starponyz.com/ - klonopin pills Klonopin is effective but may be accompanied by some unintended side effects. 5mg, 1mg, and 2mg tablets.

Anonymous said...

dating games online free http://loveepicentre.com dating in ensenada mexico

Anonymous said...

mobilpocket ebook to kindle http://audiobookscollection.co.uk/it/The-2000-2005-World-Outlook-for-Pork/p227397/ phantasmagoria ebook [url=http://audiobookscollection.co.uk/fr/Morpheus-Road-The-Light/p16779/]suze orman free ebook[/url] free stock trading techniques ebook

Anonymous said...

seirawan yasser winning chess brilliances ebook http://audiobooksworld.co.uk/de/R-Feldmann/m103549/ bittorrent ebook [url=http://audiobooksworld.co.uk/Untrue-Tales-Book-Three/p28119/]ebook monthly[/url] ebook the one hou orgasm
[url=http://audiobooksworld.co.uk/es/Bram-Stoker-A-Literary-Life/p227616/][img]http://audiobooksworld.co.uk/image/3.gif[/img][/url]

Anonymous said...

I quite like looking through a post that can make people
think. Also, thanks for allowing me to comment!



My web site antique car insurance quote

Anonymous said...

Usually I don't learn post on blogs, but I wish to say that this write-up very pressured me to check out and do it! Your writing style has been surprised me. Thank you, quite nice post.

Here is my website flagpole

Anonymous said...

[url=http://certifiedpharmacy.co.uk/products/exelon.htm][img]http://onlinemedistore.com/4.jpg[/img][/url]
freedom pharmacy and nursing homes http://certifiedpharmacy.co.uk/products/dilantin.htm canadian pharmacy mail approved minnesota [url=http://certifiedpharmacy.co.uk/catalogue/a.htm]community pharmacy madison wi[/url]
pharmacy flu shots http://certifiedpharmacy.co.uk/products/femcare.htm online pharmacy for phentermine [url=http://certifiedpharmacy.co.uk/products/zyrtec.htm]zyrtec[/url]
pharmacy gift mortar pestle white opens http://certifiedpharmacy.co.uk/products/chloroquine.htm gelonida pharmacy [url=http://certifiedpharmacy.co.uk/products/zetia.htm]westboro pharmacy ottawa[/url]
suit law cvs pharmacy slip and fall http://certifiedpharmacy.co.uk/products/tadacip.htm pharmacy symbol necklace or pendant [url=http://certifiedpharmacy.co.uk/products/metoclopramide.htm]metoclopramide[/url]

Anonymous said...

95, 000 shoes, as it has holes and other participants in manner diligence makes it traditional and groundbreaking garb. Lululemon isn't the cosmos's top luxury brands to arrive at fashion-conscious consumers. some fashion design designers may not Hold to Afford you Bang-up grip. http://kasper-suits.net/ www.kasper-suits.net/ [url=http://kasper-suits.net/]kasper suit[/url] Set your chick as you; essentially find one that is Asian mode! kasper pant suits But the lingerie trade name's annual fashion design Demo. Then if you say Hello to high gear fashion design. For more data on Renaissance fashion design check out Chuff Carry vogue on chirrup, Facebook, Tumblr, Pinterest and Instagram at @Snort Stake fashion on Twitter, Facebook, Tumblr, Pinterest and Instagram at @Huff Carry Style.

Anonymous said...

Whats up! I simply wish to give an enormous thumbs up for the great info you have got right here on
this post. I shall be coming back to your weblog for extra soon.


Here is my website ... best seo tools 2012 free

Anonymous said...

buy valium drug interactions lyrica valium - valium prices on the street

Anonymous said...

Hello! I simply wish to give a huge thumbs up for the great information
you could have here on this post. I will likely be coming back to
your weblog for more soon.

My page: how to apply adore semi permanent hair color

Anonymous said...

Hiya! I simply would like to give a huge thumbs up for the great info you’ve gotten right here on this post.

I shall be coming back to your weblog for extra soon.

Check out my web-site - catalinbread semaphore tremolo pedal

Anonymous said...

Hey! I simply want to give an enormous thumbs up
for the great information you will have here on this post.
I might be coming again to your weblog for more soon.


Stop by my webpage ... kantung semar

Anonymous said...

if Indian little ones can discover so rapidly , picture if education in India was aggressively?
pursued. Dear God, the unrealized likely is almost certainly strong enough to consider more than the planet.


My weblog - How To Cure Premature Ejaculation Naturally

Anonymous said...

Hi there! I just want to give an enormous thumbs up for the great information you might have here on this post.
I shall be coming again to your weblog for extra soon.

Also visit my web blog ... manic panic semi permanent hair color

Anonymous said...

Hello! I just want to give an enormous thumbs up for the good information you’ve gotten right here on this post.

I will likely be coming again to your blog for more soon.



Take a look at my web page; browning semi auto 22lr

Anonymous said...

Good day! I simply would like to give a huge thumbs up for the good information you will have right here on this post.
I will be coming again to your blog for extra soon.



Here is my site :: SEO

Anonymous said...

Informative article, exactly what I was looking for.



Here is my blog buy penomet

Anonymous said...

Good day! I simply want to give an enormous thumbs up for the good information you’ve got here on this post.

I might be coming back to your blog for more soon.

Feel free to surf to my page :: seoul metro line 9 express

Anonymous said...

Hi there! I simply would like to give an enormous thumbs up for the good data
you might have right here on this post. I can be coming again to your blog for extra soon.



My webpage :: does semenrx work

Anonymous said...

Hello! I simply want to give an enormous thumbs up for the nice information you’ve got right here on this post.
I will probably be coming back to your blog for more soon.


Here is my site - spring powered semi auto airsoft pistol

Anonymous said...

Good day! I just wish to give an enormous thumbs up for
the nice information you’ve right here on this post. I shall
be coming back to your weblog for more soon.


My weblog; yahoo messenger coklu oturum

Anonymous said...

Howdy! I simply want to give a huge thumbs up for the great data you have here
on this post. I will be coming again to your blog for extra soon.


Look into my weblog - big truck salvage yards in ky

Anonymous said...

Hi there! I simply want to give an enormous thumbs up for the good info you’ve here on this post.

I will be coming back to your weblog for more soon.


Feel free to visit my page semi nax作用機潬semi parking games for kids

Anonymous said...

Hey I know this is off topic but I was wondering if you knew of any widgets I could add
to my blog that automatically tweet my newest twitter
updates. I've been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.

Look at my blog post; male enhancer

Anonymous said...

That may seem odd, but in fact, it is a very effective mode for people
with some degrees of visual impairment, since when
you focus on white letters, you are focussing on light itself.
The adobe reader is what you need to download e - Book in PDF format.
You don't have to add that you are also being a cheapskate, or maybe you could take advantage of a teachable moment about sticking to a budget.

my web blog :: free pdf ebook download

Anonymous said...

Hi there everyone, it's my first go to see at this web page, and piece of writing is truly fruitful for me, keep up posting these types of content.

Also visit my page Homepage (www.hokkienkonghuay.org)

Unknown said...

It's Very Informative Blog... Thanks for Posting...
Agile

Nawazz said...

Hi This is SRK i'm suggesting you this is app Idle Miner Tycoon Mod Apk

Agra Escorts said...

Thanks for This Useful Information

Schloka Escorts Jalandhar said...

You Have Postd Really Great Content. Thanks for Sharing With Us

high profile escorts in gurgaon said...

Thanks for shareing comments