When even screenshots fail

My best weapon for handling user queries is the screenshot.

User: Hey Vincent, I’ve got an error when doing X.
Me: Send me a screenshot.

User: Hi Vincent, sorry to disturb you. The application Y doesn’t work.
Me: Send me a screenshot.

User: Dear Sir, I cannot log in to application Z. Please advise.
Me: Send me a screenshot.

I’ve been fortunate in that I don’t have to educate my users on how to create a screenshot. Imagine the conversation with me describing where the PrintScreen button is…

User: Uh, how do I send you a screenshot?
Me: Just do a PrintScreen.
User: How do I do a PrintScreen?
Me: Just press the PrintScreen button.
User: What PrintScreen button?
Me: It’s a button on the top right corner of your keyboard, beside the Scroll Lock button.
User: Ok, I’ve pressed the PrintScreen button. Now what?
Me: Now send me the screenshot.
User: How do I do that?

I’d probably slam the phone down and throw it halfway across the hall.

PDFs, Word documents and bitmap files

Anyway, even with the absence of the kind of inane conversation above, I still receive some interesting emails. I might receive an email with a PDF file. I open the PDF file and lo and behold, there’s a screenshot inside, all shiny and black and white and kinda fuzzy and grainy due to the warping from the PDF writing software.

Yes, there are users who are more adept at creating PDFs than Word documents.

Then there are screenshots where the user diligently took a capture of the screen. With the actual error obscured by another window.

Then there are the emails with a file size of 2 megabytes. Think bitmap file attachments with a resolution of 1024 by 768 pixels.

Then there are the clever users who took a screenshot, and to compress the file size, they dumped the contents into a Word document. Word automatically compresses the bitmap. I can’t blame them for not knowing how to use an image editor, even one as simple as Windows Paint. Didn’t get any fancy meta-screenshots, though I’ve gotten a screenshot in a PowerPoint file before.

Then there are the ultra-clever users who know how to take a screenshot, use an image editor to crop it, and *exclaim* save it as JPG or PNG. Even then there are problems. Let me first show you this:

Yellow screen of death

If you’re familiar with ASP.NET, that’s everybody’s favourite error screen. It has useful data such as the general error message, the line of code where the error occurred and the stack trace. The stack trace contains information such as what events were triggered so you know for example, which button was clicked.

Now I have this web application with a loading screen, played out with an animated GIF image. And when there’s an error, something like this shows up:

ASP.NET error with Now Loading

I’m terrible at drawing stick figures… It’s supposed to be a stick figure searching for files in a file cabinet, and throwing any useless files behind him.

Well, my user sent me that. Most of the useful information was below the screen. So I asked her to scroll down so I could see them.

Me: Can you scroll down and resend the screenshot?
User: How to scroll down?
Me: Just use the scrollbar and scroll down.
User: What scrollbar?

That’s the compressed version of a few emails back and forth. I didn’t quite throw my phone across the hall, but I did take a deep breath and drink some water.

Then I took her screenshot and added some comments in it.

ASP.NET error screen with comments

I accompanied that modified screenshot with more comments in my email. I can’t remember what I typed, so here’s the closest version:

Hi,

I’m sure the man throwing files all over the place is all very nice, but I can’t see the actual error below him. Please scroll down so I can see more of the error message.

Regards,
Vincent

Sometimes, you’re not just debugging code. You’re debugging human behaviour.

How to prioritise your tasks

I follow just one simple rule. This rule comes from the culmination of 3 job changes, more than 5 years of experience in programming, administration, technical assistance and interactions with users and peers. And it goes something like this:

Given similar levels of urgency, first do that task which has the most number of people irritating you.

Feel free to substitute “irritating” with “bothering”, “unhappy with” or “angry with”.

What a young king taught me

Garion was a nice young man, raised as a peasant boy in a farm. He’s polite and modest, had a good sense of what’s right and had great friends. He’s also destined to be the king of an island, protected by powerful friends, and guardian of a precious orb. (find out more from the Belgariad series by David Eddings).

I’m going to skip the part about how he grew from just a simple peasant boy to overlord of the western seas. Now, as a king, he knew it would be very hard to get feedback from his people. Just his title alone scares the living daylights out of the lords and ladies, let alone his people.

So what he did was to have a confidant who’s among his people. I wouldn’t call the confidant a spy, and even if you think it is, I’d advise you not to say it to Garion’s face. He could do a lot of damage even if he’s only mildly irritated.

