I was asked by a client today to provide 4 bullet points to include in a job description for a developer position that will be primarily responsible for SQL Development. I explained that my preference is to focus on database engine first, then worry about T-SQL. Too many times I see customers who focus on “code skills” for database developers. And end up with coders who don’t understand the engine, physical storage, indexing, data modeling, etc.
Anyway, here is what I came up with.
- Must have a strong understanding of the SQL Server database engine works, including but not limited to: Physical storage, indexing, physical database design best practices, and the Query Optimizer.
- Demonstrated ability to create normalized database schemas utilizing data modeling discipline. Understanding of normalization, de-normalization, and the difference between the two. Ability to create schemas for both OLTP and OLAP databases.
- Ability to both write good T-SQL code, and assist developers in tuning theirs. Understand the difference between T-SQL that just returns the results asked for and good T-SQL.
- Understanding of various SQL Server features such as SSIS, SSAS, SSRS, XML, Service Broker, Full-Text, etc. and how they are used. Expertise in one or more would be a plus.
This Post Has 2 Comments
I guess my only comment is the forth point should be tuned based on needs of the hiring shop. I worked for a place that was deeply invested in XML on all tiers, but had no need to use SQL’s internal reporting services. A consulting house would need a jack of all trades.
As far as knowing the internals first, and T-SQL second I agree. As a programmer who has to wear the DBA hat, I never say “I wish a real DBA could show me how to use @TSQL_KEYWORD” and I can read a query plan and know if it looks ugly. However, beyond “it normalized”, columns are as small as possible and “CI SEEK > NCI SEEK > IX SCAN > TABLE SCAN” I don’t know what to do.
Good points. My thought on bullet 4 is that anybody who claims to know SQL Server should at least know what each of those things are. And then you could delve into expertise on a given feature depending on needs.