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