So, this confidant was a glass blower in town. Every once in a while, Garion would make some excuse about needing to buy some glass ware and go meet this glass blower. Then he’d talk with the glass blower and get some idea of what his people were doing or saying. This way, he’d be able to improve the situation. Coming from a peasant background, Garion really didn’t know how to run a kingdom, so he desperately needed feedback on how his laws and actions affected the common folks.

So, there’s this one time where the glass blower mentioned about a particular tax law which made taxes too high for the commoners and too low for the lords. The people were complaining, but no one dared say anything, even though Garion had repeatedly shown his kindness and fairness.

Garion told the glass blower he’d change the tax law in favour of the commoners immediately. The glass blower was surprised, so he asked his king what’s the reasoning behind it.

“It’s actually based on a selfish motivation.” said Garion. “How many people are affected by the high taxes?”

“About five hundred or so.” replied the glass blower.

“Well then, I’d rather have 5 people hating me than 500.”

How does this apply to me?

Let me give you an example. Suppose you have on your task list, in the following order:

  • Development work
  • An email query that you know is going to take an indefinite but probably long time to check
  • A simple data patching that’s an update statement which takes less than half an hour, including verification

Even though development work came first, you have to put it aside because the other 2 are more urgent. Now, you are already half way through the email query, finally understanding what the user was trying to ask in the first place. Then the data patching request comes in.

This is how I see it. Either way, you’re going to have the user who sent the email query, and the user requesting the data patch waiting for you. There are 2 people “unhappy with” you already. Even though the email query came first, and is slightly more urgent and important than the other one, you should complete the data patching first.

Your goal is to have as few people waiting for you to complete whatever they’re asking for. Can you imagine having 10 people waiting for you? You could have completed 9 very fast requests and have only 1 breathing down your neck. Whatever that long task is, that user is going to wait a long time anyway.

The side effect is that you’re perceived as super efficient by 9 people. 10, if that last user understands the length of time needed for his request. Everyone is happy, and at the end of the day, you still completed 10 requests. The trick is in gauging the urgency level.

Anything involving customers (and thus revenue and thus bottom lines) are top priority. Your users (other than direct customers) are next. Users such as sales personnel, customer support officers, marketing personnel and managers.

And you know what? Development takes the last priority. I’m like an all-in-one, so I handle a lot. Luckily, I’ve taken these constant opportunities-to-learn into my project estimations.

Getting burnt out from an overwhelming number of tasks is not fun. People breathing down your neck is not fun. So how do you prioritise your tasks?

Are you conscientious

My friend is thorough in his analysis and coding. Once, he remarked that he thought about solving a work problem while driving home. While bathing. Just before closing his eyes to sleep.

You could call him obsessive, a workaholic. Actually he isn’t. He arrives on time and leaves maybe half an hour after the official work hours.

He did it beyond the requirements of a paycheck. He cared about the work. Yet he’s not passionate about programming. At least not as much as I am anyway.

He did it because he’s conscientious. Because he’s responsible. Because he cares about the people he works with. And so when the situation requires it, he puts in a little extra effort to make his program better, more robust.

Are you conscientious in your work? Do you choose the right way, or the easy way?

Forced to mingle

There was a recent company event. It was organised for the IT departments. It’s usually referred to as a dinner-and-dance or D & D (not to be confused with Dungeons and Dragons). We usually just do the first D (the dinner, not the dungeons). Everyone seems too tired at the end to do the second D.

My colleagues in my department are close-knit. There aren’t many of us anyway. So we assumed we’d be put together in the same table.

When we arrived at the event, we found that we’d been separated. 2 of us in that table, 3 of us in this table, and another 3 in another table. We were a bit miffed of course.

It’s not so much that we were separated. It’s that we were seated with people we don’t know. We were forced to mingle with people from other departments and teams. There’s nothing wrong with mingling. We just weren’t prepared to mingle.

So we went into the event room, sat down at our respective tables and started making small talk with the people at our own tables. Well, at least I made small talk with the person next to me.

Then something happened. People started changing seats. People found out where their friends were seated and a mass migration happened swiftly and quietly. It was kind of fun. So together with the 2 “known” colleagues from my table, we changed tables. The “new” table has *shock* everyone from our known clique!

I don’t know what the organisers had in mind when they rearranged everyone’s seating plans at the last minute. From what I knew, we were in the same table originally. It just shows how humans can behave when forced along some rule or restriction. Given a chance, we will find a way to rectify the situation.

