What are the main database-related job roles?
In DB worlds that don’t use a lot of stored procedures, you don’t see this as a specific role; in MySQL and Postgres shops, stored procedures and such aren’t used as extensively as they are in Oracle shops, so these are typically written by DBAs whenever they’re used.
DBAs typically have deep knowledge of a particular DB engine and its various tunable parameters, such as Oracle, MySQL, SQL Server, etc, and its host environment. In many shops, DBAs also wear system administrator hats. They have to know SQL reasonably well, and have to have good knowledge and intuition to help to tune schemas and individual queries to improve performance. They are also skilled at scripting and simple-to-moderate programming as needed to do things like automate backups, monitoring, and database failover/cutover.
Nowadays, a good DBA will also need to know how to deal with “the cloud”, and tools and practices around it.
DBAs who get particularly skilled at database parameter tuning can make good money doing consulting work.
- Database designer” or “Schema designer”; someone who has specific and in-depth knowledge of Database schema design.
A schema designer may not be as deep in the technical specifics as a DBA - or they may be a DBA who decided to “dive into” schema design - but they should be skilled at designing highly scalable database schemas that match application requirements. They’ll also have good architect-level knowledge of how particular DB engines behave at-scale.
They are typically working with application developers and product managers in earlier phases of application design than DBAs tend to be.
Many enterprises - especially bigger ones - call this type of role “database analyst”.
Many database people who work as consultants are spending much or most of their time doing schema design - or redesign if it’s been not done well (which it often hasn’t)…
- SQL Developer.
In large Oracle shops in particular - and I understand this role exists in large SQL Server shops as well - there may be lots of stored procedures, triggers, and SQL scripts. In such shops, there is a programmer role for people who specialize in coding and maintaining these scripts as general developers.
In DB worlds that don’t use a lot of stored procedures, you don’t see this as a specific role; in MySQL and Postgres shops, stored procedures and such aren’t used as extensively as they are in Oracle shops, so these are typically written by DBAs whenever they’re used.
- “Database Engineer”.
I put this in double-quotes as this is a sort of catch-all job title for “person who does database stuff”. Someone with this title may be a DBA, a schema designer, a SQL developer, or often a combination of some or all of these tasks. A person with this title will be a SQL and database expert, and will be expected to be the “go-to person” for all things database-related in the organization.
- Backend Developer.
In many large-scale web environments, there are too many nontrivial “moving parts” for true “full-stack developers” to be able to do “top-to-bottom” work. In these environments, “backend developers” will be responsible for code that interacts with the database as well as sending it to the “front end” application, often using REST APIs. Such a developer will need to at least know Object–relational mapping tools very well - as well as when to *not* use them - and frequently they’ll need to directly generate SQL code in their applications. They’ll also typically be expected to know some schema design and query tuning, so a good backend developer will need nontrivial SQL and vendor-specific database knowledge.
- Data Scientist
In a similar vein as Backend Developers need to “know databases” to do their jobs well, data scientists need to be skilled at dealing with databases to do their analytics roles. Many of their daily tasks involve moving data from production databases into analytics databases and performing complex analytics queries on the data. So, they’ll need to know SQL extremely well, and have some skill at query tuning, as well as other skills more seemingly related to their actual analytics work, such as statistical analysis, etc. But you won’t be a successful data scientist in most companies if you don’t get Very Good at SQL.
- Database Kernel Developer.
Someone has to actually code the DB engines that all the above people are using, and this person would be a database kernel or database engine developer. There are actually many sub-fields in db kernel development, including “front end” (parser and query optimizer coding) and “back end” (storage and page management, lock manager, etc), and many others (client APIs, networking, etc). Most of this would be done in C or C++ (in most of the big relational databases), or occasionally Java in some NoSQL DB engines.
As for me, at the moment, I’m a “Staff Database Engineer”, working with about 800 DB instances in a production cloud environment. I spent about 25 years as a Database kernel developer on various DB engines, including Postgres.