Agile Principles, Patterns, and Practices in C# and over one million other books are available for Amazon Kindle. Learn more



or
Sign in to turn on 1-Click ordering
Sell Us Your Item
For a $8.70 Gift Card
Trade in
More Buying Choices
Have one to sell? Sell yours here
Start reading Agile Principles, Patterns, and Practices in C# on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Sorry, this item is not available in
Image not available for
Color:
Image not available

To view this video download Flash Player

 

Agile Principles, Patterns, and Practices in C# [Hardcover]

Robert C. Martin , Micah Martin
4.4 out of 5 stars  See all reviews (31 customer reviews)

List Price: $69.99
Price: $48.68 & FREE Shipping. Details
You Save: $21.31 (30%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Want it Tuesday, May 28? Choose One-Day Shipping at checkout. Details
Free Two-Day Shipping for College Students with Amazon Student

Formats

Amazon Price New from Used from
Kindle Edition $30.24  
Hardcover $48.68  
Paperback --  
Rent Your Textbooks
Save up to 70% when you rent your textbooks on Amazon. Keep your textbook rentals for a semester and rental return shipping is free.

Book Description

July 30, 2006 0131857258 978-0131857254 1

With the award-winning book Agile Software Development: Principles, Patterns, and Practices, Robert C. Martin helped bring Agile principles to tens of thousands of Java and C++ programmers. Now .NET programmers have a definitive guide to agile methods with this completely updated volume from Robert C. Martin and Micah Martin, Agile Principles, Patterns, and Practices in C#.

This book presents a series of case studies illustrating the fundamentals of Agile development and Agile design, and moves quickly from UML models to real C# code. The introductory chapters lay out the basics of the agile movement, while the later chapters show proven techniques in action. The book includes many source code examples that are also available for download from the authors’ Web site.

Readers will come away from this book understanding

  • Agile principles, and the fourteen practices of Extreme Programming
  • Spiking, splitting, velocity, and planning iterations and releases
  • Test-driven development, test-first design, and acceptance testing
  • Refactoring with unit testing
  • Pair programming
  • Agile design and design smells
  • The five types of UML diagrams and how to use them effectively
  • Object-oriented package design and design patterns
  • How to put all of it together for a real-world project

Whether you are a C# programmer or a Visual Basic or Java programmer learning C#, a software development manager, or a business analyst, Agile Principles, Patterns, and Practices in C# is the first book you should read to understand agile software and how it applies to programming in the .NET Framework.




Frequently Bought Together

Agile Principles, Patterns, and Practices in C# + Clean Code: A Handbook of Agile Software Craftsmanship + The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin Series)
Price for all three: $115.29

Buy the selected items together


Editorial Reviews

About the Author

Robert C. Martin has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor, Inc., a team of experienced consultants who mentor their clients in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming.

Micah Martin works with Object Mentor as a developer, consultant, and mentor on topics ranging from object-oriented principles and patterns to agile software development practices. Micah is the cocreator and lead developer of the open source FitNesse project. He is also a published author and speaks regularly at conferences.



Excerpt. © Reprinted by permission. All rights reserved.

But Bob, you said you’d be done with the book last year.
—Claudia Frers, UML World, 1999

Bob’s Introduction

It’s been seven years since Claudia’s justifiable complaint, but I think I have made up for it. Publishing three books—one book every other year while running a consulting company and doing a lot of coding, training, mentoring, speaking, and writing articles, columns, and blogs—not to mention raising a family and enjoying a grandfamily can be quite a challenge. But I love it.

Agile development is the ability to develop software quickly, in the face of rapidly changing requirements. In order to achieve this agility, we need to use practices that provide the necessary discipline and feedback. We need to employ design principles that keep our software flexible and maintainable, and we need to know the design patterns that have been shown to balance those principles for specific problems. This book is an attempt to knit all three of these concepts together into a functioning whole.

This book describes those principles, patterns, and practices and then demonstrates how they are applied by walking through dozens of different case studies. More important, the case studies are not presented as complete works. Rather, they are designs in progress. You will see the designers make mistakes and observe how they identify them as mistakes and eventually correct them. You will see the designers puzzle over conundrums and worry over ambiguities and trade-offs. You will see the act of design.

Micah’s Introduction

In early 2005, I was on a small development team that began work on a .NET application to be written in C#. Using agile development practices was mandatory, which is one of the reasons I was involved. Although I had used C# before, most of my programming experience was in Java and C++. I didn’t think that working in .NET would make much difference; in the end it didn’t.

Two months into the project, we made our first release. It was a partial release containing only a fraction of all the intended features, but it was enough to be usable. And use it they did. After only two months, the organization was reaping the benefits of our development. Management was so thrilled that it asked to hire more people so we could start more projects.

Having participated in the agile community for years, I knew a good many agile developers who could help us. I called them all and asked them to join us. Not one of my agile colleagues ended up joining our team. Why not? Perhaps the most overwhelming reason was the fact that we were developing in .NET.

Almost all agile developers have a background in Java, C++, or Smalltalk. But agile .NET programmers are almost unheard of. Perhaps my friends didn’t take me seriously when I said we were doing agile software development with .NET, or maybe they were avoiding association with .NET. This was a significant problem. It was not the first evidence I’d seen of this problem, either.

Teaching week-long courses on various software topics allows me to meet a wide cross-section of developers from around the world. Many of the students I’ve instructed were .NET programmers, and many were Java or C++ programmers. There’s no gentle way to put this: In my experience, .NET programmers are often weaker than Java and C++ programmers. Obviously, this is not always the case. However, after observing it over and over in my classes, I can come to no other conclusion: .NET programmers tend to be weaker in agile software practices, design patterns, design principles, and so on. Often in my classes, the .NET programmers had never heard of these fundamental concepts. This has to change.

The first edition of this book, Agile Software Development: Principles, Patterns, and Practices, by Robert C. Martin, my father, was published in late 2002 and won the 2003 Jolt Award. It is a great book, celebrated by many developers. Unfortunately, it had little impact on the .NET community. Despite the fact that the content of the book is equally relevant to .NET, few .NET programmers have read it.

It is my hope that this .NET edition acts as a bridge between .NET and the rest of the developer community. I hope that programmers will read it and see that there are better ways to build software. I hope that they will begin using better software practices, creating better designs, and raising the bar for quality in .NET applications. I hope that .NET programmers will not be weaker than other programmers. I hope that .NET programmers achieve a new status in the software community such that Java developers are proud to join a .NET team.

Throughout the process of putting this book together, I struggled many times with the concept of my name being on the cover of a .NET book. I questioned whether I wanted my name associated with .NET and all the negative connotations that seemed to come with it. Yet I can no longer deny it. I am a .NET programmer. No! An agile .NET programmer. And I’m proud of it.

About This Book

A Little History

In the early 1990s I (Bob) wrote Designing Object-Oriented C++ Applications Using the Booch Method. That book was something of a magnum opus for me, and I was very pleased with the result and the sales.

The book you are reading started out as a second edition to Designing, but that’s not how it turned out. Very little remains of the original book in these pages. Little more than three chapters have been carried through, and those have been massively changed. The intent, spirit, and many of the lessons of the book are the same. In the decade since Designing came out, I’ve learned a tremendous amount about software design and development. This book reflects that learning.

What a decade! Designing came out just before the Internet collided with the planet. Since then, the number of acronyms we have to deal with has doubled. We have EJB, RMI, J2EE, XML, XSLT, HTML, ASP, JSP, ZOPE, SOAP, C#, and .NET, as well as Design Patterns, Java, Servelets, and Application Servers. Let me tell you, it’s been difficult to keep the chapters of this book current.

The Booch connection In 1997, I was approached by Grady Booch to help write the third edition of his amazingly successful Object-Oriented Analysis and Design with Applications. I had worked with Grady before on some projects and had been an avid reader and contributor to his various works, including UML. So I accepted with glee and asked my good friend Jim Newkirk to help out with the project.

Over the next two years, Jim and I wrote a number of chapters for the Booch book. Of course, that effort meant that I could not put as much effort into this book as I would have liked, but I felt that the Booch book was worth contributing to. Besides, at the time, this book was simply a second edition of Designing, and my heart wasn’t in it. If I was going to say something, I wanted to say something new and different.

Unfortunately, the Booch book was not to be. It is difficult to find the time to write a book during normal times. During the heady days of the dot-com bubble, it was nearly impossible. Grady got ever busier with Rational and with new ventures such as Catapulse. So the project stalled. Eventually, I asked Grady and Addison-Wesley whether I could have the chapters that Jim and I wrote to include in this book. They graciously agreed. So several of the case study and UML chapters came from that source.

The impact of Extreme Programming In late 1998, XP reared its head and challenged our cherished beliefs about software development. Should we create lots of UML diagrams prior to writing any code? Or should we eschew any kind of diagrams and simply write lots of code? Should we write lots of narrative documents that describe our design? Or should we try to make the code narrative and expressive so that ancillary documents aren’t necessary? Should we program in pairs? Should we write tests before we write production code? What should we do?

This revolution came at an opportune time. During the middle to late 1990s, Object Mentor was helping quite a few companies with OO design and project management issues. We were helping companies get their projects done. As part of that help, we instilled into the teams our own attitudes and practices. Unfortunately, these attitudes and practices were not written down. Rather, they were an oral tradition that was passed from us to our customers.

By 1998, I realized that we needed to write down our process and practices so that we could better articulate them to our customers. So I wrote many articles about process in the C++ Report. 1 These articles missed the mark. They were informative and in some cases entertaining, but instead of codifying the practices and attitudes that we used in our projects, they were an unwitting compromise to values that had been imposed on me for decades. It took Kent Beck to show me that.

The Beck connection In late 1998, at the same time I was fretting over codifying the Object Mentor process, I ran into Kent’s work on Extreme Programming (XP). The work was scattered through Ward Cunningham’s wiki 2 and was mixed with the writings of many others. Still, with some work and diligence, I was able to get the gist of what Kent was talking about. I was intrigued but skeptical. Some of the things that XP talked about were exactly on target for my concept of a development process. Other things, however, such as the lack of an articulated design step, left me puzzled.

Kent and I could not have come from more disparate software circumstances. He was a recognized Smalltalk consultant, and I was a recognized C++ consultant. Those two worlds found it difficult to communicate with each other. There was an almost Kuhnian3 paradigm gulf be...


Product Details

  • Hardcover: 768 pages
  • Publisher: Prentice Hall; 1 edition (July 30, 2006)
  • Language: English
  • ISBN-10: 0131857258
  • ISBN-13: 978-0131857254
  • Product Dimensions: 6.8 x 1.6 x 9.4 inches
  • Shipping Weight: 2.8 pounds (View shipping rates and policies)
  • Average Customer Review: 4.4 out of 5 stars  See all reviews (31 customer reviews)
  • Amazon Best Sellers Rank: #104,047 in Books (See Top 100 in Books)

More About the Author

Discover books, learn about writers, read author blogs, and more.

Customer Reviews

Agile practices and design patterns written in a clear, concise way. Luke Terheyden  |  17 reviewers made a similar statement
I would highly recommend the book for all C# developers. J. Mariadassou  |  5 reviewers made a similar statement
Most Helpful Customer Reviews
46 of 53 people found the following review helpful
4.0 out of 5 stars Well done, with one exception April 19, 2007
Format:Hardcover|Amazon Verified Purchase
First, this book is well written and presents information in a constructive manner. It is well thought out, and is not just another C#/OOP/XP book.

Now for the bad news. One unnecessary oversight is the use of casts and "object" in some examples. Any author writing any C# book since 2005 must know that these idioms should no longer be encouraged. It is unacceptable for a book published in February 2007 to possess this flaw.

Generics, used in moderation, result in cleaner code that is also type-safe, and usually performs better due to the absence of boxing/unboxing. The authors should consider posting alternative examples that favor Generic types and collections on their errata web page. If you purchase this book, you would be well-advised to review the examples with a bias against the use of casts and the word "object".

To be entirely frank, I don't see how other reviewers can justify a five star rating.
Was this review helpful to you?
21 of 24 people found the following review helpful
5.0 out of 5 stars Critical work on design and development December 12, 2006
Format:Hardcover
This book is amazingly great from start to finish. All the basics of good agile development are covered clearly and sensibly in the first section: what agile is, how to go about it, why testing and planning are so critical, and where refactoring fits in all of this. Design and general patters are hit in the second section, again in a clear, concise, and sensible fashion -- and with common sense thrown in.

The final two sections cover a real-world case study implementation of a payroll system. Here the rubber meets the asphalt: walking through use cases, building transactions based on smartly-chosen patterns, discussion of what patterns make sense where and why, implementation, packaging, and evolution.

I found myself shaking my head in wonder as I read this book and stumbled across one nugget of gold after another. Some bits of goodness pop out in the middle of nowhere simply because the authors are so well-versed in their domain that they're letting fly wisdom even when discussing other topics. An example of this is in the XP pairing session episode where some discussion of increment operator side effects is tossed in the middle of another discussion stream. You read that section once and pass over it, only to do a head check, bounce back and re-read it while nodding your head and saying "Yeah, that's absolutely right and I might not have caught that otherwise."

Another bit of greatness is the chapter on UML. The authors are emphatic about keeping UML tightly in check and using it only in specific cases where it makes clear sense. Mountains of UML diagrams are not the answer; the authors show where a few concise diagrams make perfect sense.

More goodness can be found throughout the book in the gems relating to any number of design issues such as a small example of a problem the authors put forth to students of their various design/patterns courses: build a coffee maker. The authors go through the most common result they see and show the specific problem areas of that solution -- and then show a solution that is amazing in its simplicity, elegance, and maintainability.

This book is a critical read for folks at any level of experience. I'm going to do my best to make sure it gets on the required reading list for developers at my company.
Comment | 
Was this review helpful to you?
11 of 12 people found the following review helpful
5.0 out of 5 stars Agile Methods and Practices clearly explained October 31, 2006
Format:Hardcover|Amazon Verified Purchase
This book really covers two topics: Agile management methods and development practices used by agile team.

Section I, the description of the Agile methology is brief. This is obviously the intent of the author and agile is meant to be documenation-light. This section only consists of 100 pages. It's a quick read giving you everything you need to know to implement the Agile methodology in your team.

Section II, is titled "Agile Design". These chapters are high-level design principles with low-level examples and a thorough treatment of UML. This should have been split into two sections. This first, would be most useful for a beginner/intermediate developer to take their skills to the next level. The second part, is required reading/knowledge for any developer who needs to work with a team or who needs to plan a complex application.

Section III is presented as a case study. Under the guise of a desiging a payroll system, the authors present the most popular design patterns. This section depends on the previous sections and is a great example of the thought process of agile developers.

The book is well written and easy to read for intermediate to advanced developers. Beginning developers would stuggle with some sections. However, all levels would beneift from reading this book.
Comment | 
Was this review helpful to you?
Most Recent Customer Reviews
4.0 out of 5 stars A must to read, not really a must to have
If you ever read anything from "Uncle bob" you may probably recognize a lot of his talking in this book. Read more
Published 2 months ago by Raffaele Garofalo
5.0 out of 5 stars What we need to know about development
Even if you don't work in an Agile development team, implementing any part of it is better than not at all. This has been a career changing read. Read more
Published 2 months ago by Kent G
5.0 out of 5 stars Clear and interesting
It was very useful and enjoying to tea read this book.
A lot of very good examples.
A lot of personal stories. Read more
Published 3 months ago by Pen Name
5.0 out of 5 stars EVERY C# Developer HAS to read this book
If you are a C# developer, and you are not intimately familiar with the principles in this book, the rest of the world is leaving you behind! Read more
Published 5 months ago by Tyler L Jones
1.0 out of 5 stars Cargo cult principles, patterns, and practices
I have now read two books from Robert C. Martin, this and the "Clean Code".
Both are terrible.

Not only are the advices questionable, but the author's style is... Read more
Published 12 months ago by jar
5.0 out of 5 stars great book, title a bit misleading
There are two things I would've changed about this book: 1) remove "in c#" from the title and 2) make it clear that all code examples are pseudo-code in a made up language that... Read more
Published 16 months ago by Dennis Mnuskin
5.0 out of 5 stars Good Book with one exception - Bowling Example
This is a good book for .NET developer who are interested in Agile software principals within Manager, Developer sides. Read more
Published on January 30, 2011 by Tarik Guney
3.0 out of 5 stars Interesting, but needs work
This book is not a five. Full of bad code that does not use the full strength of C#. The concepts and ideas are excellent. The author in person is witty and very charismatic. Read more
Published on July 23, 2010 by Maccurt
5.0 out of 5 stars One of the best programming books I've ever read
There is not much I can add here, but I just wanted to put in my 2 cents. I still come back to this one quite often even though I think the actual code samples are weird. Read more
Published on June 7, 2010 by David W. Martines
5.0 out of 5 stars Best Primer for Agile Engineering
If you're wondering what people mean when they talk about "Agile Software Development" or "Agile Engineering" and C# is your language of choice, this is the perfect book to get... Read more
Published on August 13, 2009 by Al Tenhundfeld
Search Customer Reviews
Only search this product's reviews

What Other Items Do Customers Buy After Viewing This Item?


Forums

There are no discussions about this product yet.
Be the first to discuss this product with the community.
Start a new discussion
Topic:
First post:
Prompts for sign-in
 



So You'd Like to...


Create a guide


Look for Similar Items by Category