I found a career categorization on an ACM site that I found particularly resonant. It breaks "software development"/IT/"computation" down into four areas:
- Career Path 1: Designing and implementing software.
- Career Path 2: Devising new ways to use computers.
- Career Path 3: Developing effective ways to solve computing problems.
- Career Path 4: Planning and managing organizational technology infrastructure.
I've though about the appropriate categorization of computing/software tasks a lot over the years. My breakdown is similar, but in a different order:
- Technology infrastructure: DBA's, network/storage system development, architecture (ACM career path 4)
- Software engineering: How to make software that's modular, easy to ship and robust (ACM career path 1)
- Algorithm development: new techniques for doing computation (ACM career path 3)
- User experience/productivity enhancement: helping people do their jobs better/more effectively (ACM career path 2)
My order is back-end to front-end. One needs to be more customer focused when moving along the axis. This is clearest in the contrast between the first and last categories, and probably only lines up this way in the support of particular domains, e.g., science/finance).