An open letter to anyone with “SQL Server” on their resume

Dear Sir or Madam,

I have your resume here in my hand and couldn’t help but notice that you have listed several versions of SQL Server in the experience section.  You may be an interviewee for a position in SQL Server, a .NET, or some other IT related discipline.  Regardless of which particular job you’re going for, I would like you to commit a few things to memory regarding the above-mentioned bullet point on your resume. Take these notes as reminders in the kind and helpful manner in which I mean them.

Data Types are Important

If you have touched SQL Server enough to warrant a line on page 1 of your resume, you need to know some of the extreme basics, such as data typesData types are the fundamental building blocks of databases, so take a few minutes to familiarize yourself with a few:

  • char and varchar are slightly different. char is a fixed-length string type; varchar is a variable-length string type. However many characters you declare your char field or variable to have, that’s how many it will have. Set a char(4) equal to ‘a’, and the string will actually by ‘a   ‘. (Note their comparable Unicode types, nchar and nvarchar.)
  • There are several different date and time types, each of which have a different precision and date range.
  • Briefly familiarize yourself with the integer data types (part of the family of exact numerics, which also includes decimal and others).

SP_ means System Stored Procedure – Don’t use it

Don’t begin your stored procedures with sp_.  In addition to the reasons listed behind the link, a stored procedure whose name begins with sp_ will cause SQL Server to look in the master database for the SP, before it looks in the current database. That’s what we call a performance hit.  And certainly, don’t be like this guy

Database Objects are Important

Again, if your work with SQL Server warrants a page 1 bullet, it’d be an awfully good idea to know of a few database objects.

  • Tables contain rows of data. Each column in a row has a name and a type.
  • Indexes make tables more quickly searchable (for reads). Indexes come at a cost to writes (inserts and updates).
  • Stored Procedures are saved in the database. They can accept input parameters, contain one or more statments, and return a value. Stored procedures can be called manually, or from applications or scheduled jobs.
  • Triggers are similar to stored procedures, but they are event-driven: they are defined to execute when a specific event (such as an insert on a table) occurs.

Know What you Know

ORMs are not “faster” than SQL Server. Oracle is not “better” than SQL Server (or, necessarily, worse).  SQL Server 2005 didn’t make DTS “better” than SQL Server 2000. There is no SQL Server 2003. There is no SQL Server 2003. There is no SQL Server 2003. There is no SQL Server 2003. There is no SQL Server 2003. There is no SQL Server 2003. There is no SQL Server 2003. 

There is no SQL Server 2003. Know what you know, and don’t claim to know more. 

If you didn’t know most of the above, then you might think about removing SQL Server from your list of skills. 

Helpfully yours,
Jen McCown
MidnightDBA.com/Jen

P.S. To the folks I have interviewed thus far in 2012: None of this is actually directed at you, but you did inspire me (due to remembered interviews).  Good job, seriously.

20 thoughts on “An open letter to anyone with “SQL Server” on their resume”

  1. I participated in some screening for SQL developer jobs. One applicant, let’s call her Sue Withoutaclue, had a good looking resume with a SQL Server MCITP. Asked what normalization was, she said she’d heard of it but couldn’t explain. Asked for one or more reasons why you would have the same table in a query twice, she didn’t know that you could and couldn’t imagine why anyone would want to. Another person there asked her how she would go about designing a database and we heard about talking with the users and writing down what data they would need. Ok, and then what do you…. At about that time Sue realized she was bombing this and suddenly blurted out that she didn’t want this job anyway because she’d have to move and didn’t want to, and wasn’t going to continue with the interview.

    So I learned not to read too much into basic certs. But Jen, I’m sorry to say that I think anybody who would put more on their resume than they should is also too stupid to read your blog.

  2. My favorite interview question/response thus far has been “Users complaining about apps not responding, you suspect database blocking, how do you check and how to you identify the blocking process?” The response – “I would use the Index Tuning Wizard.”

    Thank you for coming in… Next?

  3. My biggest pet peeve lately when interviewing candidates is when I ask the candidate to enumerate the kinds of joins. This should be so easy, but the answers I’ve been getting to this question really bother me. Specifically, a UNION is not a kind of JOIN, and if you tell me it is I will not hire you, and I’ll probably not tell you why you failed the interview.

    I expect to hear INNER out of most candidates. I will probably accept LEFT and RIGHT, even though technically those are really just OUTER joins. If you want to impress me, you’ll know that there’s a third OUTER join called a FULL OUTER JOIN. If I hear CROSS join, I’d be ecstatic. I’m not sure why this dirt simple question stumps so many “SQL experts”. Bah.

  4. @MattMc3 This stuns me. I wouldn’t think it possible to write much t-sql without using outer joins. And sometimes nothing but a cross join will do. What are these “experts” doing in such cases?

    I actually don’t call outer joins “outer”. I write and refer to them as left join, right join. I’ve been developing in SQL for fifteen years and have never once used a full outer join, so I couldn’t dock anyone for not knowing what it is. It’s powerful, but cases where it is needed are rare. How about APPLY and the two ways to use it? It’s an operator, not a join, but I wouldn’t show someone the door if they named it as such. Of course, I’d ask how they use them……

    Anyway, what I want to know is how these people ever got a sql job in the first place.

  5. It’s not just prospective employees that make glaring errors – I’ve seen a job *advertised* as requiring experience with SQL Server 2003, so it definitely works both ways!

  6. Was involved in doing phone interviews for DBA’s at my previous job and the number of them that did not know or could not articulate the difference between clustered and non-clustered indexes was something that I found astonishing.

  7. Thanks for the tip about removing SQL 2003. Silly mistake.
    I needed something to fill the empty space it left, so I put in the other 2 main Microsoft Databases; MSAccess and MSExcel ;-)

  8. Yep used full outer joins and cross joins, but of course it’s not necessary to specify CROSS JOIN, just list the tables themselves without any joins. And most joins can be created without the use of the JOIN clause and using just WHERE clause.

    1. I suspect it’s because of the mental tie-in with Windows…
      – Win 2000, SQL Server 2000
      – Win 2003, SQL Server 2003-I-mean-2005
      – Win 2008, SQL Server 2008
      – Win 2008 R2, SQL Server 2008 R2

      One kind of can’t help it, unless of course one actually tries.

  9. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003. There actually was an SQL Server 2003.

    1. No, there wasn’t. There has never been a publicly released version of SQL Server labeled “2003”.

      Is there a non-official “2003” version you’re referring to?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>