ASF 026: Aaron Bertrand interview

ASF 026: Aaron Bertrand interview

Introduction

Aaron Bertrand is a Product Manager at SentryOne, with industry experience dating back to Classic ASP and SQL Server 6.5.
In his spare time, he is either playing volleyball, curling, blogging at sqlperformance.com, blogs.sentryone.com and sqlblog.org.
He is contributing to SQL conversations on twitter and dba.stackexchange.com.
Has been a Microsoft MVP since 1997-98. He wrote chapters for two charity-driven books, SQL Server MVP Deep Dives Volume 1 and Volume 2 and speaks frequently at conferences, user group meetings, and SQL Saturday events around the world.

This talk has taken place during SQLDay 2019 in Wroclaw, Poland on 15 May 2019 (Wednesday).
Interviewers: Kamil Nowinski (T), Michal Sadowski (T).

Audio version

Don’t you have time to read? You can listen to this as a podcast! Wherever you are, whatever you use. Just use the player directly from this site (above), find it on Spreaker, Apple Podcasts, Spotify (new!) or simply download MP3. Enjoy!

Transcript

Kamil Nowinski: Hello, Aaron. Thank you for accepting the invitation to this podcast, Ask SQL Player.

Aaron Bertrand: Sure, no problem.

KN: So, could you introduce yourself at the beginning?

AB: Sure! My name is Aaron Bertrand, I’m a Technical Product Manager for SentryOne and I do a lot of community stuff with SQL Server.

KN: And where do you live?

AB: I live in Charlotte, North Carolina.

KN: Are you Canadian?

AB: I am Canadian, so I spent the first 23 years of my life in Canada and then I moved to the US.

KN: Which city in Canada?

AB: North Bay, Ontario, which is about 3 hours north of Toronto.

KN: What do you do for a living in more detail?

AB: I manage three teams that work on various products in the SentryOne Software Suite, including SentryOne SQL Sentry is the component of that monitors SQL Server. And then we have other tools that monitor Azure SQL Database and Azure SQL Data Warehouse, VMware, Windows, etc. One of my teams also manages Plan Explorer, which is our free query tuning tool.

KN: Yeah, Plan Explorer is a great tool. Every time I need to check the explorer plan I use it, especially if the plan is much bigger than the normal few notes.

AB: Yes, Management Studio is fine for small plans but as soon as you get anything really complicated, it shows its limits pretty quickly.

Michal Sadowski: How did you start working with SQL Server?

AB: I was working at a start-up and the first couple of projects that we had were building websites for companies, one of them was a condom company and they needed a database to host their e-commerce, so the list of products, the prices, shopping carts, all that kind of stuff. So we implemented that in SQL Server. It was the first time I touched SQL Server as a database. It was SQL Server 6.5 and that was my first taste of that. We didn’t have a database person but we needed to do database stuff. I was a web developer and I became…

KN: So a very common scenario even in those days.

AB: Yes, I became the database guy because we didn’t have one and I was the one working on the web application code the most.

MS: What year was this? You mentioned SQL Server 6.5.

AB: Yeah, this was 1997 or 1998.

MS: More than 20 years?

AB: Yes, more than 20 years.

KN: As experienced.

AB: All this grey hair is from SQL Server. And kids.

KN: What topic did you cover during SQLDay this year?

AB: I had two sessions, one was on new T-SQL features in SQL Server 2016, 2017 and beyond, and the other one was the one I just finished, which was a “T-SQL: Bad Habits and Best Practices” talk.

KN: I haven’t been to this session. I think I’ve seen your session like three years ago.

AB: Three years ago I gave the same “Bad Habits” talk.

KN: Do I remember correctly that you’ve been a big opponent of using MERGE Statement?

AB: I am very opposed to MERGE in production, yes.

KN: But, as far as I know, I know there are a few unresolved issues with this in SQL Server’s engine, but it’s very unlikely to reach them in some scenarios. There must be a specific scenario. It still can happen but…

AB: Yes, there are specific wrong results bugs which are really bad but the bigger thing is I think that the MERGE Statement gives users this false sense of “this is one operation that is completely self-enclosed and completely isolated from any other transactions that are going on” and that’s not really the case because it is actually implemented under the covers as multiple operations. Even though it’s a single statement, there are multiple things going on under the covers, so without using the right isolation level, either by surrounding the transaction with SERIALIZABLE or using UPDLOCK on the target of the MERGE Statement, you’re still vulnerable to the same race conditions that we’ve always had to deal with. So I feel like by combining these things into one statement you’re masking the fact that you actually do still need these controls and this transaction wrapper around the statement. There are some other weird things that happen in triggers, like triggers will fire multiple times, once for each operation, and that affects @@ROWCOUNT – it will always be equal to the sum of the rows affected, so the example I gave today was you have an operation that deletes 50 rows, right? The MERGE statement ends up deleting 50 rows but the UPDATE trigger fires, the INSERT trigger fires, the DELETE trigger fires, and they all say 50 rows. So if you’re checking for @@ROWCOUNT . and you say: if @@ROWCOUNT. is greater than zero, go do something, all three of those triggers are going to go do that thing.

KN: Yeah but this scenario is I think more due to the triggers, not like MERGE. With the triggers, you have a lot of problems.

