Editor’s Note: Check out Matthew’s latest DBA Article.
On forums and LinkedIn groups dedicated to Oracle certifications, I often see people asking whether they should pursue the Oracle certification track to become a Database Administrator or a developer certification track (either PL/SQL or Java). As a general rule, their question revolves around “Which makes more money?” or “Which is in greater demand?”
The first question has no real answer. Some Oracle DBAs make more than some Oracle developers and the reverse is also true. The salary earned by anyone working with Oracle is made up of a complex set of variables that include regional norms, years of experience, type of experience, suitability for the position, company policy, and the bargaining skills of the person so employed. The second question is also unanswerable for the most part. Some firms employ a single DBA and multiple developers, others multiple DBAs but no developers.
As a general rule, I would say that there is a larger market for Oracle developers than for Oracle DBAs. In cities that are technology hubs, however, there are almost always openings for both DBAs and developers. In regions where there are few firms with Oracle databases, though, open positions for DBAs or developers may seldom if ever show up. Anyone who wants to start a career with Oracle should investigate the hiring environment for the area they are interested in. It is simple to look at listings for Oracle professionals using online job sites to get a feel for the companies in that area, what positions they hire for, and what the salary ranges are.
All of that is secondary, though. The question I have never seen asked but which is much more important for someone planning to start directing their career path is whether they have the mindset to be a good DBA or a good developer. There is a fair amount of crossover in the knowledge required for both positions, but the actual day-to-day responsibilities are extremely different. Most of my colleagues over the years have been solidly on one side or the other based on their own disposition rather than the salary or marketability of the two.
My own position is that of a DBA/Developer because my job responsibilities cover some of both tasks. My skills and interests lean much more heavily towards development work, though. I would not be as happy, nor as good at my job if I were a full-time administrator as opposed to a full-time developer. When making your decision, you need to pick the path that will work best for you. The right choice increases your chances of enjoying your work and being good at it. Bad DBAs and bad developers do not have great career prospects.
The primary task of database administrators is to maintain the stability of the database. In general, if the database is doing the exact same thing on Friday that it was on Monday, the administrator has done his job (obviously this assumes the database was running correctly on Monday). Much of what administrators do is a cyclical routine of ensuring that everything is happening as expected. They need to check the alert log for errors, verify that scheduled backups and exports were successful, ensure that no tablespaces are running low on space, and so forth.
The best database administrators that I have worked with are very methodical people. Much of the collection of information required by database administrators has been automated by tools such as Enterprise Manager. There still has to be a human in the loop, however, to look at that data and provide the human analysis and decision making that cannot be automated (yet).
Beyond routine database maintenance, DBAs also tend to work closely with users, assigning privileges, and fixing login failures or other problems. They must also coordinate with developers who are working on the system to ensure that any new procedures and packages run with the appropriate privileges and do not degrade system performance. They will generally allocate time to try to isolate and eliminate any bottlenecks that degrade system performance. At companies where the database is under development or is being expanded, senior administrators may be involved in designing the architecture of the elements to be added.
The primary task of database developers is to create new applications or expand the capabilities of existing ones. Their task might be to create code that can process data in a specific fashion; design an interface that allows users to enter, update, or query data in the database; or find ways of automating processes that are currently done manually. Whatever the specific task, the goal of database developers is to change the way that the database is being used. In general, if the applications running on the database have the exact same capabilities on Friday that existed on Monday, the developer has not done their job (with the caveat that most development projects take longer than five days).
The best developers are imaginative and have the ability to break down the process between a starting point and an end goal into discrete steps that can be performed by code. Developers that work directly with end users must be able to translate what users ask for into what they really want. When users (or managers) ask for the impossible, good developers should be able to explain why it is not possible and be able to suggest alternatives.
There is a significant amount of logic involved in development. If you like logic games and math puzzles, this is an indicator that writing code might be something that you would enjoy and be good at. Developers must be very detail oriented. Code is long, complex, and a single missing semicolon can prevents thousands of lines of code from functioning.
Run a web search for ‘What Makes a good DBA’ (or developer). Read through some of the articles and decide if it is describing you. Picking a career out of a hat because you have heard that the salary is good has a high probability of ending badly.