<center>
# Map of All the Computer Science Subfields
*Originally published 2016-05-26 on [reddit.com/r/cscareerquestions](https://www.reddit.com/r/cscareerquestions/comments/36kbe3/what_are_the_main_different_type_of_programming/creq1x8/) as a comment.*
</center>
There are hundreds of different roles related to computer science that don't directly involve programming. Here, I make an attempt to divide them up into a few major categories, wich a short description of each role. I listed some jobs twice because they can have the same title but be focused in one department or another.
## Infrastructure
* [Sysadmin](https://xkcd.com/705/) (managing, setting up, and [keeping systems running](http://www.feedbooks.com/book/335.pdf))
* Dev-ops (creating & using tools that devs use to manage systems)
* Network Engineer (setting up, designing, and optimizing network infrastructures, TCP/IP, and other layers of the network stack)
* Data Center Ops (they keep "the cloud" running)
* Cable & Router Technicians (/r/cableporn)
* Database Administrators (generally wizards)
* Technical Support & Documentation (the incredibly tough bastards that actually deal with _ghasp_ users)
## Backend
* Full stack engineers (a little bit of everything)
* Backend Application Development (rails, django, node, etc.)
* Project Management (not always a technical technical role)
* Engineering Management (usually former developers get promoted to this job)
* Software Architects (planning out features before they are coded)
* API Design (designing the interfaces between systems)
* Security & Pentesting
* Distributed System Architects (dealing with [consistency, availability, partition tolerance](http://scale-out-blog.blogspot.com/2012/04/disproving-cap-theorem.html), timing, of large, globally-separated systems)
* Database Administrators (managing, maintaining, sharding, and migrating data stores, different from infrastructure-focused DBAs in that they are also writing backend code which interacts with the stores)
## Frontend
* Full Stack (a little bit of everything, but focused primarily on the pieces that support a frontend)
* UX/UI Front end designers (photoshop, indesign, sketch, html & css, etc. only)
* General front end web development (html, css, **and** js)
* Single-page app development (mostly with JS frameworks, e.g. angular or [react](http://react.rocks/))
* Quality Assurance & Testing (writing tests, doing human tests, making sure things work)
## Native
* iOS, Android, Windows Mobile, etc.
* Consumer-facing Windows Desktop, OS X Desktop, Linux app development
* Enterprise software development (large, made-to-order applications for businesses)
* IT administration & admin software design (often very system-specific, hence the Native category)
* Software Architecture (similar to backend architecture, designing features before they are coded)
## Science and Theory
* Scientific Research (loads of Matlab, R, and ipython and more)
* "Pure Compsci/Pure Math" Research (with haskell, lisp, lots more)
* Scientific Software Development (e.g. protein folding software)
* Data science (matlab, r, ipython, scikit-learn, etc.)
* Machine Learning (e.g. for [pagerank](http://en.wikipedia.org/wiki/PageRank), reverse image search, beer recommendation, used all over the place now)
* Compiler & Language Design (not many jobs but very useful to learn, maybe mozilla foundation & rust?, and Guido certainly gets paid by Dropbox :)
* OS Design (not just microsoft, windows, & linux, also qualcomm and lots of other telecoms hire [tens of thousands](http://www.glassdoor.com/Job/jobs.htm?suggestCount=10&suggestChosen=false&clickSource=searchBtn&typedKeyword=qualcomm&sc.keyword=qualcomm&locT=&locId=&jobType=all) of engineers to write embedded and mobile OSs)
* Compression (you can work for Hooli)
## Marketing
This field has lots of overlap with data science.
* Growth hacking/web scraping (selenium, beatifulsoup, phantomjs, scikit-learn, pattern, etc.)
* Analytics (GA, mixpanel, optimizely etc. closely tied with marketing and SEO)
* SEO & SEM (techniques to fuck with/obey search engines and convert $$ to visitors)
* General Marketing Development (salesforce, analytics, content-design, and SEO)
## Hardware and Graphics
* [Embedded Software](http://en.wikipedia.org/wiki/Embedded_software) (code that runs very close to the metal, e.g. the assembly code running your elevator)
* Chip Design & Architecture (wizards)
* Game development (very, very different from other kinds of programmers, questionably human)
* Graphics software development (similar to gaming dev, in my experience, graphics people don't frequently switch to app dev or vice versa, I'd love to hear your comments)
* 3D printing and machining coding
* CGI & Animation (e.g. disney. pixar devs gave a talk about the wonders of cgi development at Pycon2015)
---
![](https://i.imgur.com/TFwOLXM.jpg)
I probably missed a few, feel free to suggest changes...
Recent posts:
- So you want to build a social network?
- Mastering Project Estimation
- Typescript Validators Jamboree
- Revolutionize Animation: Build a Digital Human with Large Language Models
- View more posts...
Back to top