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