views:

424

answers:

3

We are often in the position of making decisions about which operating systems, programming languages, third-party libraries, and other tools to use while developing systems. This is often a guessing game, as you often can't know how good a fit a particular tool will be until after you have developed the system.

What are the things that are most important to consider while choosing development technologies?


Highly-rated answers will be summarized here:

  • Project goals - Are to designing an important production application or a proof-of-concept? Are you looking to expand your technological base? What is your customer base?
  • Applicability and value - Does it really solve a problem for you? Is buying it preferable to making something similar yourself?
  • Customer preferences - Will your customers want to buy products or services from you that are based upon this technology?
  • Developer and staff preferences - Is this a tool that developers will want to use? Will it improve morale or working conditions? Is it appropriate for the size of the team? Will you need some people to be specialists?
  • Product maturity - How long has it been around? How many other systems have been implemented using it?
  • Vendor maturity - How long has the vendor been around? Do they have a good track record? Can you expect the product to be supported for as long as you will need it?
  • Innovation - Does the product provide an improvement over existing systems? Does use of this technology give you an edge over the competition? Do the perceived benefits outweigh the risks of using an unproven technology? Do you value innovation for its own sake?
  • Support
  • Compatibility - Will this tool work with other tools you have selected (or might select in the future)?
  • Openness - Is it based on open standards? Are compatible products available from multiple vendors? Is the source available? Can you customize it for your purposes?
  • Training - How long will it take for developers to learn to use the tool or technology effectively? Can developers train themselves, or will outside training be needed?
  • Skill availability - Can you hire people who know how to use it?
  • Price - Can you afford it? Is it a one-time cost, or ongoing? How do you factor in all the associated costs (training, hiring, support, etc.)?
+1  A: 

The fun you or your team will have learning/using the technology should be considered as well.

All other things being equal or very similar, choose the most fun.

Vinko Vrsalovic
+1  A: 

Like in everything else first of all you need to decide is what important for you.

There is no objective scale for price.For example, for big company, price might be not an issue at all,let assume you need to spend a budget before end of the year :), for small company or even freelancer it's might be a little bit more important.

The maturity almost (or almost always) will contradict with innovation so no objective preferences again.

Value sounds to me like strange criterion if there is no value why buying ... Question make vs buy is legitimate and can be calculated, but project/tool specific as well.

Support sounds the really important criterion here, but again i can find an example where it's not important.

In short there is no answer to your question without context. It's probably should be tagged as subjective.

Ilya
+1  A: 

What is your target market? If you're developing a Windows game, using Macs might not be prudent, for example.

Likewise, if you're developing a web service, what type of server should it run on? Are your developers comfortable with asp.net? Using Windows and IIS could make sense. If they're all PHP and AJAX guys, the underlying server doesn't matter: so is Linux an OK choice?

Are you planning to release this tool/product/whatever as a service, a project, or a product? If it's a hosted service, you again come to what platform(s) are your developers already comfortable with?

If it's a product, to whom do you expect to sell? Corporations for desktop use? Windows should be in the running. Corporations for server use? Maybe Linux, and if so, probably Red Hat.

Once those decisions have been determined, move to asking your developers what they already know: if they've all had ad experiences with, say, Eclipse for Java development, go with that.

Also consider why you want to use new tools: is it new only to a couple developers, or are you using them because they're cool? Old standbys are almost always preferable to brand new tools because the learning curve is so low (or non existent) to existing developers.

warren