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