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.)?