I deal with many vendors throughout the course of my day-to-day activities. I am also on the flip-side of the vendor/client relationship with SuperMotors (when dealing with individuals, clubs, or our sponsors). Coming from a background in the television production world and working with very needy clients (lots and lots of hand-holding), I’ve come to learn that client service and dealing with people was critical to any business relationship (as a client or as a vendor). This may sound like a no-brainer, but I feel I must post this to give some advice to the independent, freelance, and small-business developers of the world who may have never worked a day of a “real job” in their lives.
Freelance, Independent, & Small Business Developers, take note
You or your developers may be the best thing since sliced bread, but if you find yourself working with another team of people with similar skillsets (i.e. developers) as you, learn to properly service your client. I am currently involved on a project where I am dealing with 6 separate vendors, all of which handle individual parts of the project, hand data from one to the next, and are really at the mercy of the talents of everybody else. Due to the volume of work and the timeline, it would be impossible for one person to handle the workload. Additionally, the nature of the project has been that of scope creep, which means where we started over a year ago is many times different than where we’re at today.
Diving into someone else’s code is very easy to do — and it’s just as easy to point out holes in the code that you may see at an initial glance. Unless you’re being hired to do this, I would advise against making it a point to belittle or criticize the work of others during the project.
If you see a problem with someone else’s work, learn the “how and why” before jumping to conclusions.
A good developer is one who can develop code on their own time, quickly, and efficiently. A great developer is one who can develop code with others and work quickly and efficiently with others. The biggest piece of wisdom I can pass onto developers who own their own company or who freelance is to be a great team player, and be sensitive to your client’s (in particular, the project manager’s) needs. There are good times to point out faults in someone else’s code, and there are bad times as well.
Any project manager should be open to hearing of issues about someone else’s work. However, keep in mind, particularly in the programming world, there are many different ways to accomplish the same thing. Since I’m a “car guy,” I always like to
relate my experiences back to automobiles. Look at a Ford Mustang vs. a Dodge Charger. One engineer may say, “Wow, that Charger sure is slow compared to the Mustang. What a joke!” Another engineer may say, “That Mustang can’t seat 4 people comfortably. What a waste.”
The moral of the story is these two vehicles, at their highest level, perform the same function: transport people from point A to point B, and back. This scenario can also be applied to application, web, and database development. Knowing the intended use can save you from an embarrassing attack on someone else’s code. Optimizing a database is next to impossible without knowing how and why it’s being used. It’s wise to learn the how’s and why’s before jumping to conclusions. In the end, if you do find a flaw, by all means, point it out — but only do this after doing the proper investigation. Blanket statements like “that’s bad design” offer nothing positive to the team, the project manager, or your image as a vendor.
You may want to build a Mercedes, but all your client needs is a Honda.
I cannot stress this point enough. It is very frustrating to specify project requirements only to have a “know-it-all developer” explain reasons X, Y, and Z for why it should be done another way. Theory is great, but it’s just that, theory. The real world, budgets, time constraints, and project scope sometimes mean breaking theory. The sooner you accept this, the better you will be at servicing your clients. Learn to provide the best balance of value and insight when working on a development project with your client. They will come back to you again and again if you work with them, not against them. Your clients are very busy with other projects, too, they don’t want to have to feel like working with you is time-consuming, and they certainly don’t want to explain themselves. They may even be wrong! At the end of the day, you need to be creative with how you shape your message to the client so that they aren’t offended.
No news is bad news.
Never assume that because you haven’t heard anything that it means there’s nothing for you to do. Great client service means checking in with your clients when you’re inbetween projects, in the middle of projects, or just because. Be there for them, make sure you are meeting their needs. The last thing you want is to deal with fires that could have been prevented if you’d just spent an extra 15 minutes to check in with your client.
Obviously, you’ll need to weigh your time between clients. The clients who are spending more money with you should get more time devoted to them — in terms of hours worked and client service. Don’t take their money for granted because they can easily find other vendors. As good as you are, these days, it’s easy to find developers who have the right programming and client service talents.
Old cliche: The Customer is Always Right
There is nothing worse than arguing with a vendor. It is a pet peeve of mine when a vendor questions the way something needs to be done. Keep in mind that your clients know their business better than you do. You are there to offer a supporting tool to their business needs, not a tool that defines their business or defines how their customers shop their products. This is a very important distinction. This is sometimes a difficult concept if you work with a new client that does business in a different industry than you’re normally used to. Beware that you’ll need to approach projects like this with more of an open mind, particularly if you’re dealing in the consumer realm. Consumer behavior varies considerably between industries/markets and just because it’s one way in market XYZ, absolutely does not mean it’s the same in market ABC. Leave that up to your client to give you this insight. They’ll know their customer best and should be able to provide this type of insight to better arm you as you dive into your code.
Client Service is critical to your business
Create value for your clients by providing excellent client service. This is one of the intangibles that’s hard to see when viewing a resume or a company profile online. Great client service will keep your clients around for years to come. This will further solidify your company’s position as a vendor with your client’s organization. Don’t be afraid to check in on a regular basis to “babysit” your more valuable clients. This will pay off in the long run. We like to feel important
(even if we don’t have a current project with you!).