I'm a doer. It's probably why I have such a hard time handing off tasks that should be done by other people. An email will come in with a small task and instead of forwarding it over for somebody else to take care of, I'll either stop what I'm doing and take care of it myself, or worse, I'll think to myself “I'll get to that in a couple minutes”, and then it will sit in my inbox for a week. A couple guys on my team called me out for that last week. It's a bad habit and I'm trying to break it.
Sometimes, when you are a doer, you get in to a situation where you simply CAN'T just do something. Not because it's beyond your expertise, but instead because you simple don't have the access needed to do what needs doing. It's like having an itch you can't scratch. It drives me bonkers!
Limited Access Sucks
I have a long term client who I absolutely love working with. I get along great with their team, our skill sets compliment each other, their project is a great mix of interesting and challenging. Pretty much everything I look for in a client. But the one thing I don't have is direct access to their servers. When I do work for them, I push the code to a shared storage location where they grab it and fold it in to their local development environment and then push it through to their staging and eventually to their live environment. It adds an extra layer or two of complexity to things, but so far it hasn't been an issue. Well, until today, I mean.
Today the wheels fell completely off the cart. Think of all the things that could go wrong with a site launch. Every single one of them happened. Bug in the code? check. Try to wedge in a couple last minute features? Check. Server issues? Check. Code working differently on dev and live environments? Check. There were a few more checks in there as well.
Here's the thing, these types of issues are bound to happen when launching code. It's just the way it works. Everything checks out on your dev site and then as you start launching, things need a little massaging. We've done this hundreds or even thousands of times. But, when I can't simply log in to the server, upload a little debug code, get some answers and make quick changes, well, it's like that itch I can't scratch all over again.
What is a doer to do?
As the day was wrapping up, I started thinking about what went wrong, and more importantly, how it could be avoided moving forward. As I said, I really like working with this client, so it's in my best interest to make sure something like this never happens again. Then it hit me, since I can't have server access, what I need to do is make sure our development and release procedures are as solid as they can possibly be. So what does that mean? Documentation.
If I can't be the one with my hands on the server, I need to make sure that everybody who is going to be involved with the project has a step-by-step procedure for all phases of deployment. From the tools they use to the steps they need to take, I have got to document it all.
I don't expect documentation is the answer to every issue we ran in to today. But a repeatable process, or even a simple checklist would have gone a long way. I know this for sure, it couldn't have hurt.