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