In the demanding, 'net-speed, pressurized world of software development, software professionals would do well to reflect on some truths about their customers, their industry, and themselves. Following a few tips will help you achieve what is ultimately the most important issue - satisfying the customer.
Developing What the Customer Wants
OK, so we all know staying ahead of rivals is a constant challenge in today's highly competitive software industry. And then there's the daily battle of proving to existing customers and prospects alike that we software purveyors can supply what is needed. We'd like to think that we provide customers with software they will love to use. But if we hold a mirror up to our work and look closely, do we provide any service beyond the lines of code? There's more to providing a good product than just generating basic functional code. If we aren't producing the intrinsic value-adds that should be supplied in our products, we might soon be spending our days job hunting, wondering where we went wrong. Here are some guidelines we can follow to help prevent that from happening.
Embrace Creative Depth
Since customers aren't software designers, they aren't always aware of the possibilities of our magical world; therefore, they don't always know what they can ask for. Creativity is left to software professionals. Consequently, providing the customer with a product that we would be excited - yes, excited - to use ourselves becomes our responsibility. Our results should always exceed the customer's expectations, and not burden them with frivolous bells and whistles they may never use.
We must reject the "minimalist" approach of simply giving the customer "what they ask for." We have a duty to build "robustness" into every line of code delivered. After all, what's the point of writing software that only serves the basic needs of our customers, then later requires improvement? And where is it written that we cannot expand the horizons (and the capability) of our software right out of the gate, to make it as attractive as possible to as many customers as possible?
Know the Customer. Let the Customer Know You.
How is this miracle accomplished? Actually, it may be simpler than we think - start by talking to the customers. Study and ask questions about their jobs. Learn the ins and outs of daily tasks. Discover key functions that are necessary for completing those tasks. The more we know about the customers' needs, the better we are able to provide good solutions. Sure, understanding our customers' worlds is difficult, time-consuming, and requires more preparation than simply creating our software in a vacuum, but we must understand their pain. We're talking about our customers here - they keep us in business.
People inherently mistrust or fear things not understood. Not every software user has our knowledge and confidence in the functionality and dependability of a program. A "timid" user accepts the notion that software will do what it is supposed to do, and believes he could never understand how it all happens. But even the timid user knows how to simplify his job. Therefore, we are obliged to make the software's usability as intuitive as we can to help him accomplish his tasks with as little doubt or angst as possible. This means judiciously placing "feel good" tidbits into the product: reminders, success messages, on-screen instructions, help text that's truly helpful (plain English, please), etc. Let users know what should be done, what was improperly done, that all is well, and finally, that they did things correctly.
The flip side of the coin is getting our customers to learn more about us. Software professionals traditionally fail at building legions of raving fans, in part because we rarely dispel the air of mystery surrounding our profession. We clandestinely revel in this self-serving secrecy about what we do and how we do it. But