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