AB: But triggers don’t do this. If you have a separate UPDATE statement and a separate INSERT statement, those triggers fire independently, and not twice.

KN: That’s right. But yesterday I had a session about using SSDT to develop a database and how to deploy these things. One of the things that I showed to the audience was how to deploy the data, some reference data table or some dictionary. I gave this example; use the MERGE statement instead of a procedure to deploy your data, your dictionary for example. Then, one of the attendees told me that you don’t use this MERGE and that you suggest not to use MERGE. But I think in that specific scenario it should be fine? Especially when you do this only during the deployment and also you have full control, you can disable some triggers for example or you can switch the mode on the single user if you really need to.

AB: The thing that I always like to get across when I’m teaching about bad habits is that you can always find some scenario, some exception where it’s okay, but you’re still teaching that thing, and you’re not necessarily giving all the context of “you shouldn’t use it anywhere else, this is the only place where this is safe”. If that’s the only place where that’s safe and the only thing you’re getting out of using MERGE over using separate statements is ten fewer characters, I don’t think that’s worth it, personally. And that’s what I try to get across in this talk is that it’s not so much about you knowing… Like using shorthand for dates and you say DATEPART(w, date) of a date is a day of the week, not a week. You know that I know that, but if I write code that says that and someone else reads my code, they don’t know that. They don’t have that extra context. And that context gets lost if you just put MERGE statements where you know it’s safe to use, you’re teaching other people that MERGE is safe to use.

KN: OK, yes, that’s what I wanted to show. That there are also some specific scenarios where you can use it and some exceptions.

AB: Absolutely, as long as 1) you’re not just teaching that to people and saying “use MERGE everywhere” and 2) you’re the one who controls that piece of code, because if someone else inherits it and then it goes wrong… “Why did you use MERGE here, because it has this problem or this race condition” or whatever.

KN: I totally agree. So we are now at SQLDay conference in Wrocław, Poland, 3rd day.

MS: You have mentioned that you’ve had two sessions already, but there was also a workshop that was scheduled for the morning, but it didn’t happen.

AB: I know, and I feel bad.

MS: Could you shed some light on that?

AB: Yes, so this was mostly my fault but I also want to blame American Airlines a little bit. So, I was supposed to leave from Charlotte at 10 o’clock on Saturday night, which would get me into Heathrow at 11 in the morning on Sunday. And I had a connecting flight at 2 o’clock from Heathrow that would get me to Warsaw at 5:00 p.m., and then Grant landed at the same time. He was scheduled to be on the same flight as me. And we were going to drive here and be here by 8:30-9:00.

KN: Plenty of time, three hours?

AB: Plenty of time. Well, my flight in Charlotte, first it was too wet to load the cargo onto the plane, then there was a plane parked in the gate next to us and so we couldn’t back out of the gate because this plane was parked there and it was blocking. I don’t know why they construct gates in a way that one plane can block another, but it was blocking. It took us four and a half hours before we backed out of the gate. Four and a half-hour delay. So I left Charlotte at 2:30 in the morning on Saturday night, which means I got into Heathrow at 3:00 [pm] o’clock in the afternoon London time, which means I missed my two o’clock flight here. The next flight was six hours later on a completely different airline, and because they paid for my ticket while I was in the air, that was how I was getting here. And I could only fly to Warsaw. If I had been able to reschedule my own flight, I would have booked the flight to Wrocław, but I didn’t have the opportunity to do that. So I flew here… Oh no, sorry, I flew to Warsaw and I got there at… The flight was scheduled at 10:00. I could have caught a plane on the same airline, I could have booked a flight here and I would have been here at midnight, but my second flight was also late so I got to Warsaw too late to catch the second flight. I got there five minutes after the flight actually left. So then I’m sitting there at the Warsaw Airport going “how am I going to get to Wrocław?”. So I went down to the car rental places – no cars. Enterprise had no cars, Hertz had no cars, Budget had no cars. I tried my butt off to get here. My only option was to book a hotel. I stayed at the Renaissance right at the airport, and I took a train here in the morning. And I thought “well, it took us three hours to drive here the last time, so it should be a three hour train ride”… Five and a half hours. So I ended up getting here at 3 in the afternoon, so with all of that all those travel hassles there was no way I could give my workshop anymore. And as soon I missed the first flight, when I landed in Heathrow, I told Damian [Widera] I said: “I just don’t think it’s going to work because I’m gonna have a real hard time even getting there on time, never mind being prepared to speak for eight hours”.

MS: If you have so many different accidents together, so many delays, maybe you should have played the lottery.

AB: Yes, probably. In reality, I should have come a day early. For most of my travels when I come over to Europe, I usually book a couple of extra days, so that I can relax and decompress and maybe see parts of Poland that I haven’t seen before. And what I should be doing is doing that at the beginning instead of the end. Then I don’t risk coming in late, right? The other problem is, if I get here early, I want to keep preparing, right? So if I come a day early, I can’t really use that day to go sightseeing, because I’m gonna want to prepare. It’s competing priorities and I chose poorly, so… But American Airlines did not help me and British Airways did not help me, and LOT airline did not help me.

MS: You have mentioned that you need to prepare for a session like one day before. But what does the whole process of preparation for a session look like? Do you have some kind of pattern that you always follow? Like starting with a sheet of paper and then writing the subject of the session or there is some other process?

