software career development