So here’s a question for you to think about. When you design and write an application, do you force your users to be in an uncomfortable situation? Maybe a button that doesn’t make sense, but they have to click on it anyway. Maybe the flow of entering information doesn’t make sense, but they follow your flow because they have no choice.

Fear of the security panel

Digital access by Eva Serrabassa @iStockphoto

Software security is a big thing. You have to be aware of it from day one, and your code must be designed with security in mind. There are no coding details here. Instead, you are going to learn the mentality behind coding for security, and a lesson in human behaviour. And it starts with a story…

The ride up

It’s a typical morning to work. I arrived at the office lobby at 2nd floor. The 1st floor is actually the car park. We can discuss this architectural mystery some other time.

Sometimes, I’m alone, which was cool, because that meant I could take the lift all the way up to the 6th floor where I work. Otherwise, there would be people exiting at the 3rd, and the 4th, and the 5th, and ooohhh, finally, my floor.

Now there are 2 lifts. I timed it, and my experiments told me that squeezing into the 1st available lift to go up to the 6th floor where everyone was in, was slower than taking the next lift that I could take all the way up.

Anyway, on the rare occasion where I find myself caught in a full elevator, I noticed a peculiar behaviour. Now I’m not saying everyone’s like this. It’s just something that’s frequent enough that I took note of it.

First, I need you to visualise the inside of the lift. The doors, which open and close on both sides of the lift, is in the centre of the lift entrance. To either side of the lift are the lift floor buttons. Every single floor has its button, plus the obligatory open, close and “come help save me” alarm buttons.

“Tell me about the weird behaviour already!” you exclaim. Ok, ok…

Some people would stroll straight to the back of the lift, even though they’re the first in. I mean the nice thing to do would be to go to the button panel and hold the lift open while the rest of us are trooping in, right?

Now here’s the even more peculiar behaviour. Some people, even though they’re right next to the button panel, don’t lift their finger to hold the door open at all. Sure, there’s another person at the other panel too. Then that person exits the lift at 3rd floor. No finger lifting. And while people are exiting too, the lift doors close. I had to rush in and take over at the button panel in one instance.

The long walk to the security panel

There’s a reason why I just used a couple of hundred words describing my lift ride. Those very people who don’t lift their fingers to help hold the doors open? On the 6th floor, suddenly, they’re filled with gentlemanly virtue or immense courtesy, and their fingers flew up to press the “open” button. Why?

So that they weren’t the first ones out. Which meant they wouldn’t be the first one to reach the security panel. Which meant they wouldn’t have to whip out their security passes and authenticate themselves, and get the office doors open, and heaven forbid, let the rest of us in as well.

Let me give you a floor plan of the journey from the lift to the office security panel.
Office entrance

These people would hold the doors open and let everyone out of the lift. They’d stroll normally at the same (or preferably slower) speed than the other people. Someone had to open the office doors. This way, they’re the least likely to have to authenticate themselves.

I believe they are legitimate staff working in the office. I believe they have legitimate security passes for authentication. I also believe they’re basically nice people. So why do they behave in such a manner? My conclusion is that they’re plain lazy.

The authentication process is really quite simple. Sure, the security panel can be faulty, and the security pass doesn’t work sometimes. We have this ongoing joke where if your security pass doesn’t work, the company probably fired you. *smile*

But is taking out the security pass for authentication that bothersome?

“What if those people aren’t at the lift button panels?” you ask. “What if they’re stuck at the front of the lift? What then?”.

Aha, here’s the really ingenious part. Please refer to the office floor plan above. See that visitor couch to the left? They would stroll, ever so slowly towards the visitor couch (or the fire escape), letting whoever was behind them to overtake them and thus reach the security panel first.

And after someone else authenticated successfully, and the doors were unlocked, what do they do? They just waited for the authenticator to open the doors as well. During the authentication process, these ingrates couldn’t go to the doors and open them the moment it’s unlocked. They needed someone to authenticate, unlock the doors and open the doors for them too.

Conclusion

Most of the people working on my floor are developers. Except for the administrative staff (only 2), and the team leaders and managers, the rest are all working directly in software related roles. Programmers, systems analysts, consultants.

If these people can’t even be bothered to authenticate themselves at the office doors, what are they doing about software security in the programs they write? Do they implement security or do they just talk about it?

Chinese Lunar New Year office decoration

In a couple of weeks, the Chinese Lunar New Year will arrive. The exact date is on the 7 February (Thursday), and the 7th and 8th are public holidays in Singapore.

