January 06, 20178 minutes1,661 words

Educating the... user?

Sunday, May 15, 2016, approximately 10:45 AM. Sunday school was ending and I was standing in the foyer outside the sanctuary. The pastor walks up to me.

"Hey, I need you to look at my computer. It's acting funny."

We walk to his office and I sit down at the desk. He explains the computer is running slower than usual. Additionally, any Web browsing locks up the computer for 45 seconds within 2 minutes of opening the browser. I manage to pull up the Windows 7 Task Manager to see over 50% of the RAM being used with over 50 processes running. Even after killing a few of the heaviest processes the computer is still sluggish, and attempting to open Chrome causes the computer to lock up.

2:30 PM. Service has long been over. Everybody has left. I have been alone in the church at this desk for an over hour. Malwarebytes Anti-Malware has just finished scanning and removing the 1,009 detected items (including two trojans). I have removed a ton of preloaded junkware and really old software dating back to 2009 as well as an installation of Java 6. I have to be ready to carpool in 2 hours. I am hot, tired, hungry, and ready to go home. I put a sticky-note on the screen and drive home, leaving the anti-virus to do a full scan.

As I am driving home, I think about what the pastor asked me before he left 45 minutes earlier.

"How do these things get on the computer? How can you stop them from getting on there?"

Wednesday, May 18, 2016, approximately 4:00 PM. A co-worker's computer has a virus. It tried to transmit itself to my developer co-worker's computer via a flash drive. It has blocked all access to anti-virus websites. Even stub installers were blocked (my co-worker described it as "the trolliest virus ever"). I managed to get MBAM running (successfully updating the definitions too, strangely) and run a quick scan. As the three of us sit there waiting for mid-scan results, the guy whose desk I am sitting at and computer I am scanning asks me some questions.

"So how do viruses get on a computer? Email, websites, thumb drives? How can you prevent viruses? How do people write viruses? Why do they write them?"

The scan had barely started and already two pieces of malware were detected, identifying it as the Conficker worm. I pull up the Wikipedia page and begin silently reading it, describing only key, non-technical parts.

Keylogger? I guess that is expected in our line of work. What is a botnet?"

4:40 PM. I am installing some long-overdue anti-virus when the installer says "Downloading definition files."

"What are those?"


In each of these instances, I did my best to give a brief, non-technical, understandable answer while attempting to remain accurate in facts. Some may call this "talking down", as the more knowledge people must use "every day" words, phrases and examples to explain technical, jargon-riddled topics. Even with my inability to always find the correct words to properly express myself, I would like to think I fulfilled the goal of explaining these things to the pastor and co-worker. Yet while explaining all this, I could not help but have a feeling that somewhere, somehow, we in tech have messed up.

We in tech have failed to educate the user.

My little revelation here is nothing new. This shortcoming is proclaimed all the time. I have known it myself for years. Only then did it really click. Do understand that I have plenty of people ask me these kinds of questions. Recently, someone asked me what two-factor authentication meant. The strange part is that it took me so long to reach this conclusion. Maybe because I have grown-up around tech. Indeed, dad got his first Windows 95 computer before I was 1 year old. We have home video of me using the mouse and (as I assume) watching the cursor move around on the screen. I am technology "literate." These things make sense to me. So when someone near my age does not know what something is, I momentarily step back.

We in tech have done our best to make sure the Average Joe can understand how to use a computer, understand how some software works, and comprehend what a certain thing means. A great deal of research and work goes into UX. Even obviously simple and small changes like marking non-secure password fields requires much research and revision. As the Web moves to HTTPS-by-default, we will see UI changes that provide improved, different, or UXs, which will hopefully help the end-user better understand everything. But even with the advances, there will be people who do not understand what is going on. The aforementioned questions posed by two very different people will still be asked.

As the common adage goes, "The most problems lie between the computer and the user." Why does this software use red to indicate something bad but this other one uses yellow? How come I can right-click on a page to print it in Chrome but not Firefox? Well obviously it's a different piece of software, duh. Even I, a techie in my own right, am confused by things at times. How do we fix this? How do we reduce confusion as much as possible without making everything look homologous and bland (oh, wait)?

"Educate the user!" one may cry. "Teach the user with the most effective means possible!" says another. While these are noble and admittedly lofty goals (effective education is a completely different topic), what if I told you that we may be looking at this all wrong? (You have no idea how I am resisting posting a meme here.)

What if it is us, we in tech, that need educating?

This may sound crazy, but hear me out. Even in my nearly four years of programming, I have repeatedly heard, and learned, that when I approach something from the eyes and mindset of the user, I am more inclined to make it more usable and user-friendly. Yes, I know we need to do this at all times and probably do it more than we realize, but what if we took it to the next level, so to speak? What if instead of designing for ourselves and what we want, we looked at it solely from the average user's standpoint (because we the developers are users as well)? While there are some really cool ideas that I, as a tech person, would love to use (such as Browser.html), I just wonder how much innovation and UX improvement, as well as a reduction in user confusion, we could have if we focused more on the user. It cannot be that hard, can it?

Maybe the most problems are not with the end-user, but with the people writing the code. Maybe we are the ones that need to learn what it means to design for everyone. Maybe if we took a brand new look at user data, user expectations, and user assumptions and produced new or different best practices rather than supporting the existing norm, maybe if we educated ourselves better in being clear in our purposes, goals, and words (such as speaking in more "every day" terms), then as a result, we would be able to be more effective in our designs, code, and decisions for the masses. It would be a challenge, for sure, but if it produces good results and is meaningful to our goal, we should be up for the task, right?

This is not a new idea, by any means, but I think it is an idea we miss too often. For years now I have had the idea of writing a programming book. One key feature of it will be (and is, as I am currently writing it) a simple tone and language. To quote the current draft:

Too many books are written either with this super-advanced, you-need-to-be-an-English-major-to-understand-it style or super-low, talk-down-to-you-because-you-do-not-get-big-words tone. I have personally read both types. This book is different because it is written roughly as I speak. It aims to strike a balance between understandable and advanced. We will be using technical terms but they are all clearly explained in normal language.

In my own personal experience, this type of language is often super effective in teaching tough concepts. Other courses have proven this methodology. ES6 for Everyone by Wes Bos is an excellent example of the success non-technical language has in explaining tricky things. I can only wonder what would happen if we took this same approach to UX, user education, and personal education. What if we used technical words but made it clear what it meant? What if we were clearer and more direct in our approach?

I am not suggesting this is the cure-all. Clearly, the scope of this post is small and the assumptions and conclusions are likely naive. Consider this post as more of a pondering of what we could do, what could happen, if we tried something different.

One last thought. Psychology gives us the concept of psychological projection. Two parts of projection is personal praise and blame shifting, or attributing personal successes to ourselves while accusing others for our faults. I wonder if instead of blaming the user and looking down upon them, we blamed ourselves. How much would that fix? How much more would we be likely to Do It Right™ if we identified ourselves as the culprit and not the user?

That question will have to wait until later. Right now, I have to deal with this annoying client. He keeps bugging me about the navbar when viewing the site on his iPhone. He claims the links completely go away. I have explained a hundred times that the hamburger will trigger an event that will initiate a sliding animation to reveal the links to tap if he does not feel like scrolling down the page, but he will not get it. Maybe if I send him a "Let Me Google That For You" link about modern responsive design principles and best practices he will finally understand and stop nagging me so I can finish the work on this website for his dog wash he so begged me to make.