<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...
- The Rust Journey, Part 0: Why Systems Software and Why Rust?
- Operator Overloading in Python
- How to Plot Mathematical Functions in 10 Lines of Python
- Starting and Running Your First Program on a Mainframe
- View more posts...
Back to top