20 Sep 2008

The Database Job Situation in England

Well, I'm back in "Blighty" (that's slang for Britain). I've been trying for the last 2-3 weeks to find jobs in the UK.
Since I wrote a while ago "Which Database to Choose When Looking for a Job", I wanted to continue it with some of my findings. I did a lot research on IT specific job sites and used 2 main searches, "database developer" (because that's what I want to do) and "mysql" to help me find job posts that I was interested in.

Jobs Situation for "Database Developer"

I'll describe the results for this search in percentages.
Firstly, 90% of the jobs are for MS SQL server. Those jobs usually stick to mainly developing and not administrating. In those 90% you have a good mix of junior positions(22-28k GBP per year), medium paid positions (30-45k GBP per year) and advanced positions (50-70k GBP per year).
The second 5% are for Oracle developers. Almost always it is developing and DBA'ing. The positions are usually medium positions (40-55k GBP per year) to advanced positions (60-90k GBP per year).
The third 4% are for Data Analysts. Usually this would mean 80% chance of MS SQL and the rest would be Oracle or mixed Oracle and MS SQL experience. Data Analysts are usually half ETL developers (because they need to get the data first) and half report builders. You would probably have to have some data warehouse experience. Jobs pay 30-55k GBP accordingly and mainly require you to know SQL, some statistics and a lot of experience.
The last 1% are Data Analysts again, but this time with an emphasis on Excel, VBA, Access and SQL server (a lot of people write MySQL here by mistake and it shows up on my other search :) ). This is more for businesses to analyse data or help other peole analyse data by helping them out with Excel functions. These jobs are mainly for finance sectors and quite a bit of stock trading companies and require a lot of statistics knowledge. Jobs pay 35-70k GBP per year.


Job Situation for "MySQL"

So this is 98% PHP and MySQL positions. Its almost always together. Jobs can be for junior positions (18-22k GBP per year), medium positions (25-32k GBP per year) and advanced position (35-55k GBP per year).
The second 2% are Java Developer positions with MySQL inside the wording. Jobs seem to pay 20-30k GBP per year and are usually related to website. By the way, I saw 1-2 Ruby developer job posts on this MySQL search, but that doesn't mean I would get the same if I just did a search for Ruby.
The next 1% is for Linux and Windows Administrators that need to setup MySQL and Oracle as well as maintain the system itself. Some posts are for Linux platforms only but more then half require you to know both Linux and Windows servers. Jobs pay 40-55k GBP per year.
The last 1% is for MySQL Administrators. Jobs are only for advanced positions with 3-5 years experience being a database admin for MySQL. Sometimes its a combination of Oracle and MySQL. Jobs pay 40-55k GBP per year.


Trends I Have Noticed

Clearly, if you want to develop with databases in the UK, you would make your life easier and focus on MS SQL server. This could mean focusing on
  • T-SQL between databases
  • Helping out VB.NET or C# developers
  • Doing ETL work with the built in packages MS offers you
  • Doing Reports with the built in packages
  • Maintaining the database and optimizing it
It seems to me that if you want to get a job working on developing in databases, MS SQL would be a really good place to start. Sectors that usually use MS SQL are finance, banks, insurance, health.. and almost all other companies in the UK apart from Web companies.

Web companies on the other hand (the large ones or digital advertising companies), use a combination of MySQL and Oracle. From the examples I have found, they use MySQL for the actual websites and then get the data (ETL) into Oracle (which they use as a data warehouse) to analyze it and make Excel reports. They said that Oracle is much better at analyzing functions. They do admit that they could "eventually" write the code they in MySQL, but the additional functionality in Oracle saves them time.
I would argue that they should just use some ETL/Reporting suite like Pentaho or Jaspersoft. Both produce Excel reports, both are more GUI-y than hand-coding SQL and probably are a better investment for their purpose.

Finally, PHP developers are expected to be "smart enough" to maintain and optimize MySQL databases. In small web companies, this is usually the standard as they may not have enough money to hire someone specifically to maintain the MySQL server(s). This problem can also be found in .NET environments, however, there are much more .NET environments that can afford to hire someone who specializes in databases.


Bibliography

The websites I used were:


I hope this post helps other people who are looking for Database jobs in the UK.



Edit: For thos interested, I have found a copy of a test some employer asks its future MS SQL developers to do.

Test

1. If table X contains 5 rows and table Y contains 7 rows, how many records will be returned by a CROSS JOIN on both tables?

a. 5
b. 7
c. 12
d. 35

2. What is the maximum number of clustered indexes that can be defined on a table?

a. 8,032
b. 1
c. Unlimited
d. Depends on the SQL Server edition

3. Which of the following statements is NOT true?

a. A composite index consists of more than one column
b. A composite index cannot contain an identity column
c. A composite index can also be clustered
d. A composite index can also be unique

4. Using the Latin1_General_CI_AS collation, what is the result of the following expression if @Country = ‘USA’?

ISNULL(NULLIF(@Country, 'usa'), 'United States of America')

a. USA
b. usa
c. United States of America
d. NULL

5. Which of the following is not a T-SQL function?

a. COALESCE
b. CONVERT
c. TRIM
d. NULLIF

6. When creating a VIEW, you can only specify an ORDER BY clause if:-

a. TOP is also specified
b. the SCHEMABOUND option is also specified
c. the GROUP BY clause is also specified
d. all the columns specified in the ORDER BY clause are contained in the SELECT list

7. What does the following query do?

SELECT COUNT(so.name)
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE sc.name = 'Site' AND xtype = 'U'

a. It counts the number of COLUMNS in the VIEW named ‘Site’
b. It counts the number of VIEWS which contain a COLUMN named ‘Site’
c. It counts the number of TABLES named ‘Site’
d. It counts the number of TABLES which contain a COLUMN named ‘Site’

8. How do you produce a carriage return and line feed in SQL Server?

a. CHAR(10) & CHAR(13)
b. CHR(10) & CHR(13)
c. CHAR(13) + CHAR(10)
d. CHR(13) + CHR(10)

9. Which of the following statements would you use to disable a trigger on the Employee table called Employee_ITrig?

a. DISABLE TRIGGER Employee.Employee_ITrig
b. ALTER TABLE Employee DISABLE TRIGGER Employee_ITrig
c. ALTER TRIGGER Employee_ITrig DISABLE
d. ALTER TABLE Employee DELETE TRIGGER Employee_ITrig

10. What is syntactically wrong with the following statement?

UPDATE Person SET Surname = 'O'Reilly' WHERE PersonId = 10

a. If PersonId is not unique, you may update more than one row
b. There statement is missing a fully qualified table name
c. There is an unterminated literal string within the statement
d. There is an ambiguous field name within the statement


Reblog this post [with Zemanta]