Google+ Badge

Friday, July 16, 2010

What does SQL experience really mean?

We all see it, job posting with a million technology buzzwords and you know you have some but not all of them so do you apply or not? Companies know they will not get a 100% buzzword compliant applicant so what areas are really required? I have spoken with places that want solid programmers, they are willing to train to their special needs. Others insist you have every requirement on the list, they don't have any time for you to learn.

Would you rather hire a person that is an excellent programmer or one that has dabbled in every framework out there but is not a finisher? I see 80/20 people a lot, they will get 80 percent of the way done with a project, get bored and move on. They are not finishers, they really don't know what it takes to complete a project through the whole QA cycle. They really don't care about bugs as they generally don't have to fix them because they moved on to another project. Their code generally reflects that because it is not extensible or maintainable. We have a research group for that. They prove that something is possible but we don't keep the code they write, we take the ideas, algorithms, how they tied together technologies and redo the code in a maintainable manner.

There is no way for you to walk into a new company knowing everything, being a senior developer on day one. You always have to learn their industry and company specific jargon at the very least and most likely will have to learn their industry business logic as well unless you stated in the same industry.

While you don't want to show up not knowing their core programming language not knowing a specific framework is probably not that big of a deal. If you know Java inside and out and have used Swing but not SWT should you instantly be eliminated for a place that used SWT? Many times you are. It is just a framework, we all learn new ones all the time. Most are very similar at the core. I was able to jump into C# / WPF due to my Java / Swing experience. The developers on staff with C++ / MFC experience hard a slightly harder road but they still leveraged that experience with relative ease especially if they are an experience developer. If they wrote crappy code in MFC they will write crappy code in WPF.

If you are a senior developer you are learning constantly. I have written custom controls in C, C++, Java and C#. The language is syntax and a there is a framework to use like Swing, MFC or WPF. Knowing how to write a custom control, all the little things to take into account for a usability standpoint, that is the real knowledge. I am not sure if hiring managers always realize that.

This brings me to SQL. I understand the language and have written queries and designed databases. I am no DBA and rarely write an SQL statement but I understand how it works and can look up specific syntax details when I need to write more than a simple query. Just like any language I will seek out the company experts if I feel I'm in over my head. When I interview at a job I try to state as much. I have been eliminated after various interviews for not having enough SQL knowledge. Did I undersell myself in the interview? Is it an excuse for some other failing? Are they really using that much SQL on a daily basis?

I need to find a better way to present my SQL skills in an interview. I don't want to lie or oversell myself but I don't want to have the door instantly closed either. At this point I don't have an easy way to gain SQL experience in my current position so I will have to work on whatever missing skills I have at home. That usually means coming up with a useful project to develop.

If your company has an open Java or C# developer position do you know how much SQL is actually generated on a daily basis? Is the team writing it constantly or is there really just one or two go to people on the team that write was is needed and they maybe write a statement once a month. Is the day to day development being done in Java only? Why do the hiring managers eliminate solid senior level programmers because they don't write SQL every day?

SQL has a fairly simple syntax and a limited usage goal - database manipulation. There are conditions where expert knowledge is needed, tweaking performance, evaluations of indexes and optimized usage of joins come to mind. The rest of it is pretty straight forward, I need this data, here are the tables, here are the indexes so go get it.

What does SQL experience really mean when you put it in a job posting for a Java / C++ / C# developer? Some are very specific and want Oracle SQL or MS SQL. I know there are differences between each flavor of SQL in syntax, optimization and feature sets but really would you totally knock a person out of the running if they had only ever dealt with an Oracle box?