It’s a ritual. Once past their due, our unofficial office decorator will take down the Christmas decorations, and replace them with the Chinese New Year decorations. She even has a system for rotating decorations…

So along our partition walls, we have
Welcome spring
The four Chinese characters are (from the left), “welcome spring receive blessing” literally. Feel free to replace “blessing” with “fortune”. The last character is a bit ambiguous in meaning. In this context, it just means something good.

Then we have
Fortune god
It’s a traditional thing to have the typical picture of a boy and girl around somewhere in decorations. I’ll have to go look it up why… The two sets of 7 characters, one on each side, is a bit harder to translate. The rough translation for the left set is “lots of good fortune, happy every year”. It can also be “great fortune, prosperous every year”. Chinese characters pack a lot of meaning into one word… The right set translates to “God of fortune descend (arrive), meet (have) good fortune”.

The ceiling wasn’t a problem for hanging Christmas decorations, so this is a cinch.
Hanging fish decor
Those 3 characters literally translates to “year year have”, or “every year have”. Have what? That fish under the three characters? In Chinese, “fish” sounds identical to “abundance” (or “extra” to be exact). So that decoration signifies abundance in every year. In the past, when people were poor, this used to mean abundance in food, particularly rice, the main staple. Now it just means anything you consider to be good, like money or fortune.

And where the Christmas tree used to stand, the brightly and auspiciously coloured vase took its place.
Auspicious flower vase
The two orangey things are Mandarin orange displays. During the New Year period, we Chinese exchange Mandarin oranges (real ones) with each other. Why? Well, in Cantonese, Mandarin oranges sound exactly like “gold”. So we exchange “gold” with each other. More to the point, we give “gold” to another, and receive “gold” from another.

I know the phonetic similarities stretches meanings a bit, but Chinese are like that… *smile*

Difficulty transitioning from academic to professional

Graduation by Baris Simsek @iStockphoto

For some time, my current employer had been sending work offshore. Specifically, sending some programming work to China. I’ve been tasked with handling these invisible developers on and off. These developers are mostly fresh graduates, with no experience and barely enough knowledge to write something in ASP.NET or C.

There’s also a high turnover rate, meaning there’s a lot of developers coming and going. Anything more than a few months, and you can consider giving that developer a long service award. I think the reason for this phenomenon is that the developers are finding it difficult to transition from an academic environment to a working professional environment.

In school, if they can’t solve a problem or do a task, so what? Now, they have to do it. They have to do it by themselves usually. The familiar teacher and fellow students are gone. Sure, we provide guidance and be mentors to them. But we actually expect them to perform and give results.

I have seen some seriously detailed specs to them for development work. My thoughts had always been that, by the time I wrote something that detailed in a Word document, I could have used the time to write the code. I’ve always believed that sufficient guidance is necessary, but if I had to think for them the programming logic, then their coding ability is up for question.

The points listed below summarise some of my observations. Take note that they’re based on typical education environments and typical work environments. “Typical” is also based on what I know. Feel free to let me know how your situation is like. I’d love to hear your side of the story.

Standard answers

In an academic environment, you were given standard questions with standard answers. Sure, the questions weren’t identical, but the differences were really minor substitutions. As such, the method of arriving at the answers were standard.

In Singapore, we have what’s known as the “ten-year-series”. As in, “Have you bought the ten-year-series for chemistry?” What’s a ten-year-series? It’s a compilation of questions from the past ten years. Of course, a more appropriate name would be 20-year-series (or more) now. Students would practice and excel on the questions in the compilation, and were almost guaranteed good grades.

My guess is that it’s hard to come up with new and challenging problems every year, so exams come mostly with standard questions, plus a few tough ones to find the brighter students. Any teachers or any readers associated with the pedagogical profession, please feel free to correct me.

The work environment is different. You’re thrown new problems everyday. There aren’t standard answers to these problems. Heck, there aren’t even standard consequences from your solutions, even if they are correct.

For example, you could have solved a difficult technical problem with a brilliant answer. If the customer suddenly didn’t want to do that project, you still failed. Or your superiors are unappreciative morons, and brushes your efforts aside. Be brilliant in the right areas.

Flexible hours

When you’re in university, your study hours were so fluid, you could have lessons packed one day, and be totally free the next. Some people took this uncertainty and developed self discipline. They were able to organise their time even though their timetables jumped all over the place from one semester to the next. Some people weren’t blessed with this fortitude, and whiled their time away.