AB: It depends on the topic but for these topics that involve T-SQL, I build the structure of the demos I’m going to use to show my points in a query file. And then I extract the pieces, the points that I want to get across onto slides. So I don’t think a lot of people do it this way. I’m sure people do but I haven’t heard a lot of people explain it this way, but I work backwards from the demos to the content and that allows me to focus on “what am I trying to show with this demo?”. It doesn’t always work out like I forgot to show a part of a demo today in my session. I mean, I’m human so that kind of thing happens.

KN: That’s an interesting approach. I’ve never tried that. But that makes sense, sounds very reasonable.

MS: One more question about preparing for a session. How do you gauge the audience, so what level the audience will be? You have the possibility of preparing the right abstract, but how do you prepare, in case you have purely demos, for tricky questions from the audience?

AB: I don’t know if I really prepare for that, because things can happen in a session that are just way beyond what you can expect. Erland [Sommarskog] was in my session today and he like attacked me with a question about cursors, because I was talking about cursors and the options in use, and he was: “what does that option really mean?”. I’m like: “uhh, okay…”. And then I just answered it. I mean, I don’t know if I made him happy with my answer but you just kind of have to be ready to address the question. I’ve had cases where people will just go on and on, and on, and on, and at some point, you just have to shut them down and say: “look, let’s talk about this after the session because nobody else here is getting anything out of your badgering”. I can help you get to this answer after instead of making it a part of the show.

KN: Otherwise you will finish your session explaining…

AB: And that’s happened! I’ve been speaking for 12 years and in my first year, I would speak at the Boston user group. And there was a guy there, I probably shouldn’t say anything about this, but there was a guy there that was very belligerent and very… like, he demanded answers and he just kept talking and talking and talking. He would like to take over sessions. And it took me a few times of dealing with that guy before I was able to just shut him down and say: “we will talk after, this isn’t the time, let’s talk about this after”. Because he would go off on, you know: “Oracle does it this way”. My talk isn’t about Oracle, so I don’t care if Oracle does it that way.

KN: So you’ve been an MVP for a very long time.

AB: Since 1997.

KN: 21 years, wow. Could you tell us about your journey? I can imagine that the MVP, the whole journey, the situation, and the nomination was probably totally different in those days.

AB: In the early days, the nomination was: someone who was an MVP said: “This guy should be an MVP too”. And that’s basically how I started. There’s a guy in the Dominican Republic I think, Juan Libre, and he recommended me to be an MVP. I was doing a lot of work on a mailing list and a couple of newsgroups that handled Active Server Pages, if you remember, the original ASP was like a classic. It was based on VB6 and you could do it in JScript too but nobody did. And I helped a lot of people learn how to use that, how to build ASP pages that worked well and performed, and he recommended me based on that and I did that for a couple of years. Then, when asp.net came out, I saw like I couldn’t understand it. I still don’t understand it today. If you asked me to build you a website today, I would use classic ASP, because I know it, and I think I can build it very quickly, even though it’s missing some of the features that have been developed since then. But I saw the writing on the wall. It said: “I’m not going to be able to be an ASP MVP, because that’s gonna go away, and I’m not going to be able to be a .NET MVP, because there’s no way I can get up to speed on this to be in a position where I can help other people with it”. So I started promoting my activities with SQL Server more, because I was doing more work with it, even though I was helping people with ASP and not with SQL Server, I was doing a lot more with SQL Server, so then I just started helping people on the SQL Server newsgroups and helping people solve query problems, and then eventually speaking on SQL Server. And so I transitioned and I asked to have my [MVP] award transition from ASP to SQL Server. I don’t recall what year specifically that happened but it was more than 10 years ago. It might have been 15 years ago now.

KN: How many MVPs were there in the US at that time?

AB: At that time? A dozen? In 1997? Maybe more than a dozen. There were probably a dozen ASP MVPs.

KN: But specifically about SQL Server.

AB: When I first became a SQL Server MVP, there might have been about 30 in the US. There are a lot more now, I think there are 400 or something, 300.

MS: At the beginning, it was a small family.

AB: It was a small family and the other thing that started happening too was the nomination process used to be… Originally it was an MVP would tell the MVP lead: “you should have this guy as an MVP” or “this girl as an MVP” and now, when I joined the SQL Server group, the SQL Server group was a really tight-knit group and the lead would come to us and say: “this person was nominated, what do you guys think?”. And so we would go around in a circle and have input and say: “well, I saw him have this really bad…”. It was like Survivor! Like, he would literally say, he would take a vote and say: “how many people think this person should be an MVP?”. Now it has changed quite a bit. Now it’s very quantitative, so the number of people reached, number of sessions given, the number of audiences, how many views your blog gets, how many true retweets your SQL help post can get. They take all these numbers, they put them in a spreadsheet and some person who has no idea of what technology we’re working with or how we’re actually helping people just adds up the numbers, and if you’re above some threshold that they’ve arbitrarily defined, you get renewed. And if you’re not, you don’t. And if there’s… I have to think, I don’t know how the whole process works, right? They only reveal certain things, but I know that they’ve outsourced the quantitative analysis and I think that they can make exceptions and they can say: “well, this person was below this line but I also know that they’re doing this and this, and this”, which the quantitative analysis isn’t taking into account.

