What is a software developer? Everything you need to know about the programmer role and how it is changing