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