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