applications software developer education requirements