MS: Has it changed for better or for worse, in your opinion?

AB: I think it’s changed for worse, only because different blogs that affect different people… If I have ten people that work at Fortune 500 companies that read my blog post and they go and do something and maybe they buy eight hundred additional licenses of SQL Server because of something I wrote, even though that only counts as one-page view, that led to a huge increase in revenue for Microsoft. Someone else could write something that 6000 people read but nobody did anything, because that wasn’t a good post or it wasn’t something that they took value from. Different audience. So I feel like, by reducing what we’re doing to numbers, takes the quality completely out of it. And whether those numbers are actually valuable or not? I would mention names but there are some bloggers out there that do it just for the impression count, right? They have people that come visit their blog and they’re not getting anything but they go. They have repeat visitors that go and check out the site every day and maybe one in 30 days they get something of value out of it. And if I post once a month but I have half of that traffic come and actually get value out of it, I think that’s more valuable. I’m not saying all my blog posts are better than all of anybody else’s, but I do put a lot of time into the things that I post and I don’t post every day for a reason. If I posted every day, it would be crap.

KN: Some people just publish every day.

AB: They’re just trying to trigger a counter or your reader, RSS feed or whatever to go visit the site and get them advertising impressions, and that’s not what I’m in this for at all.

MS: As mentioned earlier, you’re a speaker. How much do you travel?

AB: Less than I used to. Before I had kids, I would travel… one year I did 90,000 miles. I was going all over the place, I spoke at Bits every year for five or six years. Out of Seattle, I did a keynote in Berchtesgaden one year, which is like the weirdest out-of-the-way place, but they had a conference there, I went there. I’ve spoken on cruise ships, I’ve gone all over the place. But then, when I had kids, I went to my company and I said: “look, I need to spend less time on the road because I’m missing out on a lot here”. So this is my only international trip planned this year I think, to speak.

KN: But the year has just begun.

AB: Yeah, so in June I’m speaking in Chattanooga and in Orlando. And in the fall, I’ll be in Las Vegas and I’ll be in Seattle. My year is pretty much all scheduled already for travel.

MS: Do you like travelling?

AB: I like getting there. I like arriving. I don’t like the in-between part, especially this week. Man, that was hard…

KN: So when you travel a lot, what is your approach to the very popular topic of work-life balance? How can you do that?

AB: I keep in touch, we FaceTime every day, I make sure that, even when I’m travelling, I try to like touch base with my kids every day, touch base with my wife every day. When I’m at home, I try to make sure that I schedule any work that I have to do when I’m not in the office… I don’t go to the office every day, I work from home multiple days a week. But I try to make sure I schedule… If I’m gonna work on a presentation that I’m doing in the coming weekend and I’m busy at work during the day, I try to schedule that work for after my kids go to bed. My kids go to bed at 8 o’clock at night, and then my wife usually falls asleep at 9 o’clock, so I’ll do an hour of work from 10:00 to 11:00, usually watching hockey too at the same time. So I try to make sure that I’m focused on them. After school, I pick my kid up from the bus and when everybody gets home, we have dinner and it’s all like “no computers, no phone”.

KN: Totally focused on your family.

AB: That’s right. And then we usually watch a show, and we do rock-paper-scissors every night for who gets to bathe the kids and who gets to do the dishes, so we always… I win most of the time. So there’s always the opportunity where I’m gonna be spending 4 hours a day with my kids, which is important. And I don’t ever want to have to lose that. Travelling less, it’s better. It’s still kind of hard but…

KN: Especially if you don’t have international travels during the year.

AB: Yeah, staying in the country is a lot better. If something were to go wrong right now, it would take me a day and a half to get home, right? Because I’d have to go and try to find a flight and like get home, and it’d be a pain in the butt. If I’m in the US, I can usually get home within a few hours from just about anywhere.

KN: How old are your children?

AB: My children are 4 and 6.

KN: I think you put the link to your purely personal website on your Twitter account?

AB: Yes, the last time I came to Poland, I went to Auschwitz and Birkenau and Krakow.

KN: Last year or last time?

AB: Last time, 2016, and I had posted a whole bunch of pictures there. That was an interesting experience. I wanted to do it, I know it’s not happy… you wouldn’t take your family there, anything like that, but I think it was important. And the big thing that I got out of that is, I grew up in Canada and they kind of glossed over what happened over here and because Canada didn’t really, not until the end, they didn’t want to have the involvement. And in the history books, you’ll see 6 million Jews were murdered or whatever. And it’s so much more than that. There was so much else that happened other than just “six million people died”. But they really gloss over that and it’s like one sentence in the history books. It’s crazy and I don’t know why that is. And then from the time that I learned about World War II from history class and the time I was an adult, there’s a lot of people saying “oh, it’s a hoax, the Holocaust didn’t happen” and all of this stuff. I just want to tell all these people: “look, if you go there, there is no way you can doubt that that is real”. And if all you have is a history book and your dad’s opinion or whatever, it’s hard to convince people that you need to go there. So I felt like I needed to go and see it for myself. I wasn’t one that doubted that it happened but it’s just so much more powerful having been there.

KN: Honestly, I haven’t been there but I’m planning to go there as well to see it. Recently, I read in a book about what happened in there, a very interesting book.

