Friday, September 18, 2009

What makes a MySQL Developer?

I would like to hear some opinions from the MySQL worldon what knowledge does it require to be a MySQL Developer?

Not the folks who write the MySQL server code but a developer who really knows their stuff when programming with MySQL? The MySQL 5.0 developer exams going under a review. The hands on exam for 5.1, which has been hindered by other chores, is also under construction. But I still have a fundamental question : What makes someone a MySQL Developer?

The course book from the MySQL for Developers class is very thick and filled with a lot of information. It covers a broad spectrum from basic SQL to query optimization. None of it is programming language specific (or covers approaches like using PDO versus mysqli in PHP). And the contents are all good things for anyone trying get data in or out of a MySQL database. But nothing in it says that factor [X] makes a good MySQL Developer.

So what do you look for when hiring a developer for a project that will require heavy MySQL server interaction?

Do you have them optimize queries or do you leave that for a DBA? How much do you value the use or understanding of stored procedures, triggers, or partitioning?

Employers and project managers: If you could use the MySQL Developer certification to screen applicants for a position, what do you want stressed on the exam? And what do you not want stressed?

What knowledge or skills makes the difference between a good and a great MySQL developer?

This is your chance to make your opinions known.


Sami said...

I think that all of the developing wise issues should be satisfied in the developer (stored procedures, triggers, views, etc ...). So the knowledge of all this issues is the evaluation factor of developers. In my opinion, MySQL for Developers class should involve the techniques of dealing with the database elements using the most famous languages (e.g. php). I'm MySQL Certified DBA... And think that the queries optimization is a mutual issue between developers and DBA's..

sapphirecat said...

That's a really interesting question. If you're a small company who can't afford a separate DBA, then you really want your developers to understand optimization and database design, in addition to core knowledge.

If you do have a skilled DBA, then the qualification for developers is a little lower--as long as the corporate structure doesn't keep DBA and developers from effectively going to war against each other.

Developer-wise, truly core knowledge would cover knowing what datatypes are available, knowing when (and not) to use BIGINT, how to write basic queries and how to avoid silly pitfalls doing so (WHERE vs. HAVING), and understanding how SQL represents array-like data. Depending on the API they are using, they may also need to understand mysql_use_result vs. mysql_store_result, and how the MySQL types are returned in their language.

Any DBA or developer/DBA should also understand normalization, data type sizes, indexing, EXPLAIN, storage engines, and privileges. And anyone dealing with privileges should know it in as much detail as possible, e.g. how granting access to a `foo_bar` database also grants access to fooxbar, foo3bar, etc. because LIKE syntax applies. `foo\_bar` limits access to foo_bar only.

Morgan said...

I'd say that developers need to:

* Know about datatypes
* Be able to optimize simple queries
* Understand the best way to solve common application patterns (pagination, hierarchical lists, tag clouds, friendship networks).

The last one is incredibly difficult to test on. It might be interesting to set up a few theoretical examples and have them make comments / provide answers related to them.