Software Development optimize

Putting the client before the technology, by putting the right technology before the client


When recommending a solution to a client, I'm easily tempted to go with what I know or like best -- but of course I owe it to the customer to recommend what will work optimally for them long after I've moved on to other engagements.  I've often found that what fits their need depends not so much on technology as it does on culture and prior investment.

Ruby (and Rails) makes development both easy and powerful, by trusting the developer with great freedom.  You can do virtually anything you want, even modify the framework itself or all classes in general (sometimes with unintended consequences).  So before you can recommend using Ruby for a project, you have to know that your client can trust their programmers to innovate.  If they're all enchanted with type safety and "best practices" and protecting the programmer from (him|her)self, then they'll be much more comfortable with .NET.  If their existing servers are all running IIS and their programmers already know VB or C#, that'll seal the deal.

JSON may be cleaner than XML, and a RESTful API is simpler than a SOAPy one.  But if your client needs to consume existing services made of envelopes and angle-brackets, it may be better for them to continue using the old bad standard than to build a translator to the new and improved one.

The ideal technical solution might best be written in Lisp, but it ain't gonna fly unless the programmers can achieve parenthesized Zen whenever coding is required.

I'm sounding pretty fatalistic here.  The consultant also has a duty to introduce clients to new technologies that can make their lives better.  But most companies adopt such changes slowly and carefully.  Beware of trying to import a revolution, unless that change has already been initiated from the inside.

About

Chip Camden has been programming since 1978, and he's still not done. An independent consultant since 1991, Chip specializes in software development tools, languages, and migration to new technology. Besides writing for TechRepublic's IT Consultant b...

5 comments
Sterling chip Camden
Sterling chip Camden

Have you ever worked with a company that adopted too many new technologies too quickly?

apotheon
apotheon

I've mostly worked with companies that resist any change at any cost, unless that change can be described as "retrograde". It is often a tremendous uphill battle just to get a client to adopt some minor, simple alteration to its policies even if it involves an up-front savings, an ongoing TCO savings, [b]and[/b] an improvement in both security and productivity for everyone involved. With resistance of that magnitude being the norm, I think I'd die of a heart attack if some organization that was a client of mine wanted to advance operations [b]too fast[/b]. That's not to say that such organizations don't exist, of course. I know for a fact they do -- but I haven't had the dubious pleasure of needing to rein in a client on that side of the fence. From what I've seen, the companies that want to move too fast are usually consultancies and the like, not client organizations. I take great care to avoid falling into the trap of recommending too much advancement too quickly, not only because taking such advice to the logical extreme too quickly can lead to disaster, but also because doing so would be more likely to result in losing a client than in someone taking such poor advice too readily. In principle, for instance, I will almost always tell you that an open source system is a better bet than a closed source, proprietary alternative (all else being equal) -- but in practice, such a migration first requires years of cultural preparation within an organization. One client that I ultimately moved to Linux servers (and essentially lost the client because I was no longer needed to provide the constant support for failing MS Windows systems -- but I was happy to lose a client to good work that way) took eighteen months to go from 100% MS Windows to a combination of MS Windows desktops and Linux servers. To give you an idea of the sort of glacial pace of such changes in business, it took that 18 months for an office of [b]three people[/b]. Too quickly? No, I've never dealt with a client that adopted too many new technologies "too quickly". Have you had such an experience?

Sterling chip Camden
Sterling chip Camden

Where clients sometimes get in over their heads is when they make a reasoned decision to carefully adopt a new technology in their next release. Then they make another such decision, and another. By themselves, each one seems simple and conservative, but rather than having an additive effect on the complexity of the next release, they multiply it. Next thing you know, they're looking for ways to back-peddle on features so they can work out all the bugs.

Sterling chip Camden
Sterling chip Camden

... I think your experience is more the norm. One or two times getting burned by adopting new technology, and a company typically becomes overly cautious from then on.

apotheon
apotheon

This hasn't been a problem I've encountered, personally, with the sole exception of upgrading MS Windows versions. Of course, that's to be expected, generally -- so I didn't think of it at first.