4 Questions a Software Developer Should Ask Each Day

This is my take on a lesson I was taught very early in my career.  It made sense to me right away, but after applying it for over a decade I’m convinced its one of the most important things I’ve ever learned.  I hope to do it justice in sharing it with all of you.  I’ve written this from my perspective as a custom software developer and consultant, but I believe it applies universally to software developers.  If you’re an in-house developer, just think of your clients as the folks you build software for (i.e. the users, your managers and the owners, etc).  Start by asking yourself:

Question #1: Is your client happy?

This should be the first thing on your mind at all times.  A happy client will come back for more. They’ll tell their friends about you.  They’ll promote your brand.  They’ll keep your pipeline full.  Clients are your lifeblood and keeping them happy is the only way to survive long-term.  I know… this is obvious, right?  Well, it’s not that easy to execute on all the time and a lot of developers don’t really understand what it means.  We’re not looking for short-term happiness brought on by just doing whatever they ask or by applying quick fixes in difficult situations. We’re after long-term, sustainable happiness.   How can we achieve that?

Manage Expectations:

This is huge.  You have to start managing your client’s expectations the moment you meet and continue doing so throughout the course of the relationship.  The moment you stop filling their heads with facts, they’ll start filling it with all types of other things.  Expected timelines will creep, visions of features will morph, old conversations will take on slightly skewed meaning in the light of new information that isn’t shared and wasn’t part of the original conversation. Expectation creep is not malicious… its human nature.  Small expectation gaps are like a crack in the foundation of your house.  With effort you can avoid them in the first place, but if allowed to form and grow they can be devastating to a relationship.  Communicate clearly, completely and often. And memorialize EVERYTHING in writing.

Honor your commitments:

Lots of promises are made at the beginning of the job.  Most of them will be recorded in a contract that commits you to honor them. However, not every intention, notion and promise will make it in there.  There will always be a new way to look at a deliverable later on and re-interpret its meaning. This tends to happen when the going gets rough. Maybe things are taking longer than anticipated. Maybe you’ve had staff or personal issues that distracted you from the project.  Stuff happens.  Renegotiate the terms if it’s reasonable to do so, but don’t, under any circumstances hide behind a nuance in the contract language or try to back away from the original spirit of the deal.  You know what you committed to. Honor it and get the job done. It will hurt at times, but your client’s happiness and your reputation depend on it.

Be a partner:

You’ve agreed to help your client solve a problem.  The best way to do that is to look at the issue as your own.  Do your best to see and feel the goals from your client’s perspective.  Own the problem.  Your client can tell the difference between this approach and that of the last firm who was just “doing their job”.

Be Available:

You should return calls/emails in a reasonable and consistent amount of time and you should answer the questions contained in them.  If you take long, random amounts of time to respond you’ll frustrate your clients. If your late response doesn’t answer the question, you’ll infuriate them.

Stick to your principles and do the right thing:

Your client hired you because they don’t have the time, or more likely the expertise to accomplish the task.  Even though you’ve been brought in as the expert, there will come a time where the client insists you to do something that you know will hurt them in the long-run.  It’s your duty to hold your ground in these situations. Take time to explain why this approach will be harmful. Give examples. Be steadfast. Ultimately it’s their decision, but you owe it to them to try and do the right thing.  I often liken this role to that of a personal trainer.  If your client came to the gym and told you they were tired and didn’t feel like working out, you could satisfy their short-term desires, buy them a muffin and a shake and plop them in front of the TV for a little Judge Judy, but that’s the easy way out and it won’t help them accomplish their long-term objectives. It’s your job to get them motivated and on the treadmill.  Don’t be a coward… do your job!

Be enjoyable to work with:

Make a connection with your clients on a personal level.  Ask them about their kids, their pets, their hobbies.  Be human and have a sense of humor.  Your client will like you if you help them solve their business problems.  They’ll love you if you help them have a good time doing it.

Be humble:

I’ve already stated that you’re here as an expert, but that’s probably only true for your specific role in the overall initiative.  Whether you’re building software or developing a social media strategy, you’re doing it for them.  Don’t come in acting like you’re the savior.  Do your part and do it well, but trust that they understand their business better than you do and they have the grand vision.  This is a learning opportunity for you and it’s probably the best part of being a consultant.  Listen intently, learn from them and make sure they know you’re doing it.

Question #2: Is your work correct?

If you’ve executed on the principals from #1, your client’s in a happy place.  Now it’s time to deliver and your solution better work.  It must accurately achieve the goals of the project in a meaningful and sustainable way.  It has to work today so that they can execute their business plans and begin to see some return on investment.  It has to be flexible enough that it can be modified as their business evolves.  It has to be scalable so that it will remain viable as their business grows.  Ultimately, this becomes an extension of #1.  Your product speaks for you when you aren’t around and it should continue the good work you did from the beginning.

Question #3: Is your work on time?

So you’ve got a happy client and a solution that works.  Next, you need to ensure that everything is delivered on-time.  Every project you take on becomes part of some larger business plan.  Once you commit to timelines, your client begins to plan their next steps.  Let’s say they’re planning a major product launch to coincide with the release of the new web site and online catalog you’re building for them.

