Thanks for Letting Me Play in Your Sandbox

It’s been quite a project.  I was first brought in to write reports using Crystal Reports and do miscellaneous things in their VB6 project.  Back then, we were still waiting on a lot of the things to get coded so they had me work on preferences.  Then user security.  Then MapPoint integration.  Then flat file imports.  Then payroll.  Wait.  Did I say payroll?  Did I know anything about payroll?  Nope.  Not a thing.  I now know way more than I’d like to about payroll in the United States.

I finished coding payroll and we were STILL waiting on our resident ‘genius’ (an MBA with Microsoft certifications up the ying yang) who still didn’t have the general journal done after months worth of promising it was ‘just about done.’  I was tasked with getting budgets up and running and account balances were taking forever (15+ minutes to get 300 account balances).  Because our self imposed release was quickly approaching we couldn’t wait anymore so I created the General Journal tables and code to deal with populating it based on all our various accounting transactions.  Now, 300 account balances take just a fraction of a second (as it should).

We released it to the public and we won some awards.  And then we discovered why using Microsoft Access/Jet as an accounting database was a horrible idea.  Database corruptions were commonplace because client networks were so bad that Jet couldn’t fix itself.  We start stashing copies of the database ‘just because’ and gave warnings that users should compact and repair their database on a regular basis.  It was at that point the owner allowed me to look into using SQL Server instead of Access.  Did I know anything about SQL Server and VB6?  Barely.

Going from almost zero knowledge, we got SQL Server up and running in about six months (while still releasing new features).  Since we had long since figured out how to minimize corrupted databases (but never completely eliminated the problem) the client naturally decided that SQL Server wasn’t important to his long term growth.  So SQL Server was (mostly) abandoned.

Along the way we refactored payroll to speed it up by a factor of 10.  We rewrote sales tax to accommodate the crazy schemes the politicians come up with to get money.  We were able to convert QuickBooks into our package with roughly 99% historical accuracy.  We investigated many things to see how long and how hard it would be to implement such as report designers and integrated charting and even releasing to foreign countries.  We rewrote large sections of code and changed out controls in Visual Basic that were better than the existing controls.

I mentioned that we mostly abandoned SQL Server.  That’s not really true.  The one full-time developer on their staff and I kept developing as if we were using Access and SQL Server which was a great idea because eventually they sold copies of the product to some very big companies.  And naturally Access/Jet choked and died a miserable death in those high data environments.  Our forethought saved our collective bacon when we were able to switch them over to SQL Server with minimal effort.  Jet errors vanished nearly overnight.

As a company, my client won some local awards as a great place to work in the Kansas City metro area.  They treated me as an employee (for better and worse) which meant that I was invited to their Christmas parties and got dragged into profit sharing meetings.  I knew the employees as well as I’ve known anyone I’ve ever worked with.

But as with all projects, this one is now mature and stable.  Sure, we have a huge laundry list of things we’d like to change, but we’re no longer in that startup mode where every day is about coding something new or where every day is an emergency because we (or a customer) found an issue that has to be changed RIGHT NOW.  I feel as if the really exciting part of the project is over.

So when an opportunity came along to work on an even bigger project for a very large company I couldn’t pass it down.  So starting Monday, I start working on a big project for a Fortune 100 using agile development methodology.  It’s a big deal and it has some risk but the potential rewards are huge.  I get to learn about being part of ‘scrum’ and to be part of a team where we have code reviews and formalized coding standards.  These are, frankly, something I’ve wanted to implement for a long time.

Doing a quick check on Friday revealed that the accounting project has around 975,000 lines of code in 700 project items with 200 reports.  How many of those reports did I create?  Maybe 10.  How’s that as a switch-a-roo from when I started?  As I left the building on Friday I told the client (really my friend at this point) that I appreciated him letting me play in his sandbox for five and half years and that it’s not really goodbye.  I’m sure there’s some more things to build and another couple hundred thousand lines of code to write.