Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As a freelancer, I am often asked by my customers what they must choose between similar elements, neither of which being better than another. Examples:

“Do I need my e-commerce website be in PHP or ASP.NET?”

“Do I need to host this ordinary web service in Cloud or use an ordinary hosting service?”

“Which one is better for my new website: MySQL or Oracle?”

etc.

There is maybe at most 1% of cases where the choice is relevant, and there is a real, objective reason to use one over another, based on the precise metrics and studies. In all other cases, it doesn't matter at all. It is totally, completely irrelevant, either because there are no implications¹, or because those implications are too small to be taken in account², or, finally, because it's impossible to predict those implications³.

If you know one thing and not another one, the answer to those questions is easy:

“You can either write the application in C# or Java, both being probably equivalent in your case. Note that I'm a C# developer, so if you choose Java, I would not be able to work on your project and you would need to find another freelancer.”

When you know both technologies, you can't answer that.

In this case, how to explain to the customer that the question he asks is subject to flamewar and has no real consequences on his project?

In other words, how to explain that you've chosen to use one technology rather than an equivalent one for the reasons related to human resources, without giving the impression to be unprofessional or to not care about the project?


¹ Example: Is MySQL better (worse?), performance-wise, compared to Oracle, for a personal website which will be accessed by, oh, let's be optimistic, two people per day?

² Example: for a given project, I was asked to asset if Windows Azure hosting would be cheaper than the hosting of the same application on a well-known ASP.NET hosting provider. The cost revealed to be exactly the same.

³ Example: your customer have an idea of a future application (the idea itself being extremely vague). There is no business plan, no requirements, nothing at all. Just an idea. You are asked if Java is better than C# for this app. What do you answer?

share|improve this question
add comment

7 Answers 7

up vote 35 down vote accepted

how to explain that you've chosen to use one technology rather than an equivalent one for the reasons related to human resources, without giving the impression to be unprofessional or to not care about the project?

Well. You say just that:

In terms of the requirements for this project, technology X and technology Y are equally suited to the task, so technical considerations do not come into it.

It is easier to find talented people with knowledge of the chosen technology (or problem domain), which is why it was selected.

Or - for the purpose of this project, using technology Y is going to be more cost effective.

Tell it like it is.


You may want to find an analogy that the customer can relate to. Something like - for the purpose of getting from Europe to the US, you can go on a Boeing 747 or an Airbus 380. Does it matter which one? Not to the customer, so long as they get there and the technologies are equally suited to the requirements :)

Which one was selected? Whichever one the airline operates...

share|improve this answer
12  
+1 Couple of typos- Boing 747 sounds fun though. I'm picturing a giant pogo stick... –  MarkJ Apr 4 '12 at 21:04
4  
+1 for Boing 747 (Well, and the "talented people" part) - I was thinking of those inflatable castles occasionally seen at kids' birthday parties –  Izkata Apr 4 '12 at 21:10
    
If I were the client I might answer "I have no idea - but I'd like to think the pilot does." –  psr Apr 5 '12 at 17:32
add comment

I think your premise, that the decision is largely arbitrary, is worth questioning. I agree you don't want to end up in analysis paralysis where you have months of committee meetings, but it's worth some consideration. Viewed from a high level, technology choice is rarely arbitrary. It's key to business strategy as it strongly influences where a company can go in the future, and it's the developer's role to guide the company through the decision process.

The specifics of the technology, such as MySQL's use of B-trees versus those of Oracle, or PHP's syntax versus that of ASP.NET, are of course open to much religious debate among programmers and will really come down to your own taste. Since a similar consultant to yourself could easily have a radically different opinion, those things are indeed rather arbitrary. And it's fairly well-established that any developer who's competent in a given technology will do a good job anyway. So the more important issues for the business are not language minutia, but higher-level questions such as:

  • What's the deployment scenario? Certain technologies lend themselves to a more hands-off approach, especially if there are cloud hosting services like Heroku in place. Some companies will like that, others will need to host themselves, have a stronger presence of system administrators, etc.

  • What's the project lifetime and scope? PHP, for example, is arguably easier than Java to get a project started, but it is harder to scale and maintain for many years.

  • What kinds of developers will the technology attract? For Java, you'll more likely get those with enterprise experience. For PHP, you may get more crossover designer or system administrator types. For Node.js, you'll get more front-end and experimental developers, for Haskell, an academic crowd, etc. All stereotypes I know, but it gives the business some clues. Each of these groups have their own cultures, expectations about payment and work environment, and ways of working with each other and the rest of the organisation.

  • What's the availability of developers? Assuming developers have to be physically present, certain locales have particular ecosystems. In a city full of startups, there will be a lot of Ruby on Rails and PHP developers, in a city full of government departments, there will be a lot of Java/MS, etc. The vast majority of programming languages in the world must be ruled out simply on this basis.

