Developing Perspective

#98: Practical Helpdesk


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:04   news of note and iOS development, Apple and the like. I'm your host, David Smith. I'm

00:00:08   an independent iOS and Mac developer based in Herndon, Virginia. This is show number

00:00:12   98, and today is Tuesday, December 4th. Developing Perspective is never longer than 15 minutes,

00:00:17   so let's get started.

00:00:18   All right, so the topic I'm going to talk about today deals with a practical approach

00:00:24   to doing help desk support.

00:00:29   And this is a good beginning,

00:00:32   sort of a bit deep in the weeds,

00:00:33   a little bit practical if you're developing an app.

00:00:35   This will probably be very helpful,

00:00:38   but it's definitely going to be more of

00:00:39   an actionable kind of a walkthrough talk.

00:00:40   So just a heads up, if that doesn't interest you,

00:00:44   by all means, skip it.

00:00:46   But this is basically, this is how I set up

00:00:47   help desk support for any of my apps.

00:00:50   This is the process I go through

00:00:52   whenever I'm building a new app,

00:00:49   how I do it practically whenever I'm actually doing the work, and how that process works.

00:00:54   So hopefully, if this is something you've been thinking about, it will be helpful.

00:00:58   So the first thing you're going to want to do, and this is part more of even just the branding of your application

00:01:02   and all that kind of a process, is you're going to want to get a domain for your application.

00:01:07   This may be a domain for your business, it may be a domain for this application specifically,

00:01:11   but you'll need some domain somewhere to do it.

00:01:16   say checktheweather.co is the domain I got for Check the Weather.

00:01:21   I've got one for my recipe book.

00:01:25   I have one for audiobooks.

00:01:27   I've got a bunch of different domains.

00:01:28   I tend to partition them by app as much as I can,

00:01:30   and that's mostly just because domains are fairly inexpensive.

00:01:34   It's $8 to $10 or something for a domain these days.

00:01:38   And it allows you to partition later,

00:01:42   so you can apply rules and filters and do some clever stuff on the backend.

00:01:45   and it lets you also let you potentially divert messages

00:01:49   to different people.

00:01:51   So once you have your domain--

00:01:53   typically I use Google Apps for my actual email hosting.

00:01:56   This is a free thing Google provides.

00:01:58   So Google will question the benefit

00:02:00   of Google Apps for your actual personal email,

00:02:03   for your business.

00:02:04   But personally, like support, I found

00:02:06   it to be very, very helpful.

00:02:07   They have a lot of built-in things

00:02:08   that I'll talk about later that make it really fast.

00:02:11   It's available everywhere.

00:02:12   You can access it anywhere.

00:02:13   Their infrastructure is very reliable.

00:02:15   Their spam filtering is excellent.

00:02:17   So I choose Google Apps.

00:02:19   I think you just go to like google.com/a, I think,

00:02:23   or just start Google for Google Apps.

00:02:24   I'm sure they'll help you set it up.

00:02:26   And you go through this little dance,

00:02:27   and you prove that you own the domain,

00:02:29   and you have to set some DNS records.

00:02:31   And I mean, it's a little fiddly, but it's not too bad.

00:02:34   And there's little walkthroughs based on different registrars

00:02:36   and stuff.

00:02:36   So it's a fairly easy process to go through.

00:02:39   But if you're sophisticated enough to build an app,

00:02:41   I'm sure you can handle it.

00:02:43   And once you've set it up-- so say, for example, in this case,

00:02:45   I have support@checktheweather.co.

00:02:49   And that's the email address that I'm

00:02:50   going to have people be sending their emails to.

00:02:54   And so the next thing I need to do

00:02:56   is put that address out in places

00:02:58   that people can access it.

00:03:00   So almost all of my apps, I have a contact me, or email support,

00:03:06   or get help, or whatever I want to call it in the app,

00:03:09   whatever makes sense in its context.

00:03:12   I put a button that pops up a standard Compose window.

00:03:16   And this is a standard--

00:03:17   I think it's the MP Message View Controller, something

00:03:21   like that.

00:03:21   But it's a very standard control,

00:03:24   and you can just find it easily and insert it.

00:03:25   Basically, it's just a little pop-up

00:03:27   that gives them a native email address form.

00:03:32   One thing that I really recommend you do

00:03:34   is in the bottom of that--

00:03:36   so you can pass, I think, an HTML blob

00:03:39   into the compose window, which then will be shown to the user

