customer tests language requirements practices work application type name programming good support development needed option user process java person domain important project systems create company business needs specific product education content solution open programs code program cost design computer management source customers applications developer programmers time testing projects instance number employees developers operating data