Project management is one of the biggest challenges for freelancers and small agency owners, together with establishing a successful sales funnel or ongoing revenue stream. Inevitably, a number of things go in the wrong direction and lead to delays, extra work and loss of profit.

According to the CHAOS report by the Standish Group, 15% of the web projects fail, 59% are delayed or generate a form of loss, and only 26% are successful. That indicates the significance of the management expertise that many business owners struggle with.
Here are the main challenges that we should look for to overcome upfront or immediately when we face them.

1: Lack of a Detailed Specification

The lack of a comprehensive list of features outlining the expected outcome of your solution is a recipe for disaster. Assumptions are the easiest way to fall into a trap which leads to miscommunication and false expectations.

For example, imagine that you discuss a small feature that adds a share button for each post to Facebook. That’s an easy one right? Simply add a button with Facebook’s share dialog that allows for sharing it to a post.

A client’s perspective may be slightly different. Some things left unsaid may be, for instance:

  • a custom image or a dialog for sharing to Facebook (despite their APIs and default look and feel)
  • current count of shares without using an application (for various subsites in a multisite network)
  • sharing automatically to a predefined group/page after publishing
  • also integrating Facebook’s comments at the end of the post

Most of the ideas may be easy to implement, but have you quoted your project with those in mind? Also, if that is a single feature out of a long list of requirements from your client, you can easily get ten times the amount of work estimated upfront.

Tip: Always write a detailed specification for anything you build. Add constraints and explicitly mention the things that you could think of that would not be included. This would set a common base for both parties, and also allow for agreeing on extra work upfront, with additional budget.

2: No Flexible Model for Additions

Occasionally (read that as “almost always”) clients are tempted to add new features and alter some functionality or UI once they see the beta version of your project. After all, they only have a vague idea in their head at first, and once they see the first iteration, they suddenly generate a hundred additional suggestions that could be added to the list as well.

That’s pretty common, but they get surprised if you suddenly start quoting them for every single change after you agreed on a fixed model. And that conversation may go south fairly quickly, especially when a detailed specification is missing. Without the correct initial setup, you may have to end up building some of those pro bono.

Having a flexible model for additional features and extra work is beneficial in that scenario. State your hourly rate for extra work in your contract or prepare the client for additional phases after the initial iteration is over. Recurring revenue is one of the main goals of successful business owners, and being able to negotiate a maintenance, support or ongoing development gig once the initial work is over will increase the lifetime value of your customer in the long run.

3: Features Misrepresented as Bugs

Introducing new features or changes as bugs or “expected iterations” is another common scenario, especially when it comes to user interface. For example, building the design for a new theme or the user interface of a framework should be planned carefully.

Unless you have a mockup or a wireframe signed off at first, change requests will happen. And if your specification doesn’t outline any design decisions and guidelines (or an number of iterations), you’re likely to jump straight to the heated negotiations phase or end up with a limitless number of changes.

You should discuss the functionality and design decisions with your customers upfront. Either agree on you being the sole decision maker based on your proven expertise, or rely on examples – links and screenshots from other themes, plugins or general projects implementing a functionality in a given way.

If you’re building a context-specific drag and drop metabox for a given page template and your client requests you to develop a complete page builder for all post types, you have to stand your ground and point to the feature definition in your contract. If a markup parser is supposed to iterate over a specific data format, other random pages are not supposed to get parsed in a similar manner.

We had a client last year who requested a CSV importer following a specific format and inserting posts with their meta based on a fixed number of CSV columns. Once we built that, he sent us a Microsoft Word file with a completely random structure (including images, panels, different number of fields) that was to be imported with our new plugin.

Add constraints to your software and be prepared for all of the edge cases that may be brought to your attention. Do you plan for a large volume of visitors when you propose a WordPress hosting plan? Is your filtering algorithm able to accommodate tens of thousands of users or custom post entries?

Even a small site could be boosted up suddenly by getting featured on reddit or as a part of a large advertising campaign. Make sure that your solution fits the right project and the limitations are clear, based on the current code base and infrastructure.