00:03:43   when they're actually going to start typing in.

00:03:46   And what I always do is I insert maybe like 10 or 12 new lines.

00:03:50   And then I have a little section that says app and device information.

00:03:54   And in there, I include whether it's an iPhone or an iPod Touch, the iOS

00:03:57   version, the app version, and exactly which app it is.

00:04:01   And so that's based on-- so say if I have a paid and a light version,

00:04:04   I'll say check the weather light or check the weather.

00:04:08   I'll include all those, everything that will help me debug it later.

00:04:11   The most important is the iOS version and the app version.

00:04:16   Those two things together are invaluable in trying to debug problems.

00:04:20   So often I'll get somebody who's like, "Hey, I'm setting this bug."

00:04:23   And I'm like, "Really? I thought I fixed that like two versions ago."

00:04:26   And then I can look down and be like, "Oh, you haven't updated."

00:04:28   And it's the best thing to just be able to say to the user,

00:04:30   "Hey, there's a version that fixes this. Go to the App Store, install it."

00:04:33   And honestly, a lot of times that almost feels magical to users

00:04:36   because it's as though I was able to immediately just solve

00:04:40   their problem.

00:04:41   And obviously, it's something that I did weeks ago,

00:04:43   but often the response I get from that is great.

00:04:45   So that's just something that you want to do.

00:04:47   You pop the Compose window.

00:04:49   It's pre-formatted with your support address.

00:04:51   They'll send you an email, and off you go.

00:04:54   So when you're actually going to then work on that email support--

00:04:58   and perhaps maybe it's good to take a step back and say,

00:05:00   why do you email support?

00:05:03   Telephone support is completely impractical for a small app.

00:05:06   and don't do it.

00:05:07   Though, funny story, there was a period of time

00:05:09   when Google's Android market was getting set up

00:05:12   that by default they published your contact phone number.

00:05:16   Totally unbeknownst to me, and I started getting

00:05:19   these random calls from people asking for help desk

00:05:22   to my cell phone, 'cause that was my main phone number.

00:05:25   Let's just say that was the quickest thing,

00:05:27   time I ever was able to sort of run to the Android portal

00:05:31   and turn that off, 'cause that was infuriating

00:05:33   to just be getting these random calls at all hours.

00:05:35   But basically, email support works great.

00:05:38   It's nice and asynchronous.

00:05:39   It's nice and universal.

00:05:42   Pretty much everyone has an email address.

00:05:44   You can be fairly responsive with it if you need to be.

00:05:47   But if you're not, things just kind of queue up.

00:05:50   And I find that by having an email button directly

00:05:54   in the app, I get a reasonable volume of email.

00:05:56   It's not a huge volume.

00:05:58   I mean, for most of my apps, or across all my apps,

00:06:01   it's probably somewhere on the order of about 100 emails a day

00:06:04   that are being processed coming in.

00:06:09   And so it's certainly a burden,

00:06:12   but it's not a crazy one,

00:06:14   but I definitely think it helps with my ranking

00:06:16   and with my customer happiness

00:06:18   because people have an avenue to vent

00:06:20   that isn't in the App Store reviews.

00:06:24   And by putting that button front and foremost,

00:06:27   if you hit Help or you hit Settings in any of my apps,

00:06:29   there's a button that says Email Me.

00:06:31   If they're having a problem,

00:06:29   Most people's first reaction is to hit that and then ask me a question,

00:06:33   because that's actually a practical thing that'll probably result in help,

00:06:37   versus if they don't know how to do that and they have to find your contact information somewhere,

00:06:42   I find that a lot of people would just go to the app review area and just say, "Oh, man, the app doesn't work."

00:06:47   When in reality, it probably does, and it probably is just an understanding thing

00:06:51   or an education problem that I need to be working on.

00:06:53   So that's why I do email, and it seems to really work, and overall,

00:06:56   It helps my apps ratings in the store.

00:06:59   So a couple of settings you're going to want to do in your Google apps to make this process

00:07:03   go so much faster.

00:07:05   And these are some of the things that I've learned over time.

00:07:08   At this point, I can burn through my 100 emails when I need to very quickly.

00:07:15   And so basically, the first things you want to do is there's three labs settings in Google

00:07:19   apps that you can set.

00:07:20   And these are, you want to think settings and then labs, which is basically just what

00:07:24   Google calls kind of experimental or non-core features, and you want to turn on auto-advance,

