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.