4: Reachability or Dependability During the Project

Being dependable on your customer during the development process could completely distort your workflow and internal planning. Over the years I’ve had a few clients who go AWOL for a year or two and suddenly get back with a feature request or a bug introduced after a random update or a 3rd party plugin. We have also worked with banks and large manufacturing companies that take weeks or months to provide access to some of their systems that have to be integrated, and this may drag a project for years.

If your work depends on content, system access or something else, make sure that the timeline is clear for everyone. You should get all of those items and details upfront (or as early in the process as possible) in order to align your planning with everything else you do.

Another important factor is your focus or the cost for an interruption. Imagine having to set up a hundred pages with copy and media from your client, but you get several pages in a bulk every week or two. This means that you will have to interrupt your work on another project, switch your mind to something new, open your Photoshop or IDE, log in to that site, do the editing work, polish a few more things, then close everything and try to focus back on your other project. And that would keep happening until all of your data arrives in a dozen identical iterations.

Make sure that your contract states the acceptable response times and requires all of the details upfront. In order to prevent the endless project scenario, add a few terms that cover the case of a delayed project and the consequences that will follow – such as extra costs, or closing the entire project after the payment has been transferred completely before a phase has started.

5: Chaotic Reporting System

The lack of a project management and bug tracking system may lead to an infinite project with an unbearable number of fixes and extra iterations. Especially when you’re working with a team and keep exchanging emails or discussing additions over phone calls.

Use a proper system for tracking the development process, bug reports and potential features. Classify them accordingly and put them in milestones, or make sure that your part of the deal is taken care of in the best possible manner.

This will make it easier to monitor for scope creep and see when a client is crossing the fine line between the agreed work and extra features. Take care of all of the small bugs (if any) and make sure that your solution covers everything as discussed, and label the additional requests separately.

You can discuss additional iterations with your client or add them during the development process based on your hourly rate, as long as you don’t do work for free that you didn’t sign up for.

6: Unrealistic Initial Estimates

Quoting the wrong number is a common problem, especially with fixed fee projects.

, and being able to put a number to your offer that does pay for everything you do without adding extra costs for your customers isn’t trivial.

There are two things that could happen leading to underpricing your work:

  1. lack of complete understanding of the client’s expectations and the goal of the project
  2. potential problems that could happen due to unexpected development limitations or while configuring a theme or plugin

Troy Dean at WP Elevation suggests offering a discovery session – a paid iteration before signing a project where you sit together with your client and discuss the project in details, until you reach to an agreement that covers everything in the best possible manner. It’s a paid consulting gig and you don’t have to waste any time guesstimating or spending days doing free research in order to put a number that is declined later.

Chris Lema also talks about pricing and suggests another alternative of discovery sessions based on quoting what you’re aware of before jumping to the unknown.

7: Not Setting the Right Expectations Upfront

Let your client know what your work process is and what your expectations are. A successful business relationship is established on trust and respect, and most of the problems with each project that fails is due to the lack of a proper and elaborate initial discussion.

  • Take your time and discuss the flow with your potential customer.
  • Make sure that you plan the risks upfront, and consider the unexpected.
  • Discuss the potential edge cases and warn your client about the consequences if he or she doesn’t participate actively in the conversation.
  • Establish a communication process with them – you probably don’t want to get a phone call twice a week at 2am for a random idea.
  • Define the limitations of the product or the expected environment.
  • Discuss a plan for the project growth – initial iterations or the options for growing the project.

At the end of the day, you want to work on great projects with the best clients out there. Frame the environment in a way that fits your expectations, and work only with the right fit for you. Job satisfaction is essential, and it depends entirely on the way you communicate, plan and manage your WordPress projects.

Mario Peshev is the Founder and WordPress Architect at DevriX. He has been building software solutions for the past 10 years. Mario is a technical trainer at universities and large international corporations, and he is a co-organizer for WordCamp Europe. Being zealous about Open Source and distributed work, he usually spends his days in Coffices.