Thinkin' Like a Programmer

July 25, 2008

"I can't figure this out. My email client says I can't attach more than 10 M of data, but then it says I have 16501 K of data attached, and it can't send that. What's a 'M'? What's a 'K'? Why is the second number so big? I only attached a few files!"

I explained to my uncle that "M" stood for Megabyte, and "K" stood for Kilobyte. That a simple calculation to convert "K"s to "M"s was to take the last three digits off the "K"s and you had the size in "M"s, give or take one. That he had 16-17 Megabytes of data attached to his email, and he can only have 10.

His response was to wonder (1) why didn't the client just tell him he had "too much data," and (2) why did the program give him Ms AND Ks, instead of picking one?

My reply consisted of (1) it did, that's what the message said, and (2) because the programmer was thinking like a programmer.

See, my uncle is a very, very smart man. He worked in a video arcade as the guy who rewired the arcade machines when they exploded when somebody poured a Coke on them. He knew how the machines worked in and out. And got paid good money. When he moved back to Texas, he took up industrial and residential electric work, and is now a fully licensed foreman who's in high demand all through the area. When he says "I won't take a job that pays less than $20 a hour," it's not because he's picky, it's because he doesn't have to. Sharp as a tack. But he's not a computer pro. Not a problem, people can't be pros at everything. This ain't the 1700s, where you can pick up a test tube and learn everything known about chemistry in a few days.

But why would a programmer write a error message for an email program that would be unreadable to end users? Because it's perfectly readable to him! When my uncle read out the message, my first response was "You have about 7 Megabytes too many attachments. Send a second email."

Therefore, a programmer checking his work would think this was a great error message. Not only does it tell you that the email can't be sent, but it tells you why. The limit is in Megabytes, but email messages are typically sent in Kilobytes, so the data is already there. See how helpful I am! And the unit conversion between Ks and Ms are very easy; programmers do it 10 times a day and wouldn't even notice it.

That's why we have end user testing, to try to catch these things that programmers won't notice. It's just a simple conversion of units! But for an electrician trying to send an email, it was as opaque as to him as if he had told me that I had a single pole dual throw make-break when I need a dual pole single throw break-make. It makes perfect sense, if you're used to it. And if I think about it for a minute, I could figure it out most likely… but the point is, his error message is useless to me as it's formatted. But it makes perfect sense to him.

So, what's the moral of the story? Well, moral 1 is, try to be sure that all users of your product can understand what you say. We have an extensive testing process here at SoftLayer to make sure our data screens are usable without any confusion. Moral 2 is that programmers don't "actively" attempt to "keep people from using their computers" by "making their programs too complex." For us, it's completely transparent and useful, as useful to us as a circuit diagram is to an electrician. Just let us know if we make something a bit to opaque; it wasn't on purpose, and sometimes it's an easy fix. We were just thinking like programmers.

-Zoey

Leave a Reply

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <pre>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.
Categories: 

Leave a Reply

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <pre>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.