Ever since I started out on my own as a web developer, I've found it difficult to manage projects. I don't feel like I'm necessarily terrible at it (my previous job involved managing IT, Marketing, and Sales of a 3+ million small business). There's a couple of things usually get me off schedule:
- Short term time requirements This includes modifying/adding/fixing a recently launched project or a 1-2 hr need for an existing client. It's something most clients consider reasonable and expect to be done within 2-5 days.
- Ballers Clients that are really visible, vocal and on the ball about their project. I typically like these clients (as long as they're never pushy or rude) because they keep me moving. However, these folks make it easy to forget about the previously scheduled project and focus on theirs.
What does this leave?
This typically leaves out the client who has a ton of other things going on within their business and haven't held you to any timeline. These guys usually get passed over for #1 and #2.
Just recently I got a dreaded email from a client. To sum it up, they wanted their deposit back and wanted to move on to another developer. Ouch! That really heart my pride and professional opinion of myself. Fortunately we've been really busy so the loss of business isn't as hurtful, but it was a project I was actually looking forward to working on and with a company I wanted to make a decent impression on. Plus I was embarrassed and had a major case of regret.
First, I admit to all fault. It's my responsibility of starting the project, setting expectations and moving the project along.
It was a project that was slow to come together. We started discussing ideas around the first of the year, I sent them an estimate around Feb, we agreed on price around May and I got a check around late June.
By this time I'd had several other larger sized projects come in as well, which put me booked quite a long ways out (Oct / Nov).
This is where my (and a lot of projects) get off to a bad start: knowing when you can start. I hate to displease people. The last thing people want to hear after they just cut you a check is that you can't start for some-long-period-of-time. And the truth is, in our line of work, there's no possible way to determine a project's length, the end date, and the start of the next one. Building software is tough, and most good software projects will go through several iterations, with many changes, and sometimes you wind up with something much different than what you thought you'd have in the beginning (this is a good thing for the business).
It's kinda difficult to explain my contact / point person's position on the project, but he wasn't in the typical position of a client (owner, CEO, CTO, etc). He also wasn't the kind of person to call and check in on things or get updates that often. I'm not in any way blaming him, but it made it super easy for me to tend to #1 and #2.
What works for me
During this same year, I started working with 2 really good clients that I've come to respect (CongrueIt and Nexchain). Two of the guys with CongrueIT have been in the IT consulting industry field for some time and the guy with Nexchain has been all over the world managing projects.
The one thing they expected of me was constant communication. While working on a phase or iteration for their project, we'd typically chat and/or screen share 1-2 times per week. This would include before, during and even after the iteration was complete. Reading this, you'd probably think, duh, you have to communicate, but in reality, good intentions are always there. However, busy schedules, getting behind, etc, make it difficult to actually follow through.
So the solution for me is now a mandatory weekly call from clients. I ask my clients to hold me accountable to keeping the phone call, providing updates, and keeping the project on tract. Likewise, I hold them accountable for keeping the call, providing feedback, and staying active in the project (this helps the money side of things too :-)
Open, honest, frequent, and regular/scheduled communication is the way to go. If you're not doing it, I encourage you start today.