Archive for October, 2007

On sustainable development

I was just reading an interesting article by Joel Spolsky titled “How Hard Could It Be?: Five Easy Ways to Fail”, and this quote at the end caught my eye.

In the technology world, it’s better to view a big project as a marathon, and not a sprint.

Interface driven design and testing

The Object Mentor website has an excellent article on testing and the primary role acceptance tests. The part that I found the most interesting resonates with something I have been thinking about lately; when should acceptance tests be written.

Acceptance tests should be written at the start of each iteration. QA and Business analysts should take the stories chosen during the planning meeting, and turn them into automated acceptance tests written in FitNesse, or Selenium or some other appropriate automation tool.

The first few acceptance tests should arrive within a day of the planning meeting. More should arrive each day thereafter. They should all be complete by the midpoint of the iteration. If they aren’t, then some developers should change hats and help the business people finish writing the acceptance tests.

If the creation of an application is driven from its interface (those designs and wireframes that Usability people create), then both the developers and the QA people are working from the same page. It should be easy to create a series of Selenium tests that ensure the application is following the interface.

If a problem is found, then it is the interface that needs to change and the code and Selenium tests respond to that change. This helps ensure the client is getting what they envisioned.

I am not a fan of Big Design Up Front, but I think when it comes to applications that will be used by people, no matter who those people are, then it is the interface, or GUI, used by those people that needs to drive the development.

The thing I find cool about creating acceptance tests immediately is that it provides an independent check on what the developers are doing. It also provides a clear path for the developers to follow in creating the application. If you can clearly see what the inputs and outputs are, it is easier to code against them. It also shows you when you are done. If all the tests pass, then that story is complete; time to move on to the next one.

Problem installing native Ruby MySQL driver on OS X

In case anyone else has the same problem installing the native Ruby MySQL driver onto their Mac, here is the fix that worked for me.

I was upgrading my install using the HiveLogic instructions and kept getting the following error every time I went to install the mysql gem.

mysql.c: In function 'Init_mysql':
mysql.c:2015: error: 'ulong' undeclared (first use in this function)
mysql.c:2015: error: (Each undeclared identifier is reported only once
mysql.c:2015: error: for each function it appears in.)
mysql.c:2015: error: parse error before numeric constant
mysql.c:2018: error: parse error before numeric constant
make: *** [mysql.o] Error 1

A little Googling later, and I found a solution on the jlaine.net website. There are several other solutions listed in the comments as well.

Importance of being in the same room

It is amazing the difference having the entire development team in the same room can make on a project. For the majority of the last project I was on, the team was spread across two or three cities and multiple rooms. It is tough to feel like you are part of a team when you never see everyone and the best method of communication is IM.

During the few weeks leading up to go-live, the entire team was in the same room. The change in morale was incredible. The BAs were just a question away and the client was in the other room. This meant that issues could be dealt with quickly and everyone understood each problem.

This is my first time really working under these conditions with the entire team in the same room. And although the room was small, I definitely see the advantage. Maybe XP has something here.

Redecorating the place

Since WordPress recently released version 2.3, I decided now would be a good time to do a little redecorating. The biggest change is the new theme. It is clean and simple and provides lots of space for code snippets, although it needs some modification. I am not completely happy with the way it looks quite yet. The biggest problem so far is how it represents lists.

The other big change is that I may change the way links are created. Currently, I am using the date, but I am thinking of changing it to the title. This will result in most search results not working for a while. I am not a master of .htaccess, so if anyone knows how to make this change and still keep the old links working, please share.