My First Consulting Gig Ended This Week - Was Awesome!
Like I said here, my first consulting job was a sub-contract with TEKsystems for a company called TD Williamson in Tulsa, OK. Though I’ll still be available if they need anything (questions about the code, bugs, whatever), I completed the last enhancement this week. I feel incredibly lucky that I got this as my first gig after leaving traditional employment behind.
First off, I was fortunate with a very cool customer. I could be wrong, but the IT shop I worked with seemed a bit smallish. Whenever I needed something like access or a question answered, the team member who was my point of contact was able to get the answer or get it done insanely fast (sometimes less than an hour!). I needed a good bit of database help in the beginning (back slamming production to development, getting a copy for me to run local and thus disconnected, etc.) and several times I needed new access to other database servers I was asked to integrate with. Their DBAs were awesome! No bottlenecks or bureaucracy or anything to slow down progress as far as I could tell. If it wasn’t a small shop, it was an amazingly well oiled large one.
This was the surprising part. It's a classic Web Forms application. It uses straight ADO.NET for data access. There wasn’t a single using statement anywhere. If I remember correctly, I found 38 connections that weren’t being closed. Everything is done directly in the code behind. Found a few memory leaks in the Active Directory code. Same redundant email logic repeated all over the place. Magic strings everywhere... Getting the idea yet?
Despite all those negatives, I loved it! It has been a long time since I've been able to belly up to an editor and just engross myself in code for hours and hours. The days flew by like they used to. All of the problems I mentioned above are crazy easy to fix; mind numbingly easy. It's almost like being paid to meditate.
In addition to these simple ways of drastically improving their codebase, I think they were pleased with how fast I was able to get enhancements done. I also fully automated the deployment and added versioning in a way that made it easier to know what is currently in production. All in all, I'd call it a successful gig for both parties and a great start for me.