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