Developer/Client Partnership: How to Work Together

Creating and implementing a good software application that is both technically and functionally satisfactory is not an easy endeavor. Here are some potential points of frustration, and how each partner can help to smooth the way.

Creating and implementing a good software application that is both technically and functionally satisfactory is not an easy endeavor. It requires human beings (that’s trouble already!) from different worlds (watch out!) to work together (ick!) toward a common goal. Here are some potential points of frustration, and how each partner can help to smooth the way.

Developer: Take time to learn the client’s business. Don’t assume it works the way you expect.

Each business is unique, and has quirks that are not immediately obvious. Dig for them, understand them, and don’t write them off as minor. They can have major impact on your coding, or be of major importance to your client, or both.

Client: Take time to really think about your business. Dredge up those things which are now so automatic that you don’t realize you’re doing them.

Don’t assume that your developer understands your terminology, the information you use, or how you use it. Think about it in terms of the nouns (“Department”, “Widget”, “Sales Entry”). What does each mean? How do you get a new [noun]? How does it interact with the other [nouns]? What are the exceptions (“A [noun] acts like this unless these three conditions are right and the moon is full”)?

Developer: Don’t speak “geek”.

Any industry has its own buzzwords. The IT industry is ridiculous with them. Even the “baby talk” of IT is usually terms that “normal” people don’t use in their daily life. “Database”, “SQL”, “backup”, “conversion”, “bandwidth”, “authentication”, and hundreds of other common IT terms can make your client’s eyes glaze over. Don’t talk down — they are intelligent adults — but do explain yourself until you are sure that they are hearing what you mean to be saying.

Client: Don’t zone out if they speak geek.

The poor things can’t help it. 🙂 But those weird terms really do have a meaning that is important to making your software work for you. The computer is a machine that can’t make intuitive leaps; it must be told exactly what to do, in its own obtuse language 1. Don’t be afraid to ask for clarification any time you need it.

Developer: Don’t go off on your own.

Communicate early and often. Use plenty of wire-frames or other mock-ups to let the client see what they are getting. I have a Dummies© book on web design that suggests a simple paper-and-pencil mockup: When the user taps with the pencil eraser on a printed “link” on one piece of paper, the demonstrator flips to the next “page” (piece of paper) to show how the application will flow. Interesting idea!

Client: Fully participate in the development process.

Don’t wait until it’s time to use the application in production before you really focus on what it’s doing. (It is very disheartening to a developer to feel like they care more about your software than you do!) Don’t just sit back and watch the demos. Instead, get your hands on any in-progress staging app that the developer can provide for you, and really use it to practice against your business processes. Don’t have just one person (whoever draws the short straw!) assigned to “work with the developer”, either. Have several of your best minds really exercise in the test system. This will take significant time and energy. But it will end with a product that you completely understand and are comfortable using.

Developer: Adapt the computer to the person as much as possible.

Even though taking the default settings, screen flow, and layouts may be easier, those may not be the most comfortable for the client. Especially for the real pain points, remember that you can take a little extra time to code it once but give benefits for the life of the system. Also, remember that even though you have done the same keystrokes through the same screens a thousand times during testing, your client probably has not (although hopefully they are doing a lot of their own testing also, per the previous point).

Client: Be flexible. Don’t nit-pick.

Each time that you ask the developer to do a lot of coding around a rare exception, that takes time (therefore, money) and introduces complexity, room for error, more difficult maintenance and headaches for everyone. Be sure that it’s worth it. Can you manually handle that one situation that happens a couple of times a year? Does that button really have to be positioned “just so” in order for you to do business?

Developer: Remember that the client is still keeping their business running.

They were occupied full-time before the project started. That full-time work still needs to be done even while the project is in progress. They will be carving out time to work on the software with you, but it may be a tight squeeze for them.

Client: Embrace full ownership and responsibility for your application.

Don’t fall into the trap of thinking that because it is on the computer, then it’s only the developer’s responsibility. The application is your tool to run your business. Just as you don’t expect the oven manufacturer to do the cooking, don’t expect the developer to solve issues with how you’ve entered the data. Good applications work to empower the users to be independent; they shouldn’t need developer help for common issues.

Developer: Realize that the client is (probably) not trying to drive you crazy.

They are just trying to do a good job at their business.

Client: Realize that the developer is (probably) not trying to drive you crazy.

They are just trying to do a good job…at their business of creating software that is useful to you.

By viewing the new software application as a joint project, and working with one another with mutual respect, the chance of ending with a valuable business tool becomes much greater. Happy developing!

  1. In my first programming class, I was surprised to learn that a computer can’t count. It doesn’t know how to go 1…2…3. Instead, it creates a placeholder named “counter” that starts with a value of 0, and then adds +1 to it each time it needs to increment. Yes, even with modern technology, it’s still that dumb!

Leave a Reply

Your email address will not be published.

Join our Mailing list!

Get all latest news, exclusive deals and service updates.