#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
◼
►
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
◼
►
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: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: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.