They’ve got billboards going up, commercials ready to air and an army of trainees preparing to handle the expected influx of business…. and it all hinges on that end of year delivery your promised.  Now imagine its mid-December and you tell them you won’t be hitting your date.  It’s a client happiness catastrophe!  Months of planning is coming unraveled, your client cancels holiday bonuses for their staff because they need to conserve cash to pay the army of trainees with no corresponding revenue offset, they can’t cancel the billboards and commercials and they’re going to look like fools when they don’t deliver the product their hawking; oh… and your client is really starting to worry because they have a family vacation planned for the month after the project was set to be done and now that’s in jeopardy.  This may be an extreme example, but rest assured that your missed deadline will cause problems for you client that you may never even know about.  All you’ll know is that despite “everything you’ve done for them” your competitor wins the next job.

Question #4: Is your work on budget?

I bet you didn’t think it’d take this long to talk money.  Don’t get me wrong… budgets are important, but less so than client happiness, quality and timelines when it comes to your long-term success.  Simply put, you must never sacrifice #’s 1-3 to keep your budget in line.  That’s short-term thinking and it’ll eventually lead to a crippling pile of problems that will crush your business and reputation.  In a recent post titled Keeping Projects on Budget, I explained how an end-to-end project management effort is required to walk this line.  You’ll need to develop a process that works for you and execute it flawlessly.

One key topic to keep in mind along the way: Don’t do Out of Scope work for free!  I mean it… never ever ever ever. Not even small stuff.  Given the flexible nature of software, it’s easy to throw in this tweak or that additional feature.  It seems harmless at the time, but it always leads to problems.  First off, you’re mismanaging expectations.  You’ll be more likely to agree to something extra at the beginning of the project when you have lots of budget then you’ll be at the end when the budget’s winding down.  When you say yes, yes, yes then no, your client starts to feel cheated.  Why are you tightening the reigns now?  This leads to unspoken animosity where the developers think their earlier “generosity” is not appreciated and the client thinks this new strictness means the development team isn’t willing to see their “promises” through to the end. Everyone’s right and everyone’s wrong. It’s a bad situation and it damages relationships.  Secondly, now you’ll have to finish the scoped items with less than the necessary budget. You’re faced with sacrificing quality or sacrificing your profits.  That sucks.  See #2 for advice on what to do.

Summary

Software development can be a tricky business.  Most developers can handle the technology, but many struggle with managing the overall process.  Ask yourself these questions daily and align your efforts with satisfying them in priority order.   It takes time and effort, but if you persistently follow this list you’ll build great relationships, feel good about the work you do and eventually… you’ll make some money too.

I’m always looking for new tips and techniques for keeping my clients happy.  What’s worked for you?

Recommended read: While researching for this post I came across an article I liked so much I had to share.  A short, but important read: Mastering Account Management: 5 Tips for Keeping Clients Happy

Advertisements

The Often-Overlooked Value Of A Quality Support Team

My team and I are software support representatives – when end users struggle with issues they can’t resolve themselves or encounter bugs or glitches, they call us.  We’re the first line of defense – being there for our customers and putting their minds at ease.  Over the past year, I’ve learned a lot about why the position I hold is necessary (and I’m pretty sure the developers we help would agree).

Frustrated customers don’t remain customers for long:

This one should be fairly obvious.  If a product or service you’re using causes you more grief than benefit, you’ll probably stop using it.  When a support call comes in, it’s the support representative’s job to provide the feeling that someone associated with the product cares about the customer’s issue.  If the end user is forced to leave a voicemail and wait for several hours before hearing a response, they might begin feeling like their problem will never get fixed.  No one ever wants to feel as if they are being ignored when they have a problem; letting customers fend for themselves is bound to have them looking for alternatives.

Support representatives are the face of the company:

Support reps are frequently the first people to have contact with a customer, and first impressions can be everything. A positive experience can make the customer feel confident that their issue will be addressed quickly.  A negative experience, however, can deter the customer from calling again.  Although support representatives often make up a very small part of a company, they’re usually closely associated with a customer’s opinion of the entire organization.  When a customer hears my voice, they have something tangible to associate with their product and my demeanor can set the tone for their continued relationship with the company.  Ideally, you want the person on the phone with your customer to be caring, kind, and patient, so the relationship will be as well.

Developers often don’t mix with customers:

While it’s not true in every circumstance, there are a lot of developers who don’t necessarily want direct contact with the customer. Certainly, it’s tough to concentrate on coding if your phone is ringing several times an hour, but developers can also suffer from being too “sophisticated” for their own good (and the clients’) – since they’re surrounded by colleagues who understand complex processes, it can be difficult for them to put a description into layman’s terms for an end user. Software support provides a bridge between end user and developer; the reps have enough technical know-how to work with the developers on more complex issues, but can easily relate to struggling (and, sometimes, impatient) customers.  Plus, I know some developers who just “don’t like talking on the phone” and that’s not the kind of person who should be communicating with customers on a daily basis.

Support representatives take pressure off developers:

This is obviously related to my previous point, but important nonetheless. When a customer loses patience (and nearly everyone does, at some point), they can lash out.  Support representatives are trained to handle this pressure and work to prevent it from reaching the developers. The goal of the development team needs to be producing quality software; the goal of the support reps needs to be managing the expectations of customers and helping them resolve problems quickly and with minimal pain.

It’s no coincidence that the most profitable companies have excellent support teams to back up their excellent products.  Now more than ever, these companies have come to realize that without a strong, committed support team, there would be no customers to support.  Don’t underestimate the value of a great relationship with your customer!