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