Come working life, you’re expected to put in hours. You’re expected to be in the office at a certain time, and “allowed” to leave at a certain time. Googlers and other employees of companies with more open policies, you rock.

Suddenly, your freedom is gone. You feel chained, you feel like the creativity and the fire in you die… Stop that! You’ve obviously chosen a profession ill-suited to you. Take this opportunity to learn about what your work is, then move on to something better.

Or better yet, work with your employer and see if you can arrange something more flexible. Working from home or more flexible work hours are options you can ask for.

Theoretical

I don’t know about you, but much of my university days were spent proving some math problem. Or writing programs illustrating the use of some theorem (math or computational science). I didn’t know how injectivity and surjectivity was going to help me in life, but I learned them anyway.

Your job in a professional capacity is to solve problems. Real world practical problems. Your solution suddenly makes a difference, for better or worse. It doesn’t matter what your qualifications were, or how much experience you have. Real world practical problems require practical solutions that can stand the test of time (at least for a while). That piece of messy code you wrote? Go fix it.

Your education in academia should be treated as training your mind. You’re not so much learning those (boring) subjects as much as training your brain, forming new neural connections and creating new thought processes. Learning about injective functions and surjective functions made it easy for me to pick up the concept of joins in SQL. One-to-one and one-to-many relations between database tables became a snap to understand.

License to play truant

Do you skip classes? Watched a movie instead of attending a lecture? As a student, your grade was probably very much based on your exam results.

Not so when you work. Results still count, of course. Your attendance, your ability to come to work punctually now matters.

This really ties in with the flexible hours part. I agree some companies (alright, most companies) are still rigid in this area. Let me put this question to you. Can you go to work in the appointed period of time because you want to, and not because you have to?

I love my work. I love programming. Sometimes, I wake up and I can’t wait to get to work, to start on that code. I do it because I want to. It’s like playing. The standard working hours don’t really make much of a difference to me.

As usual, your ideas, thoughts and comments are most appreciated and welcome.

Office Christmas party

It’s the annual office Christmas eve party! I’ll be letting the pictures do most of the talking. First, when I reached the venue, this greeted me:
Christmas party prizes
Helllloooo prizes! The one on the extreme right is the 1st prize, a Brother printer.

Then I went checking out the place. Cupcakes!
Merry Christmas cupcakes
Of course, you weren’t looking at the cupcakes, right? You were eyeing the booze, right?
Wines

Next I moved on to the turkey.
Turkey dish
The other dishes were covered up, so I moved on to the view.
High view

I spotted some people playing with this contraption.
Roulette ball spinner
And no, it’s not used for the lucky draw. My guess was that it’s used to draw lots in a matching game, where they ask us for stuff and we’re supposed to come up with matching items. I realised how hard it was to find 2 mobile phones without camera functionality…

Just when I thought the only subjects willing to be photographed were inanimate, my colleague offered to be captured in bytes.
My colleagues
He also pulled in a friend. The one on the left’s An Le. The other one’s the brave soul Ming Chun. I was given explicit instructions to capture some of the background too.

So, how’s the lucky draw done? You see those balloons?
Prize balloons
One of them had my name in it. The organisers stuffed slips of paper with our names into the balloons. The fortunate ones would have their balloons pricked and names called out. The lucky draw would be conducted amidst exploding showers of balloon rubber, much clapping and hand shaking, and prize awarding.

And I won a notepad! Cool. I was running out of note paper at home…

Christmas office decoration

It’s about 3 weeks till Christmas and decorations are going up. Shopping centres and malls are decorating. Orchard Road (a major stretch of shopping venues in Singapore) is being decorated. Why not offices?

So my colleague took it upon herself as master decorator and whipped out her secret stash of decorabilia, and enlisted the help of another colleague and myself to help deck our portion of office space.

So here’s the obligatory Christmas tree
Christmas tree

She decided to spruce up the thin railing of our cubicle partition this year, with this result
Decoration along cubicle partition

Since we’re here, I might as well show you what my desk looks like…
Part of my desk
That’s the left wing. The right wing looks messier, with more stacks of files and paper. I’ll spare you the image…

Here’s my computer
My computer
Yes, it’s still with a cathode ray tube monitor. I take good care of it, so barring unforeseen circumstances, it does what it does. It’s getting a little cranky though, a bit slower than before…

