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