Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Wednesday, November 26, 2008

Wrapping 3rd Party Code Is Clean Code Crafty

The Clean Code book by Robert C. Martin has great points about system boundaries. In chapter 8 titled Boundaries and in the section called Using Third-Party Code, the book shares why and how to wrap 3rd party code.

Points For Why To Wrap Third Party Code (page 115):
  1. The third party code can evolve
  2. Your wrapper's interface can be made to precisely suit your application's needs
Like the book says on page 115, "If you use a boundary interface like Map, keep it inside the class, or close family of classes, where it is used."

That's huge! I also like the "Sensors" class example which has a method that will give you a "Sensor" class. Sensors giving you a Sensor, implies a naming rule-of-thumb which I also like.

Saturday, November 1, 2008

Pair Programming - Pair Share Feedback

I discovered that the most satisfying pair programming experience is when the following cycle happens:
  1. Pair
  2. Share
  3. Feedback
Pair - You do the work. You Pair Program.

Share - I share or my partner shares knowledge. Beyond sharing while pairing, this can be additional followup information. Most recently, this was in the form of a follow up email from me with resources.

Feedback - Feedback on the knowledge and the pair programming experience itself is exchanged.

Pair, Share, Feedback. Yes!

Saturday, July 5, 2008

System Metaphor Gold

A good System Metaphor is a golden thing to have. It's the theme that ties everything and everyone together. In an existing system with a great System Metaphor, one can find anticipated concepts reflected in the code easier. A System Metaphor is also a fantastic communication bridge between the Customer and Developers.

The System Metaphor article by William Wake explains what a System Metaphor is. I suggest going beyond the article and checking out his book titled Extreme Programming Explored to see the "More Examples" section provided in chapter 6.

Examples of System Metaphor and discussions about System Metaphors have been going on for at least 8 years. At http://c2.com/cgi/wiki?SystemMetaphor, people such as AlistairCockburn and MichaelFeathers have debated on how to make System Metaphor work best. Interestingly, Martin Fowler stated in his XP 2002 Conference article "...I don't worry too much about metaphor when working with XP...." Has he changed his mind since then?

A thought currently in my head is what to do about System Metaphor Disharmony. If an existing system lacks a System Metaphor that we can recognize, a System Metaphor conceptual rehashing is necessary. Adding communicative new code and cleaning up old code is just easier with a System Metaphor.

So, go forward! Find those System Metaphors! Go for the Gold! :)

Tuesday, March 25, 2008

Yes, Smile and Repeat Yourself

If you care enough about something, you will repeat yourself. That's a good thing.

"I love you!", I said to my wife this morning. I said it yesterday. I've said it for over a decade. I never grow tired of it. I care about my wife and that miracle we call love.

Writing great code is important! Creating things of value is important! Being someone of value is important! Communication, Simplicity, Feedback, Courage, and Respect are all important values.

If I am asked the same question repeatedly, I am happy to answer someone who sincerely seeks knowledge and wisdom.

Human communication often requires things to be repeated. It may take 10 times! I saw this in a training class I just took. The same question was asked 2 minutes after the answer was already given. The trainer, Brian Button, calmly responded with a smile and gave the same answer.

That's the way to go! Smile, support communication, and move on.

Saturday, January 26, 2008

XP Principles Support You - Kent Beck Again

I read and heard something extremely powerful which led me to share with you this link to the Implementation Patterns book interview with Kent Beck: http://www.infoq.com/interviews/beck-implementation-patterns. I wish to share with you one small sliver of insight said in this very inspirational and insightful interview.

In response to "XP is ...practice oriented.........patterns and XP and how they work together?", Kent Beck goes way beyond the question and shares beautiful Agile insights. Here is one insight:

He reminds us there are 3 things to consider with Agile Development; values, principles, and practices. He talks about being Agile and not just doing Agile practices.

In answer to a statement such as "XP was made for the people and not the other way around", I hope you and I remember that that is why Extreme Programming (XP) Principles are published too. They are in the XP white book and are listed in Martin Fowler's Bliki.

When a practice is not working for us in a particular context, Extreme Programming Principles are what we can retreat to. Sitting on our XP principles, we can figure out how to tweak a practice, replace a practice, drop a practice, or add a practice as we need to.

In that Implementation Patterns book interview mentioned above, Kent does a great job of telling us how we should step back and examine a practice in light of a principle. It's said in that interview, it's said in Martin Fowler's Bliki post ( http://martinfowler.com/bliki/PrinciplesOfXP.html ), and it is repeated here.

Hopefully, you and I will remember.

Thursday, November 29, 2007

xUnit Patterns and the Mid-Missouri XP Meeting

The Mid-Missouri XP (Extreme Programming) group meeting last night was quite enjoyable. James Carr led the meeting. James Carr's great experience with test frameworks and Software Development in general really showed through in a positive light.

We dove right into Gerard Meszaros' XUnit Test Patterns site at http://xunitpatterns.com/ and specifically http://xunitpatterns.com/Test%20Double.html. We covered Test Stub, Test Spy, Mock Object, Fake Object, and much more.

I put forth the questions: What are the essential Test Patterns? Where is the UML Distilled version of Test Patterns? The answer was Fake Object and Test Stub will get you to where you want to be 95% of the time.

There was much discussion too. The people who attended had dived into various things and were just great people too. We swapped stories of experience and various technologies that we have explored. Since many people there used Java, one great example of a test framework that was mentioned is JMock.

(You can hook up with what the Mid-Missouri XP group is doing at http://tech.groups.yahoo.com/group/mid_mo_xp/ : In the group, there is a post about the meeting from James Carr )