Thu, May 10, 2007
Project management
Posted at 10:25 pm MDT to Code
One of my specialties is tools for source code version management. I'm used to having good version control tools available, partly because I'm usually involved in managing or customizing them.
My current customer uses version control for their real software but decided they didn't want to pay for licenses for the contractors on this tools project. The final versions of code that go to production are being archived, but not intermediate working versions.
I have ways of working around this sort of thing. At my last regular job before I switched back to consulting, they insisted on using a versioning tool from Microsoft which was not trustworthy (it was one of the reasons I left). I acquired a habit of keeping lots of spare copies of older code sets squirreled away, so my employers were able to meet contractual and regulatory requirements for being able to reproduce old builds of their software, despite using a versioning tool built on an unreliable database.
Yesterday one of the programs I am working on started giving me some very screwy results. I wasn't sure whether it was something that I had done to it. The people speccing these programs are partial to the kichen sink school of user interface design, and it was possible I was hitting some weird side effct of one of my feature changes.
So I dropped back to an older version that had been extensively tested so its behavior patterns were well known. The older version of the program also behaved in the new, flakey fashion when interacting with the main software application. It turned out that one of the changes made to the main program on Tuesday had subtly broken the interface used by the external programs. My project interacts with the broken interface most extensively, and is under active development at the moment, so I'm the one that hit the problem first.
My schedule really did not need a day spent fighting a broken interface, but it's a relief to know I wasn't imagining the behavior I was seeing, and I didn't break my program by doing something I didn't realize I was doing.
But I really wish I had a version control system available where I could save script versions as new features are added and tested, so when something goes screwy I could drop back a little way to a recent known working version. Scripts involving thousands of lines of code are really too big to be worked on using such an informal process. But the most of the other external scripts in this project are tiny compared to the two biggest ones I'm working on
permanent link || trackback || 0 comments || Add a comment






