One of the biggest challenges in writing test automation scripts comes in keeping pace with the rapid changes of the application under test. One small "critical" change made by a dev at midnight can result in hours of painful investigation and test script repair for you the next morning(s).
However, if you factor your tests properly you can write complex, reliable tests with only a few lines of code that not only test themselves using reflection, but also can be repaired in no time, and repurposed for other platforms.
By factoring our selenium tests into scripts(test cases), a model (with hooks to WebElements), and libraries of user actions (e.g. flirt with this user, register, send a message, etc.) Zoosk can quickly write and repair tests for our rapidly-changing and frequently experimental site.