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