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