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