Why (some) Client-Developer Relationships Suck

Some web development projects don't turn out. The blame falls on both the web developer's and client's shoulders, though most developers will pine about the 'Worst Client Experience Ever'. It doesn't matter if the project is related to a full-time position or a one-time contract... things don't always work out. A combination of misunderstanding and miscommunication can ruin the best of working relationships, pushing back deadlines and frustrating both parties. There are two main causes for why this happens.

Web Development is New

The entire field is brand new, and whether a developer has been working for the past few months or the last decade, it's important to treat it as such. While the majority of people understand how to use the internet, there's a great deal of mystery about the experience. This goes beyond users not understanding the difference between Flash and Javascript and straight to developers themselves. Payment, expectations, and techniques differ greatly between individuals and projects. Also, it's far too easy for a developer to oversimplify a project and view the administrative side as unimportant.

Web Development is Abstract

Most other jobs create a physical service or good. When you pay a carpenter to install new cabinets, a plumber to fix a leak, or the kid down the street to mow your lawn you can observe the progress and final product. Web programming still results in a visible product, with front-end interfaces and content management, but it's more difficult for the client to see the work involved. For most clients, it doesn't matter if you plop Joomla or spend countless hours crafting your own content management system, as long as it works.

The success of a project is solely dependent on how the people involved deal with them. It's up to the developer to break things down for the client and guide the project smoothly. The client needs to push the developer for testable interfaces during the process and provide regular, honest feedback.

For example, if you were about to pay a contractor to build your new house, you'd want to be deeply involved in certain aspects. The contractor should have you involved during the major decisions, discussing them in terms you both could understand, but would handle most of the decisions and day-to-day work themselves. You would probably want regular checkups to make sure everything is going smoothly and discuss any changes or thoughts for the final product. If the house is several weeks from being finished and you decided to have both bathrooms upstairs, the contractor would have some choice words for you.

It's easy to maintain a healthy relationship. By laying out a plan, maintaining constant communication, and rolling out pieces rather than a single final product, a web developer can keep the project moving and the client involved. An important piece to keeping on schedule, which is where many projects tend to fall by, is to alert the client when their feedback will change the scope and affect the deadline. With an engaged client and an active developer, there's no reason why the relationship has to suck.