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