Tuesday, 19 January 2016

Q&A with Sergey Smirnov

Welcome to the Q & A sessions where I get people who are working as database professional’s to share their experiences, their thought processes and give out some golden nuggets of advice along the way.

The first session is with a guy who has worked with SQL Server for quite a bit of time so picking his brains was a real privilege. We talked about a bunch of things; what the DBA role means, database development, SQL2016 and shooting things! There are also a few wise words of wisdom for those thinking about working with SQL Server.

So here it is, Part 1 (of 2) of my Q & A session with my good friend Sergey Smirnov!

So, to begin with – who are you and what do you do?!
My name is Sergey Smirnov, 42 years old and I am a database guy – particularly MSSQL Server. Designing, planning, coding, troubleshooting, administering and so on for the last 25 years.

How did you get into databases? Was it a planned career move or like many of us, completely accidental?
Yes and no. I built my first computer when I was 14 and after few months I knew what I want to do for living. I became a database person when we start doing our first commercial software (the one that we told to be paid for) – just no-one else want to be a DBA. Then I simply liked it!

So what was the first thing that made you think “I’m a database guy”?
I think it happened when I understood how important it is to have a well built and well-designed database for any software system. I saw many heavy and complex systems that were suffering a lot from pure or “generic” database design or coding. So I thought there would always be a job for someone who knows how to improve things!

Would you say the DBA is a popular role? From both perspectives, companies needing them and employing them and people want to go down that route? 
No, I would say that DBA role is mostly underestimated until it is too late. IMHO the main problem here is that how database design and coding is usually done – it is very common that front-end or middle layer programmer also doing SQL queries without enough knowledge of how databases are working. As a result on the development stage the is no need for an experience DBA because everything is working just fine for a few developers and testers and when it gets hit by hundreds and thousands of users it is too late to restructure a database design.

Many of us talk about the DBA role being more than a job, it’s a passion. Do you agree and what specifically do you enjoy about the role itself?
True, I totally agree. It is as much passion as any other job that you like to do J In fact my specific passion is troubleshooting existing code or design a complex database systems

Any bad bits to it?
I always saying that it is people that do all the troubles. Database without clients would be a perfect one!

I did once read that the perfect database is one without users! 
I glad to know that someone else shares same view. :-)

You’ve worked with SQL for a long time. Would you say that it is important to specialise in one particular area and if so, what would you say is your main area of expertise as a DBA/Developer and is it also the part you most enjoy?
It is important NOT to have a very narrow specialization in database world. You cannot be an excellent DBA without good coding knowledge and vice versa. I personally enjoy coding, performance troubleshooting and distributed system design most but I am trying not to be too much specific

Would you say there is a gap between developers and DBA’s and if so, how as a DBA (or a developer) do you remedy that? For example, training, integrate more with other teams.
To avoid this I am trying to involve DBAs to development and developers to DBAs tasks as much as possible and to separate database development from other development and coding.
In ideal situation I am trying to build a database “black box”, where outside development just requests some data or functionality from a database and database team design, develops and supports it.

As an ex developer myself I think a mutual understanding is very important. As well as coding knowledge what sort other things do you find cross over between the DBA and Development roles?
I never believe to separation of DBA and database development roles. From my experience tuning database or hardware settings can give you something between 5 to 10% of the performance improvement – but if you want a real performance gain you need to look on the database code. Yes, there are some routine operations that has to be performed by DBA and support of the “system from the box” is different – but you don’t have to be a very experienced person to perform most of them.  

So would you say then that developers should try to gain more of an understanding about SQL itself, how the engine works perhaps? For example one thing I found rather quickly was that standard coding techniques like recursion do not apply well to databases.
Yes and no. There are two different worlds – good OO programmer thinks objects, encapsulations and inheritances and good DB programmer thinks tables, joins and Cartesian multiplications. I believe a combination of strong OO programmer with DB knowledge and good DB programmer with some OO knowledge will build a perfect development unit.  


  1. Agree with every word... he is reading my mind :)

  2. Nice to know you bro as an individual DBA