00:07:31   background sending, and send in archive. And I'll walk through those in step. So auto-advance

00:07:37   is a great little feature that when you archive a message, it automatically displays the next

00:07:41   message, and you can choose the order, whether you want to see the newest or the message

00:07:46   newer or the message older, and that just depends on the order, how you tend to work,

00:07:50   or top down or bottom up.

00:07:52   Basically what that does for me is,

00:07:55   as I'm going through, I can very quickly just go through.

00:08:00   There's no navigation.

00:08:02   Background sending you want to enable because it's just a speed thing.

00:08:05   Every time I hit Send, I don't want to wait for it to send.

00:08:09   It's great that it immediately loads the next message

00:08:11   because I have auto advance enabled,

00:08:13   and I can just be plowing through without any delay.

00:08:16   And then Send in Archive is great just as a coordination thing

00:08:19   because whenever I'm sending a message,

00:08:22   I typically want to archive it

00:08:23   so that I'm clearing out the inbox.

00:08:26   'Cause the way I tend to do it is

00:08:27   rather than doing folders or stuff like that or flags,

00:08:30   if anything in the inbox hasn't been responded to.

00:08:32   Red or unread doesn't mean anything

00:08:34   because often there'll be back and forth.

00:08:36   I read something, then I have to go look something up

00:08:38   and I come back.

00:08:39   But for me and my style, if it's in the inbox,

00:08:41   it needs to be responded to.

00:08:43   And those three features probably increase my productivity

00:08:46   like 50%, 80% maybe even, from the old style

00:08:51   what I used to do.

00:08:52   And I would do all this in the web interface

00:08:53   because I found that to be the most responsive version

00:08:56   of this.

00:08:57   I've tried it, you can get it in mail or spare or something,

00:08:59   but I just never, I can never optimize it quite as much

00:09:02   as I was by setting those three features

00:09:04   in the web interface.

00:09:06   And then the other thing you want to do

00:09:07   is you want to buy TextExpander.

00:09:09   This is by Smile Software.

00:09:10   It's a great little product.

00:09:12   It's useful for a lot of things, but for help desk,

00:09:15   It is tremendously helpful.

00:09:17   I know some people use canned responses, which

00:09:19   is another Labs feature in Google Apps.

00:09:21   But for me, I found that to be too heavy-handed.

00:09:25   And a canned response is you hit--

00:09:28   this is my response about thank you for that feature request.

00:09:33   And you have this whole long response that you've

00:09:36   pre-formatted and you're sending to somebody.

00:09:38   But for me, what I find is that that often feels like a form

00:09:41   letter to the user.

00:09:43   And it is because you're not able to really customize it

00:09:46   to exactly what they're saying.

00:09:48   And so it comes off feeling kind of cold

00:09:52   and not necessarily as attentive, maybe,

00:09:55   is the right word.

00:09:57   And so instead, I use TextExpander

00:09:59   to create a meta language or vocabulary for how I do support

00:10:05   and the phrases I use a lot.

00:10:07   And you're certainly going to end up

00:10:09   with a little bit of a formulae process to this,

00:10:12   but it lets you be much more customized.

00:10:17   So say, for example, if I type "sorry,"

00:10:19   text expander expands that string out into,

00:10:24   "I'm so sorry you're having this issue,"

00:10:28   which is a phrase I use whenever someone's having a problem,

00:10:31   that's often how I'll start it.

00:10:33   It'll be like, "Joe, I'm so sorry you're having this issue,"

00:10:35   space.

00:10:38   And then I'll usually actually type in what the response is,

00:10:40   but it lets me save a lot of time when I just expand "sorry" that way.

00:10:44   And I'll build these up. I have a whole array of them for different issues.

00:10:48   Someone who says, "Oh, how do I switch from metric to Fahrenheit?"

00:10:52   or something like that. And it allows me to just pop those in,

00:10:56   but I'm building it dynamically and responsibly to the user.

00:11:00   So it actually makes sense, and all I'm doing is saving myself repeated work.

00:11:04   And they're so easy to create, these little TextExpander snippets.

00:11:08   I've written a sentence more than once.

00:11:13   I'll grab that sentence, throw it in the TextExpander bucket,

00:11:15   and then I can just reuse it over and over.

00:11:18   Also, nice thing, TextExpander snippets are shareable.

00:11:21   They're just, you can pass them around.

00:11:24   So I have someone else who does Help Desk for me.

