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