Oh yes, apparently, the ground is not enough for my creative colleague. She attacked the ceiling too.
Decoration on fire sprinkler
The fire sprinklers aren’t doing anything useful anyway…

[There has been one made up word in this post]

6 degrees of separation in understanding user queries

Cube network by Andrey Prokhorov@iStockphoto Be grateful. Be flattered. Be outright ecstatic. Why?

Because users think you’re a mind reader.

For some reason, they think telling you “I can’t do X. Please help.” is enough. They don’t tell you

  • which application it is
  • where or which screen in the application it is
  • any error messages they see
  • what they did (before they got the error message)

They sometimes just don’t tell you enough.

6 degrees of separation is already too much. Users expect you to make amazing leaps in intuitive logic from their pathetic amount of information to whatever is ailing them at that moment. That’s one giant step of deductive debugging.

How do you understand their queries better? Just ask. Ask for more information. This is where your people skills come into play. You’ve got to ask them in the way that makes them feel good about themselves. Basically, you want them to feel like they’ve done everything correctly and it’s really the fault of the software, even if you think they’re complete morons.

You’ve got to coax them into telling you stuff. And it doesn’t help if you keep calling them an idiot.

This brings us to the next problem. Users lie. They don’t lie outright. They just don’t tell the truth sometimes. And it’s not because they purposefully and specifically lie to you. Sometimes they just don’t know they’re telling a lie.

The spelling misunderstanding

For example, I recently had this user say he couldn’t use an application X because of an error. I probed further and managed to pry an error message out of him. Something about a missing file. There was this part “Pls check and proceed”.

Well, I thought, the more unique the error message is, the easier for me to locate where in the code the error occurred. Ever since I took over maintenance of legacy programs, I love it when there are unique error messages. Incorrect spellings, short forms of words, unusual text (like two consecutive spaces), incorrect grammar. Searching entire source code with unique search phrases means there are fewer search results, increasing the speed of finding the actual code.

So I typed in “Pls check” into the search box and ran the search. Nothing. What? I looked at the whole error message and nothing stood out as unique. So I got the user to give me a screenshot. The actual error message was “Please check and proceed”.

Did the user lie? Not really. He read and interpreted the error message correctly. It’s when he’s conveying the error message back to me that information was lost. For him, there’s no difference between “Please” and “Pls”. For me, it’s absolutely critical that every single letter was correct. Sometimes even letter casing matters.

This is the heart of understanding user queries: Understand the user.

I maintain many programs and applications, and I work with different sets of users. These sets of users usually don’t know that I work with other applications and users, so sometimes they ask me something expecting me to know the context of their query (when in fact I have no clue).

Here’s a list I use for probing

  • Ask for screenshots
  • Ask for error messages
  • Ask which application they’re using
  • Ask which screen or web page they’re on
  • Ask which button they clicked to get the error

No information is redundant. Debug like a CSI because you should “Follow what cannot lie, the evidence”. In this case, any information you get is evidence. If their version of the error message contradicts the one in the screenshot, then you can ask further. One or the other must be wrong. Either way, you get more information.

When you’re trying to understand user queries, there’s no such thing as too much information.

Your lifesaver, the screenshot

There’s another case where the user was asking why the update button doesn’t work and the application keeps hanging. No error messages, and he told me which application and screen he’s using and even which button (the update button).

In the end, I asked for a screenshot. Everything looked to be in order. Then I looked at the taskbar in the screenshot. He opened 3 instances of the same application, performing the same task at the same screen. That was the problem. Due to data concurrency and locking, the application instances simply got stuck. I told him to use just one instance and everything was fine after that.

Did he lie? Yes, because he didn’t tell me that he’s running 3 instances of the application, which wasn’t designed for that. Was it really his fault? Not really. He thinks doing different updates with 3 separate instances will speed up his work. Like he’s multitasking or something (a mindset shared unfortunately by many of my users…).

What you should strive for is answering the user query with whatever the user first supplied. That’s ideal of course, and usually hard to reach. The next ideal case is this:

  • User sends you email with query (with insufficient information)
  • You understand whatever is given
  • You formulate intelligent questions
  • You call (or email) the user and ask those questions
  • You finally understand what the user wanted
  • You close off the query, whether it’s fixing bugs or answering questions

Calling is usually better than sending another email. You can save a lot of emails bouncing back and forth if you can just talk on the phone. Your ultimate goal is to minimise back and forth communication.

You may not be able to understand and answer user queries in 1 degree of separation. But with a little thinking first, you can do so within 6 degrees of separation.