AB: We went to Birkenau first and then we went to Auschwitz. If I were to do it over, I would have done it the opposite way. So if you’re going to go, I would go to Auschwitz first and then Birkenau. I know Birkenau is Auschwitz II but, you know, I would do it in that order.

MS: What is your favourite part of the Data Platform landscape in your opinion?

AB: My favourite part of the Data Platform landscape? I like that it’s always changing. I feel that for a long-time SQL Server was SQL Server and that’s all there was, and nothing really changed for like ten years nothing changed. We got a couple of row number functions in 2005 and we’ve got new data types in 2008 but it was still just SQL Server. No big changes. And now it’s moving so quickly, it’s hard to keep up. You kind of have to pick what you’re going to do. I think 10 years ago, you had a lot of people that were SQL Server experts that were experts in SQL Server across the board. You could be an expert in the whole area. That’s not possible now. So you have a lot more specialization and I think out of that you get a lot more innovation in the way that people use SQL Server as a solution. Because 10 years ago it was just: you deploy SQL Server and you run your queries against it and that’s it. And now you have all these opportunities to do things like Power BI.

KN: PolyBase, Big Data Clusters…

AB: Yeah, and all the Azure features, all the Azure services that are coming out. For something we’re working on, we’re using Azure Blob Storage, and if we had to manage our own file system to handle that, there’s no way it would have worked. We would have had to build our own file servers that would have to be huge and have to be highly available and that’s a huge investment. Now that these things are all coming as interconnected services and you can just fire something up and use it, and if you use a lot of it, you pay more and if you don’t, you don’t have to incur that big cost. And I was initially like “all the cloud, yeah, whatever, that’s a fad”. And I think a lot of people were. And I think Microsoft has proven that this is not going away, this is the real deal.

KN: I’ve seen that many people changed their opinion between now and 4 years ago. 4 years ago they thought: “OK, Azure, it’s not great, we’ll not be migrating in that direction, it’s not possible to migrate a company because of many factors”. But now a lot of people change their opinions. They started adapting to the new situation, I think.

AB: I think there are some industries where it’ll be really hard. Some people just won’t, they’ll just resist. Banking and anybody with huge data privacy concerns is going to shy away from it, and some people just won’t be able to because of legal reasons. They won’t be able to store their data in someone else’s property. But for a lot of people, I think the cost implications of running your own hardware and running your own operating system, and running your own services, it just goes up on this scale, and at some point it just makes so much more sense to use someone else’s hardware, someone else’s infrastructure.

KN: Talking about the features, I would like to ask another question: what do you think about SQL Server on Linux, Docker and all the languages that came to SQL Server, like R, Python?

AB: R, Python and Java I can spell, I can spell AI and I could spell Java but that stuff doesn’t really excite me. But being able to run on any platform, that’s pretty exciting. And being able to run on ARM64, that’s exciting too. For me, specifically being able to run a Docker container that’s running SQL Server on my Mac means that I get half my battery life back. I don’t have to run a Windows VM now. My demos yesterday and today – all Docker. No Windows SQL Server, no Windows VM. Switching between is much smoother. Just docker and one command line to pause, one command line to destroy the whole thing, one command line to fire up a brand new one on a different version, one command line to upgrade. For someone like me who’s carrying this thing around, this laptop around and giving demos and stuff, it frees up resources on my machine where I’m not sitting there waiting, because the VM is taking half my memory. I’m not sitting there waiting for my cursor to respond because all my memory is being sucked up somewhere else.

KN: So you have a smaller one. Is it 14-inch?

AB: 15-inch.

KN: So you should be able to have more than 16 GB of RAM.

AB: No, it’s capped out at 16 GB, this one. This is a couple of years old. The one after this allowed for 32 GB, but this one does not.

KN: OK, so it’s hard to run.

AB: It is! So I was running an 8 GB VM and if you want to do anything fun in there, you can’t. You’re paging to disk and demos take forever, relatively forever.

MS: What is the personal achievement that you are the proudest of?

AB: Personal achievement I’m most proud of? Do I have to pick just one? Because there are a couple. One is I was voted Author of the Year for MSSQLTips two years ago. That was pretty cool. And the other is I am the only person on DBA Stack Exchange with the Legendary badge, which is I got 200 – the cap – reputation 150 times, so it’s not really anything except a measure of how many people appreciated my answers on that site consistently over time. Those are two pretty big achievements for me.

KN: That also explains a little why you have over 8000 followers on Twitter.

AB: Oh, that I don’t know. I tweet a lot about music, I tweet a lot about hockey, I argue with people about politics…

KN: Ah, maybe politics is the reason!

AB: It could be!

KN: What hints would you give to young people who wanted to start working in the IT market specifically? What is important?