Those are just a few examples. Which factors are most important will depend on the situation, but the main point here is that companies need to consciously adopt the technologies which fit their strategy, culture, and circumstances.

share|improve this answer
add comment

I would give the customer an objective comparison matrix on the feasibility of using that technology. For example:

“Which one is better for my new website: MySQL or Oracle?”

In your matrix:

  • Cost
  • In House Use
  • Scalability
  • Experience/Familiarity
  • Supportability
  • Tooling
  • Already In Use (Deployed)
  • Development Ease
  • Development Familiarity

Etc.

Depending on how many items in your matrix, one should quickly come up with score and determines the feasiblity of using that technology versus the other one. IN some cases MySQL maybe better, in others Oracle.

share|improve this answer
add comment

Explain it in terms they understand - money. You can tell them you picked X over Y because, even though they both would have been suitable for the project, you are more familiar with X than Y. And thus you'll be able to deliver the application at a lower cost to them when using X than if it was written using Y.

share|improve this answer
    
Yup, nothing wrong with this being the answer. If you know C# better than Java, it stands to reason you'd be more productive going with C#. –  Andy Apr 5 '12 at 1:35
add comment

"Would you rather drive a Ford or a Chevy?" would be the driving analogy I'd toss out to see if they can pick up the idea that the question isn't going anywhere. A similar question could be, "Which is better a hamburger or a pizza?" where without adding more constraints the question has a variety of possible answers one could give.

The other way to view this is to ask why is this important to know and depending on what additional material may be found by clarifying the question this may lead to a better answer. Some people may just wonder, "What was used to build my e-commerce site?" though they would rather try to be impressive and throw in a couple of buzz words.

share|improve this answer
8  
The Ford/Chevy and Hamburger/Pizza examples seem unresponsive/flippant. I would be irritated by such responses. –  Robert Harvey Apr 4 '12 at 20:45
4  
And the answer is always Pizza ;) –  Izkata Apr 4 '12 at 21:12
2  
@Izkata: ...eaten in a Ford. –  FrustratedWithFormsDesigner Apr 4 '12 at 21:35
2  
Be careful, Ford vs. Chevy can be a religious debate in some parts. A man could get hurt. –  Wyatt Barnett Apr 6 '12 at 11:24
add comment

There are rare cases where one technology is clearly inferior to another - "Should I develop my website in Python or Cobol?", but mostly it's a question of horses for courses.

There is a methodology I use for deciding which technology suits a client:-

  1. What do they use currently? More of the same is usually better than something new.
  2. Does the current technology have any constraints which will be exceeded by the new project? For example, they use SQLite, but they now expect 100 users to make concurrent updates.
  3. If the current technolgy is not suitable, then choose between the most popular open-source and the commercial market leader.
  4. Is the market leader significantly better than the open-source offering, and, are there differences significant to the current project?
  5. Having gone for open source or commercial, take a good like at the two nearest competing offerings and see if they are a closer fit.

Most of the time the choice stops at step two. If the client uses Acme Widgets, have people experienced in using Acme Widgets, have a set of standards, change control and management procedures built up around Acme Widgets and Acme Widgets can do the job then Acme Widgets is the way to go -- even if Ezee DohDahs is technicaly better for this task!

share|improve this answer
add comment

Lots of good responses already, but one thing I noticed hasn't been mentioned: this is an excellent opportunity for full disclosure on your part. For example,

"Now I make my living primarily from technology <foo>, so I'm not completely impartial. However ..."

I really think you gain credibility by this kind of statement.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.