I've spent most of my JPL career working on JPL's multi-mission ground data system, which records and processes data not only for Mars missions but for most of our other missions as well. This gave me a chance to be a small part of a lot of different projects, including several Mars projects.
MER represents the first time I've been a member of any flight project, though.
For MER's development phase, I wrote a piece of software called the Rover Sequence Editor (RoSE). We've used RoSE to command both spacecraft throughout their seven-month cruise to Mars, and (in conjunction with RoSE's sister application, HyperDrive), we'll use RoSE to drive the rovers on the surface as well.
During surface operations, I'll be one of the rover drivers. So I get to be one of the users of my own software (always a humbling experience). More importantly, I get to actually build the commands to drive the rovers where the scientists want them to go, and maneuver the robotic arms so that the science instruments get the data they want.
My first large solo software development project was a piece of software called the Automated Command Tracker (ACT), which I wrote for MGS. ACT helps the various spacecraft teams, some of which are in different states, coordinate the process of constructing a command load for the spacecraft. ACT has since been used on several other Mars missions -- Mars Polar Lander and Mars Climate Orbiter, at least -- and some non-Mars missions, such as Stardust.