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