Thursday, May 17th, 2018

Is XP Unsuitable for a Diverse Team?

The discussion started on Twitter with this comment from Sarah Mei:

Wondering why all the agile/XP stuff (like pairing, TDD, etc) doesn’t seem to work for a heterogenous team?

It’s because they were developed by a bunch of white dudes. The practices assume the practitioners all have A LOT of built-in privilege.

This got a lot of reaction, as you might expect, with more heat than light evident. Much of that discussion was about what is and isn’t civil behavior on Twitter. I’m not going there because I think that ship sailed a long time ago and it’s not coming back.

I will say that I don’t believe issues of diversity in our software teams are a matter of politics. That is, “flaming liberal” I may be, but I nevertheless don’t expect intelligent conservatives to be opposed to inclusiveness, equal opportunity and respect for everyone in our companies and teams. Of course, I’m sometimes disappointed, but that happens with people who claim to share my political views as well. In the wild, neither liberals nor conservatives have cornered the market on treating people badly.

Back on point… eventually I managed to find a Twitter essay by Sarah Mei that explained her position more fully. Someone has kindly put it together in one place here: I suggest reading it in full.

There’s stuff in there that strikes me as wrong or mis-stated, but other points that strike a chord. In any case, I think it’s a point of view that anyone taking XP seriously has to deal with.

A few minor things first:

1. The folks at Snowbird invented Agile as a term to describe the principles they held in common even though their individual methodologies were quite diverse.

2. Most of the problems Sara Mei describes seem to be around pairing, which is pretty much exclusively associated with XP. In this post, I’m sticking with what I know, which is XP.

So what about pairing? Does the creation of a diverse team make pairing more difficult? I’d have to say “Of course it does!” When we began to move testers out of separate organizations and into XP teams, that made things more difficult. Same goes for database folks, designers, UX experts, etc. It has never been possible to just tell people to pair together and have it work. Somebody has to sit down and show the team members how to do it, just as for any new skill. Failure to show people how to pair is an anti-pattern I saw for years as an outside coach brought into companies that imagined they were doing XP.

That said, diversity in race and gender are a different matter because here we are talking about privilege and disadvantage, not just within the team, but in society as a whole. If the team is 100% in agreement with the need for such diversification, then we “merely” have to teach them how to deal with imbalances of power – real or perceived. Ideally, we would make those imbalances disappear, at least within the team. We would make the team a safe place for its members.

On the other hand, the existing team may not be in 100% agreement. Some may oppose efforts to employ more women or people of color, or to give them equal status. In that case, I don’t think it’s any longer a question of software methodology but of the company’s willingness to enforce standards of behavior.

I didn’t write this post to offer a recipe or a remedy but to call for a discussion of the issue among members of the XP community. Next week at XP 2018 in Porto would be good for me!

Tuesday, May 1st, 2018

What’s With NUnit 2.6.5?

Some folks have expressed surprise at my release of NUnit 2.6.5. Their surprise is no surprise, given that the NUnit framework is now at version 3.10.1!

So why release a 2.6.5 version now?

For an answer, we have to go back to the first release of NUnit 3.0. At that time, we felt that NUnit 3 was going to be so attractive that people would rush to convert. For that reason, NUnit 2.6.4 was to be the last release of the NUnit V2 series. We archived the code and stopped accepting bugs on it.

We weren’t entirely wrong. NUnit 3 is a great improvement, so great that even those who are unable to convert to it wish that they could! And there lies the problem we didn’t consider: there are many, many external factors that can keep people from being able to convert. We knew that this would be a factor but seriously underestimated how many people would be affected.

To make matters worse, as NUnit 3 progresses through new releases, these folks get farther and farther behind, making their eventual conversion that much harder. The list of things you have to change in your code when converting from NUnit V2 to the latest NUnit 3 version just keeps getting bigger. It would be very convenient if folks on V2 could keep up with at least some of the ongoing changes.

Enter the NUnit Legacy Project!

The aim of this project is to support users of older NUnit V2 software in two specific ways:

1. By giving them information about exactly how much of their code may need changing in order to convert to NUnit 3.

2. By providing them with ways to keep their code more closely conformant with NUnit 3, where doing so doesn’t require a complete re-architecting of NUnit V2.

NUnit 2.6.5 is the first software release from the NUnit Legacy Project. It provides enhancements in both of the categories just listed, including a compatibility report that points out the places in your code where changes may be needed in order to upgrade. Additional enhancements in 2.6.5 provide compatible replacements for classes and methods that are no longer supported in NUnit 3, allowing you to immediately reduce the list of compatibility issues you may have to deal with.

Documentation and downloads for NUnit 2.6.5 and coming releases may be found at

Wednesday, January 24th, 2018

Microtests and Test Frameworks

I’m a big fan of microtests – both the term and the thing itself. My friend Hill coined the term quite a while back and I felt it completely solved the problem of ambiguity we agile folks were having when we talked about unit tests in front of people who understood the term in the way it was used 30 or more years ago.

