Today we have many titles for what many believe is essentially one role. They have evolved over the years into very specific roles of their own.
- Programmer/Developer – read and write code which is specified for them.
- Analyst & Programmer/Developer – programmer/developer + the ability to specify, design, and document a software component.
- Data Scientist – developing methods of creating, updating, reading, deleting and analyzing data. NB: Data Analysts interpret data
- Software Engineer – Analyst & Programmer/Developer + Data Scientist + ability to specify, design, and document a software system of multiple and reusable components. Better ability to be self-managing and high-performing team member.The engineer sees the wider picture and communicates with other team members near and far to build a system to a specification that both during and after construction does not impede other engineers, developers, and programmers. An engineer is more object-orientated.
Pre-Y2K it would not be unusual for a single software engineer to perform all four tasks but now nearing 2020 the art of software-engineering is being sub-divided further still with fewer practicing software engineers left. It should be stressed though that a software engineer is not a “jack of all trades and master of none” as they are quite capable of being a master of all software engineering.
Is this sub-division a good thing or a bad thing? That all depends on the projects you aspire to be on and how transferable you wish your skills to be.