What is Technical Support, anyway?

I have a more technical blog on the way covering one of my favorite new features in MariaDB 10.0, but the question of exactly what “Technical Support” means at SkySQL has come up often enough lately that I thought I would answer it with a blog. First, and bear with me please, some (heavily condensed) personal background. Prior to joining the MySQL Support team in 2003, the bulk of my professional experience was in C and C++ development, coupled with what I prefer to call “full lifecycle DBA” (ie: covering Business Analysis, Database Architecture and Design, application development, SQL development, and the usual maintenance tasks associated with the conventional DBA role) for Microsoft SQL Server, Oracle, and MySQL. I’m leaving out a lot, but you get the idea. With that skill set and background, my sane and rational friends asked what on Earth I was thinking accepting a job “just doing tech support”. For any company other than MySQL, that probably would have been a fair question. In MySQL Support, however, that was simply the skill set one needed in order to succeed as a support engineer. There are any number of ways to implement and deliver a technical support practice, almost all of which involve frustrating customer experiences and high employee turnover, because “technical support” is typically treated as a cost-center afterthought or just a way to sell other (more expensive) services, rather than the front lines in the battle for customer loyalty and satisfaction. MySQL Support did things differently. We had some of the best and brightest customers in the world, and they loved us, so “different” was right from my perspective. When we formed SkySQL in 2010, we were determined that SkySQL Support would be built on the same principles, along with many lessons learned. Now we also have some of the best and brightest customers in the world, and they love us, so “different” still seems right from my perspective, which leads us once again to the question of what exactly “Technical Support” means for us, and why that kind of deep technical background is necessary to deliver it. To my mind, there are three different kinds of “support”:

  • Engineering Support
  • Problem Resolution Support
  • Consultative Support

Engineering Support is, of course, fixing bugs in software, providing patches and hot fixes, creating maintenance releases and updates, and new feature development. It’s also addressing problems that can only be answered with intimate knowledge of the product internals. Problem Resolution Support is for topics usually covered by product documentation and knowledge bases, the “How do I…?” and “Why doesn’t this…?” problems with general usage, syntax, basic configuration, standard installation, upgrade, and backup practices, etc. It also covers service restoration when things break, as with replication failures, table corruption, and server crashes. This requires a surprisingly intimate knowledge of the products as well. Consultative Support is where things get especially interesting (because it involves questions and problems specific to a particular customer’s deployment), but also a bit more difficult to define concisely. Among other things, this is helping with performance tuning, configuring the server optimally for specific use cases, optimizing schema and index structures, rewriting complex queries, recommending alternative ways of implementing business logic and so on; best practices recommendations for high availability and scaling, replication, partitioning, deploying in the cloud; reviewing source code for correctness, robustness, and performance; login support to troubleshoot problems directly on the customer’s server; tuning the operating system, hardware, and filesystem. This requires intimate knowledge of the products at the source code level, along with significant expertise with the topics/platforms themselves. I’ve worked with companies in the past who stated outright that they would never handle these types of topics under the guise of “technical support”. For SkySQL, technical support is “all of that”, and we deliver “all of that” for all of our products (MariaDB, MariaDB Enterprise, MaxScale, and so on), for MySQL Server, and for a number of third party products thanks to our partner ecosystem. Our engineers need the kind of deep technical background described above because that’s just what it takes to deliver this level of service. Customers frequently do not have that kind of expertise on staff, whether due to resource constraints or because it’s simply hard to find, and so they turn to us to help them succeed. Former support engineers can be found today at companies like Facebook and HP. They’ve gone on to found companies like Percona. They’re that good. They have to be to do the job. I hope that helps answer the question of what technical support means at SkySQL! Regards, Dean Ellis, VP Technical Support