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