I’m in a fairly unique position here at SEP. For the last seven years (out of the ten I’ve been here), I’ve worked almost exclusively on a series of related projects for the same client. When I say client, in reality I’m talking about the company since the individuals that I’ve dealt with have changed over time. Over the course of the years, there are several things that have come to my attention. Some of these are very obvious in hindsight, but hopefully writing them down may help out someone else that finds themself entering a similar situation…
-
To succeed, it helps to become an expert in the client’s domain. Chances are good that over the course of even a two-year project, people on the client’s side of the fence will change. And chances are good that when those changes happen knowledge will be lost. At that point you start getting questions that are not just “Does the system handle X?”, but “Why does the system require Y to be entered?” When these questions come up years after the original decision was made, it can help to have an understanding of the logic that went into the decision (bonus points if it is documented somewhere that you or your replacement can find it easily and not just trapped in the recesses of your mind).
-
“Always” and “never” are often wrong. Make sure that any time you hear these words that you work with the client to think of (realistic) cases that break the rule. There are almost always valid cases that are overlooked at first glance. Sometimes these cases can be expensive to account for later on if they are not planned for.
-
On a long-term project, not only will the small requirements change, but sometimes the entire focus will shift drastically. You will almost certainly hear something along the lines of “You know how we said we didn’t care about X at all? Well, it’s just become an important focus for the next year.” Take it in stride.
-
Communicate. Build the relationship on a personal level. Make sure that you are comfortable with giving the client both the good news and the bad. Don’t be afraid to discuss tangents that aren’t related to the project at hand (unless the client has given an indication verbally or otherwise that they don’t want to discuss such things). And learn what form of communication is best for the client and for the situation at hand. Emails are great for communicating with a busy client, and provide a written record of what was communicated (in case there is a question), but they lose a lot of context (verbal and visual cues). Know when you need to pick up the phone instead. And know when you really just need to sit down and discuss things face-to-face (no matter how hard it is to get scheduled time).
-
Get invested. Take ownership. Work so that when you look back over multiple years you are proud of what you’ve accomplished. Now the tricky part… at the same time you are taking pride, you need to understand that your beautiful snowflake may not be perfect. The longer the project runs, the more likely it is that some underlying assumption or design will be found to be faulty.
As I said, many of these are obvious in hindsight, hopefully they will be of use to someone (or just as a reminder to me). Oh and some things to keep in mind… you don’t always know ahead of time which projects will turn out to be “long-term”, and even if a project isn’t “long-term” you can still benefit from the above.