00:11:25   And I got a question from a couple of people

00:11:28   about how I found that person.

00:11:30   It's just, find someone who you, a friend who you trust,

00:11:31   who's looking for a little part-time work.

00:11:34   That's really it.

00:11:36   That's all I can say.

00:11:36   That's how I've done it.

00:11:33   people who do the same thing.

00:11:38   Because it's a fairly simple job,

00:11:39   you're just trying to find someone who's really responsible

00:11:41   and who you probably know.

00:11:44   You could do it kind of outsourcy style,

00:11:46   but my gut says, "That's not something you want to do

00:11:48   for something that's as important as interacting

00:11:50   with your customers."

00:11:52   Anyway, so I can pass those back and forth

00:11:54   between me and Jess, who does this for me.

00:11:56   And so we can pass those around and build up

00:11:59   this vocabulary for how we communicate with our users.

00:12:00   And sometimes I will build a full canned response form

00:12:03   letter in there.

00:12:04   Like every now and then, there'll be something that is

00:12:07   just a pervasive message I'm getting.

00:12:09   I had one with an outage where I just had a server outage.

00:12:13   And everyone was emailing saying, hey, it doesn't work.

00:12:15   There's a server outage.

00:12:15   And so I had my little canned response.

00:12:17   And so I just said, server error colon.

00:12:19   And it popped it up.

00:12:21   And I could have used Google canned responses.

00:12:24   But what this allows me to do, once I build this vocabulary

00:12:28   and I'm in and enabled those three settings in Google,

00:12:31   is I can do all of my help desk from the keyboard.

00:12:34   I never have to touch a mouse.

00:12:36   So the way I do it is I go in, and I typically actually

00:12:39   work newest to oldest, which may be a little counterintuitive.

00:12:42   But because I'm always emptying out the list when

00:12:47   I'm doing a session, it seems to work pretty well.

00:12:50   And what I really love is whenever someone sent me

00:12:52   an email and I can respond to them almost instantly,

00:12:55   I feel like that is a much stronger

00:12:57   positive than the person who emailed me say 24 hours ago,

00:13:01   they're getting their message 20 minutes early.

00:13:04   Or it doesn't really make nearly as much of an impact

00:13:07   as somebody who happened to have emailed me 5, 10 minutes ago.

00:13:10   They're getting a response right away.

00:13:12   So that's why I go top to bottom,

00:13:13   and I've set the auto advance to do the next oldest message.

00:13:17   So I'll sit down, I'll hit the top message,

00:13:19   and then it's all on the keyboard.

00:13:20   You hit, I think it's R in Gmail to reply to the message.

00:13:26   I'll do all my little text expander snippets

00:13:28   or type out whatever the message,

00:13:29   if it's a custom message.

00:13:31   Then you hit Tab Enter, which it will do send an archive,

00:13:34   load the next message, and you just keep going.

00:13:36   So it's R, message, message, message, Tab Enter, message,

00:13:41   and then R, Command S. You work your way through this very,

00:13:44   very quickly.

00:13:45   You want to make sure you know all the Google shortcuts.

00:13:47   So I think it's--

00:13:48   if you see that you can archive messages that are junk.

00:13:51   But you just kind of work through this.

00:13:53   And that's how I do Help Desk.

00:13:54   I found that I've had a very strongly positive response

00:13:58   to this kind of style because people just seem to feel

00:14:02   like I'm paying attention to them,

00:14:03   that it's not a lot of form letters.

00:14:05   Even though I'm using something like TextExpander

00:14:07   to save me time, every person's response is custom

00:14:11   to their problem and their issue.

00:14:12   And I'm tailoring the voice and the context to that.

00:14:17   And it doesn't take hardly any time for me.

00:14:19   I'm doing a message every few seconds, usually,

00:14:22   if I'm really in the flow of it.

00:14:23   and it lets me be responsive to my users.

00:14:26   So if any of that makes sense, if you have any questions, just let me know. I know it's a little bit fiddly

00:14:29   and a little bit hand-wavy to describe.

00:14:32   But as always, if you have questions, comments, concerns, I'm on Twitter

00:14:35   @_davidsmith. I'm on AppNet @davidsmith.

00:14:38   The Twitter feed for this show is @devperspective.

00:14:41   If you want to get a notification when any new shows come out.

00:14:45   Otherwise, that's it for today's show. Happy coding, and I'll talk to you later. Bye.