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