AB: Definitely understanding the different layers, the different tiers we have between… People will think: “oh well, I can just develop an application, I don’t need to care about the database, and I don’t need to care about the network layer, and I don’t care about the data layer”. Those concepts still exist, whether you’re using an on-prem or a cloud service, there are still layers that you have to go through to have apps communicate with data and communicate with the user. And it’s important to not lose sight of that. People will fire up these frameworks and they claim to do everything. They can but with limits, right? A lot of these frameworks are built with the lowest common denominator in mind and they don’t cater to anything else, so if you take any ORM, any mapper, you have this concept where it supports 80% of the things that people would want to do, and if you want to get outside into that other 20%, you’re kind of out of luck. You’ve got to extend the thing or you’ve got to bolt onto it or you’ve got to switch to something else to do something that it wasn’t predetermined people would want to do. Even though they’re very logical things for a certain segment of people to do. They code these statements that cater to updating in a certain way, and if you want to do something where you also want to join to this other thing, there’s no way to do that because they didn’t predict that anyone what would want to do that. And then you end up: “oh well, in this one case, this is this exception rule again, right? In this one case now I have to write a stored procedure and I have to deal with it in a completely different way because this thing has locked me into a certain portion of functionality that is actually possible”. So it’s not all there and I find that when you start packaging this stuff up and extracting away the details behind the scenes of what’s actually going on, and you sugarcoat things with “we’re gonna handle this one thing and this one thing, and you’ll just have to press a button to do that”. And that’s nice if that’s all you ever want to do, but as soon as you want to get out of that, you have to understand all of the architecture or you’re just going to put your hands in the air and say: “well it doesn’t do that”. We’ve been working with Material UI, just for web interface stuff, and I’ll say “well, this one button, it needs to behave this way, when you mouse over it, it needs to behave this way” and the response I get is: “well, Material UI doesn’t do that” and they’re literally putting their hands in the air in a meeting, saying: “well, it doesn’t do that”. But I know that a web browser can do that, so find out how to get around the limitation in Material UI, and then it’s a philosophical argument that you’re not supposed to do things that Material UI didn’t predict you want to do. And I think that’s kind of crap.

KN: And what about people who just started their journey in IT? Who would like to start? What is the best first step? How to first job for example?

AB: Whoo, it’s been a long time since I thought about that! Sorry…

KN: But I bet you still remember.

AB: I kind of remember but I’ve fallen into my jobs, like I’ve had two jobs in my career and the first one I was plucked out of school – no interview, no resume, none of that, just plucked and they gave me a job and I worked for them for 13 years. And then I came to SentryOne. That was also no interview. I did consulting for them first and they tried to hire me for about three years before they finally admitted that maybe I didn’t have to move to Charlotte at the time to actually be a productive employee for them. And neither of those involved a job interview. And my initial job, it wasn’t something I went looking for, so I didn’t have this planned thing to go into IT. I taught myself how to build web pages because I could get a part-time job at the school, building the library website for the university, and that’s kind of where I started. So there wasn’t really a formal plan. It was just: “this is easy, I could do this really well” and I started getting on these mailing lists and newsgroups because initially, I couldn’t figure out how to do one thing or some other thing and so I went on there for help and then I realized that most of the questions people were asking, I already knew how to do that, so then I started answering. So it wasn’t really a plan, it wasn’t a set thing of “what should I do?”.

KN: So you’ve had only two jobs in your life?

AB: Yes.

KN: OK, so let me ask a different question. What is it like to be in one job for so many years?

AB: It’s stable. Like at my last job, I had job security like you wouldn’t believe. I just had this confidence that I was an important person here who is vital to success. And sure enough, when I left that company, it wasn’t because I left, but I left and went to SentryOne and that company just fell off a cliff and disappeared within a year. And again, I’m not saying that was because of me but while I was there, I was keeping all of the things that depended on the database, which was what drove our business. The data drove our business and I was keeping the lights on, and it was just me, I was the only DBA. I tried for three years to hire an assistant DBA and I couldn’t find someone that could do it, so you get the sense of… and maybe sometimes it’s false, but you get the sense of importance and job security, and that you’re stable here, and it would take a lot to get you out if someone wanted you out for whatever. Being happy at my job, it also relieves any pressure that I have of like thinking about what else is out there. I don’t think about that. I’m not trying to find my next opportunity, because I’m happy where I am.

KN: I guess you didn’t start from the position of Product Manager at the beginning?

AB: Correct. My original title was Senior Consultant, and I worked with customers from time to time, but that wasn’t really my main job. I did all kinds of work, but I managed our blogs – I still do. I manage our team blog and sqlperformance.com. So I blogged a lot on behalf of the company and then managed the other authors that we had blogging for us. And I spoke a lot and promoted the company, so I was kind of an evangelist. I was a speaker, I was a community advocate, I did a large number of things and I still do most of those things. They’re just not my primary role. I took over Plan Explorer initially because as a community advocate, it was a community tool, something we were giving out to the community, and it needed a little more hands-on help and getting it out there to people. So I took that over and then I also took over a couple of the other products and a couple of other teams that were working on other products. I’ve been trying to help manage those as well as I can. We’ve got some additional Product Managers who are going to relieve me of some of that work pretty soon, so I’ll have a lot more time to focus on very specific things, like Plan Explorer and our monitoring of Azure SQL Database.

KN: By the way, thank you for giving us Plan Explorer for free! That was amazing news when I saw it. It was like a year or two ago?

AB: A couple of years ago it was free.

KN: But only part of the tool was free.

AB: Yeah, it was free for a while, it was free for three or four years and then we did some work, we spent a year and a half doing a bunch of R&D and development on some new functionality that makes it much more powerful. Index analysis and history and comments, we added a bunch of things that make it a much better tool to use for query tuning in a team and actually make improvements, not just see what’s wrong but actually help you determine how to fix it. So we introduced a Pro version and started charging for those features. And we did that for a while, and we would constantly have meetings about it and talk about “how is this going?” and “is this really what we want to do?” and we ultimately determined that we shouldn’t have done that and we should have just made all of this functionality free and continue to offer that as if it’s just a free tool. So we took the Pro and the price tag away and just made it all free.

