What are the roles and responsibilities of a software developer?