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