MS: You have mentioned Azure is on your road map. So what do you think about the trend of migrating to cloud? Is it going to replace all SQL Servers that are on-premise at the moment?

AB: Definitely not. There are definitely use cases that make sense, where people can move their databases into the cloud but there are more complex… So if you just have a single database it’s no problem. If you have a couple of databases that interact with each other, it’s no problem. But there are more complex scenarios where that’s not necessarily going to make sense. And as I was saying before, I think that there are definitely some legal constraints around some companies and industry complaints and other constraints, and compliance, various reasons why that might not be an option at all. I think you’re gonna see that grow, I think you’re gonna see that business grow but I don’t think it’s going to eat in very much to the on-prem business. So I think people are still gonna want to run SQL Server in-house. And you’re also going to pick up a lot of customers that have stayed away from SQL Server because it was on Windows. You have houses that are Linux-based and now that they’re going to have a SQL Server option, it opens up more business for Microsoft.

MS: How will the role of “old school” DBAs change with this cloud invasion?

AB: It doesn’t change much. I see a lot of doomsday things out there. People are saying: “the cloud’s gonna steal my job”. I don’t think that really changes much. I think the individual, the granular details of what you do is different because if you have Azure SQL Database, you’re no longer dealing with backups. There are certain things that you just no longer have to deal with. You’re no longer dealing with locking down, xp_cmdshell and all these things that are vectors for attacks and misuse. And those things just don’t exist anymore. But you still have to worry about availability. You still have to worry about performance. You still have to worry about all these other things. And I feel like the traditional DBA role, where everything was on-prem and you had to deal with everything, was overwhelming. And I think that a lot of the things that you need to take care of, different companies and different DBAs would just choose “well, I can focus on these three things, these other things will have to wait”, because there’s only so much time in the day, right? And I think that with the cloud taking away some of the routine things that weren’t hard but took up time, I think that’s a smart way to go, because who wants to spend a lot of time doing things that aren’t hard. It’s repeatable and it’s automatable and people don’t take the time to automate it on-prem. Well, the cloud has taken that work away from you and just said: “this stuff is going to be automated, now you only have to deal with these things”. But now you could focus all your time on those things so you can make those things better. So if you have a DBA that’s also the database developer that’s writing queries, now they can focus more on making those queries perform well instead of “we got the results we needed, what’s next?”. Now they can actually spend an extra hour and actually tune that query and build the right indexes and everything else. There’s still so much that… It doesn’t matter if you’re on-prem or in the cloud, those things still apply.

MS: What have you learned recently and what is your next item on your learning list?

AB: Oh, boy. OK…

KN: For sure not Java.

AB: Definitely not Java. Sorry, Java developers, but… So, I learned a lot more about recovery recently, because SQL Server 2019 has accelerated database recovery, which is the killer feature I think in SQL Server 2019. That’s going to be the feature that makes everybody upgrade. And I didn’t understand the recovery process before well enough to understand how this would benefit. So I spent some time and actually sat down and relearned. Because I learned about it a long time ago but forgot half of it. So I spend a lot of time with that, being more familiar with recovery. What’s next on my list? Kubernetes. I need to learn about these clusters. I got some advanced knowledge of it because the MVP program, they gave us a preview and access to it, but I didn’t really take advantage of that. I think this is going to be, depending on the licensing, I have no idea what the licensing is gonna be like and how expensive it’s going to be, but if this thing is priced reasonably, I think it’s going to be a very powerful solution for customers. Especially things like, think about a flower shop, right? A flower shop that does online sales, FTD, whatever. What happens on Mother’s Day? They go crazy, right? So they have hardware that can handle their worst-case scenario but they’re paying for that hardware all year. And when you have something like this that can dynamically adapt to your volume and how much throughput you’re having, and you’re not paying for that the rest of the time, I think that’s a huge win for any business. So I think that’s going to be something that DBAs are going to have to become comfortable with and companies like us who monitor the things that DBAs care about, we’re also going to have to care about it, and we’re gonna have to learn how to monitor that effectively.

KN: It’s great that we’re talking about monitoring. So SentryOne is offering the tool for monitoring servers? And Redgate does the same. So do you think these two companies are competitors or…?

AB: Yes, I do. And especially… so we’ve acquired Pragmatic Works recently, we acquired the software of Pragmatic Works and they have a bunch of database developer tools that are similar to what Redgate offers. For a long time, we had competing products, not directly but close. They have a smaller feature set and a lower price point, and ours has more functionality and a higher price point. And we definitely had overlap in our markets but it wasn’t like an eclipse. It was like there’s a section of the market that will only pay up to this much for any kind of monitoring at all, and those were just not customers to us. It’s like Adobe Photoshop. You have Adobe Photoshop and you have a segment of the market out there that’s going to pirate Adobe Photoshop and is never going to be a customer. So it doesn’t matter if Adobe charges a thousand dollars or a hundred dollars for Photoshop, there are people who will refuse to pay a hundred dollars. So it’s the same thing with our business. For the full functionality and the amount of R&D and development that it takes to get our full functionality, we’re not going to let people have it for five dollars. It’s not in our business model. But now, we are trying to go after that lower-end market. Because we realized that companies might have different environments that they’re monitoring, so they have a production environment where these things are really important and then they have a QA environment where it’s kind of important. You don’t need 24/7 life-or-death monitoring but it’d be useful to be able to compare metrics between those two systems. Should we be charging the same price for the thing that you’re doing less with and that you don’t need all the functionality for? So we introduced a SKU – an edition called Essentials, which is 60 or 70% of the functionality but at less than 50% of the price. So you still get a good section of the monitoring, not everything and not all of the R&D we do but quite a bit of it, at a much lower price point, much more competitive with Redgate.

