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