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