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