KN: It’s still cool seeing that the two companies are competitors but you and Grant, for example, are friends.

AB: Yeah, we’re pretty good friends. I believe he’s gotten in trouble for being too friendly about us. Like someone will ask: “how do I analyze plans?”, “well, we’re the answer”, right? And the same thing for a long time, I would probably get in trouble for this now, but for a long time if someone needed to compare schemas as I would absolutely 100% “go, get Redgate’s Schema Compare and Data Compare”. I think that we have a pretty close equivalent to that, they’re obviously best of breed but I think we have a pretty good solution for that too. But I’m not going to go and take down all of the places where I’ve said “go, get Redgate’s tool” because I still think it’s an excellent tool.

MS: Also, I think it’s quite healthy for both companies that they are competitors because you look at each other, it accelerates the evolution of the product.

AB: And it’s better for you, right? Because then you get a better product, whether you pick us or them, you’re getting a better product, because we’re competing. It’s not like the oil, what do you guys pay for utilities? If an oil company treats you badly, what do you do? That’s who gets you your oil, right? This is who provides your electricity. You don’t have a choice. And when you have a choice, I think it drives innovation a lot more and drives people to build better software.

KN: Anyway, the market for SQL Server is quite small. Small in terms that we know each other. We go to many conferences, you know the people. So from that perspective, it’s small. So, about the blog posts, I’m very curious how long it takes you to write one blog post.

AB: Oh, it really depends. It’s like how long does it take to prepare a talk. I mean it really depends on how much detail goes into it. I would say a good five to six hours goes into a medium-sized blog post.

MS: We need to learn from you.

AB: I mean, I’ve been doing this for a long time, so I definitely have… not shortcuts, but I cut to the chase kind of in a lot of things. I don’t spend a lot of time worrying about my words. Just like with my presentations. My presentations start from a set of demos and then I build bullet points out of that. Same thing with blog posts. I look at “what am I trying to prove here, what’s the point of my post?” and if it’s to show what’s the most efficient way to trim time from a date-time, I will go and I’ll build the demo environment, I’ll build a table, and then I’ll run the queries that will tell me the answer. And then, once I’ve done that and I’ve determined the answer, now I can go write about it. What I think a lot of people do is they write about it and they sometimes – and I’ve done this in the past, too – you’ll write about something and you’ll expect a certain result and then you’ll go build the thing and you’ll test it and it’ll totally disprove what you wrote. So you spend a lot of time massaging the words and saying all these things, and then you have to go back and redo it because you were actually wrong. Or at least in that instance, that scenario that you created you were wrong.

KN: So also, from that point of view, it’s better to start doing the demo first. Another reason. OK, Aaron, at the end of our conversation, where can we track you down? Twitter, blog?

AB: Twitter, I’m @AaronBertrand. So yeah, I’m @AaronBertrand on Twitter and I blog at sqlperformance.com and the blogs.sentryone.com.

KN: And I think you’re also on Database Administrators StackExchange.

AB: Yes, Stack Exchange.

KN: Cool, OK, thank you very much.

AB: Alright, thanks, guys!

Useful links

Aaron’s profiles: Twitter | LinkedIn | MVP
Aaron writes on blogs: SQLPerformance | SQLSentry Blog | StackExchange | SQLBlog
Books: SQL Server MVP Deep Dives Volume 1 | Volume 2
Related events: SQLDay

Previous Last Week Reading (2019-10-20)
Next Last Week Reading (2019-10-27)

About author

Kamil Nowinski
Kamil Nowinski 156 posts

Blogger, speaker. Data Platform MVP, MCSE. Senior Data Engineer & data geek. Member of Data Community Poland, co-organizer of SQLDay, Happy husband & father.

View all posts by this author →

You might also like

Podcast 0 Comments

ASF 012: Rob Sewell interview

Introduction Rob is a SQL Server DBA with a passion for Powershell, Azure, Automation & SQL. He is an MVP & an officer for the PASS PowerShell VG & has

Podcast 0 Comments

ASF 014: Itzik Ben-Gan interview

Introduction Itzik Ben-Gan is a Mentor and Co-Founder of SolidQ. A Microsoft Data Platform MVP (Most Valuable Professional) since 1999, Itzik has delivered numerous training events around the world focused

Podcast 0 Comments

ASF 007: Cathrine Wilhelmsen interview

Introduction Cathrine loves teaching and sharing knowledge. She works as a consultant, technical architect and developer, focusing on Data Warehouse and Business Intelligence projects. Her core skills are ETL, SSIS,

1 Comment

Leave a Reply