Many development teams focus only on getting the tech right and totally forget that writing bug free code makes not more than 50% of successful cooperation with a customer. In this article we shall try to offer an approach that will turn relations with a customer into a long-term partnership.
High quality and ontime delivery are the items that must be provided by default. We’ll speak about them at the end of the article. Let’s first discuss the items that are commonly ignored by outsourcing companies.
1. Provide Expertise instead of Selling Man/Hours
Be an expert not an ordinary performer
Forget the statement “The customer is always right”. Customers are ordinary people and they make mistakes, and it’s your job to steer them in the right direction. Your suggestions will be highly appreciated, if they prove to be correct after the project launch.
Get inside a project and understand its goals
I’ll tell about the project we launched in 2014. That was a web application for a robotics festival, which goal was to optimize festival-related processes.
The client sent us a PDF with 15 pages of description. Would the project have got a success, if we had studied the specifications and proceeded to design and development right away? Hardly.
What did we do instead? We went to the robotics competition that was held 6 months before the festival. It was organized by our client, so we were allowed to study all the required data.
So we (1) studied the data that was collected during registration, (2) assisted administrators in confirmation of competitors’ appearance, (3) studied scorers lists, (4) assisted referees in the election of winners, (5) and finally we asked for feedback from competition masters (including administrators and referees), and participants (including their instructors).
As a result we obtained tons of data that allowed us to define the bottlenecks of the current processes.
The next step was development of a detailed specification and creation of prototypes. Only after the prototypes were validated we proceeded to design and development.
In six month we were pleased to find out that the application allowed to obtain the following results:
- A flexible registration process saved a good many of hours to participants (unfortunately, I can’t state the exact amount), as, in contrast to like it used to be, all the team members could register their robots independently. A captain just needed to validate their applications.
- It took 1.5 hour to confirm appearance of 800 festival participants against 3 hours that administrators spent for confirmation of 300 participants 6 months earlier. This time it took a couple of seconds to find the right person in the database and check a corresponding box.
- The application allowed the organizers to create competitions with any point system. It was very important, as they created their own kinds of competitions.
- Referees obtained a chance to enter results with an application on their tablets. The scores were calculated instantly depending on the selected point system.
- Participants in their turn could follow the results live on the website.
- After a certain kind of competition was finished, a referee closed it with the same application, and an administrator could start generating PDFs with winner’s certificates and print them. The application also allowed a bulk action for generating PDFs for all the kinds of competitions. This time it took 15 minutes to generate and print the certificates against 3 hours that were spent six months ago.
The application saved much time and effort to the competition masters and provided usability to the participants.
The conclusion is: study provided specifications thoroughly before you start a project. Report on their weak points, suggest solutions. And finally get sure that the developed product is the right solution for reaching goals.
2. Make Cooperation and Collaboration Comfortable
You are even more likely to get a success, if you manage to provide services in a pleasant and workmanlike manner.
First, be effective communicators. Give the feeling that you are in the same team. Provide assistance, not just services within an agreed budget.
Second, be online. Agree on the hours when a customer can contact you for assistance. Also set the time frames for your response to customer’s requests.
Third, select tools for:
- project management
- and communication
The selected tools should be comfortable for both parties and should be flexible enough to fit most of the projects.
3. Keep a Secret
If you provide development services to digital agencies, ask for their approval before submitting projects to your portfolio. Never do that, if you are not allowed.
Few agencies tell their clients that they outsource projects. As it’s difficult to explain why their rates are so high then.
Usually an agency sends a non-disclosure agreement to be signed by an outsourcing company. You should better have it signed by all the team members that are going to participate in agency’s projects. That will let you avoid the situation, when a developer leaves the company and puts a project to his or her personal portfolio.
4. Keep to Deadlines
This is one of the 2 basic items we were speaking about in the beginning of the article.
What should you do to avoid breaking deadlines?
First, estimate carefully
When you receive a request, take the required time for estimation. Break a project into pieces and engage all the relevant developers for estimation. After you receive the sum total of hours requested by developers, add risks. They usually depend on the complexity of a project and detail level of a specification.
But what should you do, if you receive a request for development of a complex application and you require some 40 hours to estimate it accurately? You never know if a customer understands real project scope and budget. Don’t lose so much time, start with a rough preliminary estimate that assumes 30-per-cent inaccuracy. Make a detailed estimate only after a preliminary one is approved.
Never underestimate or overestimate projects, even if it seems the right solution for a current situation. High rates will make a customer switch to another outsourcing company in the nearest future. Low rates won’t let you engage skilled and experienced developers.
Second, plan thoroughly
After you’ve agreed on the budget and term of delivery, make a detailed plan. Break a project into stages and set a milestone for each of them. Why? There are at least three reasons for that:
- A customer knows when he/she receives intermediate results and is ready to check and validate them.
- A project manager monitors whether a project is going according to the schedule, and you avoid the situation, when on the day of delivery you find out that only half of the project is done.
- Your team members keep the required pace.
But everyone has broken deadlines at least once. Everyone!
And if you’ve never broken deadlines by this time, you’ll do it in the nearest future. What are your actions, when you understand that your team is overrunning the schedule?
First, try to get back on track. Hold on for a while and try to understand whether working evenings and Sundays or engaging more developers will improve the situation. If it is likely to improve, so get to work. If it is not, minimize customer’s inconvenience. Give them a notice as early as possible, provide reasons for overrunning the schedule, and finally adjust the schedule accordingly. As a rule, an early notice lets save good relations with a customer.
Don’t even think of breaking the deadline for the second time.
5. Provide High Quality
Quality does matter. If your company can’t assure high quality, you’ll have to leave the market, either on your own initiative or under pressure from more skilled and competent rivals.
So before you start, make sure that you have the right crew on board. Incompetent developers, even if they are ready to work at low rates, will kill your company sooner or later.
Then make sure the development process is tuned good enough and lets team members collaborate effectively and produce high-quality products. Mind common bottlenecks:
- quality assurance
- passing a project from one developer (or department) to another
- control of versions
Keep an eye on the ball. Not a customer, but you are responsible for keeping to the latest trends and techniques. The market constantly offers tons of new technologies. Select those that let you first, produce an up-to-date product, second, save time and/or money.
Give presents to your customers. For example, send them a gift certificate for 20 hours of back-end development for Boxing Day ;)