The developer is responsible for doing everything that makes his code a) correct and b) fast.
This, of course, includes creating indexes and tables.
Making DBA accountable is a bad idea. What if the code is slow? Who is to blame: a developer with bad code or a DBA with a bad index?
A DBA needs to transfer database support operations such as creating backups, creating infrastructure, etc. and report a lack of resources.
He or she should not be the only person to make decisions that affect the operation of the entire database system.
Relational databases are not yet in this state, which would allow sharing the responsibility so that developers can make queries on the right and DBA can make them fast . It is a myth.
If there is a lack of resources (for example, the index makes the query fast, if the operation of some DML slow), this should be reported by the database administrator, and not fixed .
Now is the time to make a decision. What do we need more, quick request or quick insert?
This decision must be made by the program manager (not the DBA or the developer).
And when the decision is made, the developer should be given a new task: "Make the SELECT query as fast as possible, given that you do not have this index." Or, "make the INSERT query as fast as possible, taking into account that you will have this index."
The developer should know all about how the database works when it works fine .
A DBA needs to know all about how to make a database work fine .
The latter includes the ability to backup, the ability to recover from a backup, and the ability to detect and report resource conflicts.