I’m not going to describe what microtests are here. If you aren’t familiar with the term, go watch Hill’s video clip about them right now. We’ll talk more later.

Back already? Great! So… a while back I started to wonder if the NUnit test framework, which I have worked on since 2004, might be leading people to write bigger and more complex tests by having too many features. What would happen, I asked myself, if a framework only had those features that support microtests. And by the way… what features would that be?

I asked the question to a group of experienced coaches and – as you might expect – I got varying answers. Some people thought it was a good idea while others felt that having a separate tool for microtests would be a burden. There was a fair amount of agreement about what features were needed but also some disagreement on specific items.

I’ve decided to start out with a specification of features that will be most useful in microtests. There could be separate frameworks to support those features or you could just use a standard test framework and limit yourself to a particular subset. A framework could even support a setting that would warn you if you got out of the usual territory for microtests.

So here’s my short list of features at least for now. Let me know what you think of it.

1. A full set of assertions, such as are supported by nunit or junit. Assertions designed for access to the file system or databases, however, would be excluded.

2. A full set of test-identification attributes, including those that support data-driven tests.

3. Some way to create shared setup and teardown for tests. This is controversial as some people think it’s an antipattern to use separate setup methods. In the end, I decided it should be available but de-emphasized. Higher-level setup (fixture, namespace, assembly) would not be supported, however.

4. Simple reporting of test results without adding on any extra components.

5. NOTHING else, at least initially. In particular, NO way to order tests or define dependencies between them.

Tell me what you think of the list. Would you use such a framework if it existed?

Tuesday, January 23rd, 2018

Future of NUnit

A while back I began to have some concern about the future of NUnit. I was entering my 70s and I knew I wanted to spend more time on other things. NUnit had been very much my project for a few years and I didn’t want it to die when I was no longer maintaining it.

Starting about three years ago, we began the process of phasing me out of the project. It was difficult and time-consuming but now the transition is pretty well complete. Today, we have a much larger group of contributors and team members than ever before. I’m still involved but my level of participation is much reduced.

The NUnit Project is now run by a team (the Core Team) rather than an individual and is supported by the .NET foundation. The Core Team consists of Rob Prouse (chair), Terje Sandstrom, Chris Maddock, Joseph Musser and myself. The Core Team makes the big decisions, similar to a board of directors, rather than running individual projects. Each of the projects under NUnit has it’s own team and team leader, although there is a fair amount of overlap. I think that’s a great formula for future success.

With a decentralized structure like this, there is both an opportunity and a need for more people to step up into leadership positions. I hope more people will join the developers of NUnit as time goes on and that some of you who have been involved for a while will consider taking responsibility for some of the projects or subprojects we operate.

For myself, I’ll continue to be a member of the Core Team and will continue to contribute to the codebase. But most of my open source work will be in other projects, some related to NUnit and some more independent. I’ll be posting here about some of the things I’m working on as they come closer to fruition, so please follow me here if you are interested.

Thursday, September 22nd, 2016

NUnit-Summary Becoming an “Official” NUnit Application

UPDATE: I’m leaving the post here but the action described has been reversed and the project continues to live at

NUnit-Summary is an “extra” that I’ve maintained personally for some time. It uses built-in or user-supplied transforms to produce summary reports based on the results of NUnit tests.

I have contributed it to the NUnit project and we’re working on updating it to recognize NUnit 3 test results. The program has never had a 1.0 release, but we expect to produce one soon.

This old post talks about the original nunit-summary program.

Wednesday, September 21st, 2016

Back to Blogging!

My blog has been offline for a long time, as you can see. The last prior post was in 2009!

Recently, I found a backup copy of the old blog and was able to re-establish it. Watch for some new posts in the near future.

Saturday, November 3rd, 2007

Blogging Again

I haven’t done much blogging for a while due – in part – to the enormous amount of Spam my blog was attracting. But I just updated the software and installed a spam filter. I plan to start posting again, and re-open the blog to comments. Hopefully, the spam won’t overwhelm me this time.

Since I last wrote, NUnit 2.4.3 and 2.4.4 have come out as well as NUnitLite 0.1 and 0.2. I’ll blog separately about the status of each of those.

Wednesday, August 23rd, 2006 Revisited

In an earlier article I wrote about my concern with They had acquired the domain andwere offering me the right to use it in exchange for a link. I felt uncomfortable about this, particularly after I learned about their dispute over the domain.

Read the rest of this entry »

Monday, May 15th, 2006

NUnit on Microsoft CodePlex?

A reader asks “What is this about?” pointing to the new Microsoft CodePlex site, which mentions NUnit.

Read the rest of this entry »

Wednesday, March 1st, 2006

Getting NUnit in China

A Chinese programmer (anonymous until he tells me otherwise) recently wrote to ask me for a copy of NUnit 2.2.7. For some reason, it appears that Sourceforge is not accessible in China. This seems odd to me, since it’s hardly a political site, but the ways of bureaucracy in any country can be hard to fathom.

Read the rest of this entry »