OK, I’m back. (wipes hand son pants)
So, let’s talk about these different kinds of not caring. There’s a singular word that sounds much better to describe this attitude: apathy. Since I defined two different forms of apathy above let me further define them here and divide them into two distinct and opposing terms: Developer Apathy and User Apathy.
User apathy is me staring at the toaster, waiting for my toast. It’s your boss or client staring at you with those eye lids half closed saying, “Just get the job done”. In some sense it is a nearly absolute manifestation of expectation. Please me now, or cease to exist. No, wait, AMAZE me now or I will hate you forever. I want, what I want and I don’t care how I get it.
Developer apathy is the toaster, toasting. It’s aware of that “darkness” setting but of almost nothing else. It doesn’t even know if there’s bread in there, it just knows that the handle was depressed, the desired setting set and when that temperature and/or time is reached it’s going to eject something out and turn itself off! Done. Anybody want some more toast? I did my job and I don’t care who I did or didn’t please. I did what I was asked to do. End.
Of course, the complete disconnect between end users and engineers has been recognized for millenia. That’s why we have design and usability and accessibility teams and countless other aestheticians sitting between the people with the toolboxes and blueprints and the general public. That’s why the Sistine Chapel isn’t just a sturdy building with an all white interior. That’s not the point I am driving towards. What I am trying to remind myself and yourself of is that even as a Software Engineer that the level of ignorance that had crept into my work habits was unacceptable especially from an engineering stand point. The HTML/CSS/JS that applications produce is still something far removed from the end user, the mark up really isn’t for them, it’s for the user agent. It’s for the browser, the phone, the kiosk. It’s still well within the realm of my discipline and control as a developer. The essence of the realization is that myself and others should be paying more attention.
So, I started caring (a lot) and went back to the first principles that had made me a good enough Software Engineer to keep myself gainfully employed for so many years and applied them to the challenge. What was the output of the applications I was building supposed to be, really? Was it really so indefinite, so arbitrary?
At this point it might be instructive to roll the clock back a couple centuries to the time when the Internets and the Googles didn’t exist. When computers were barely able to calculate the number of donuts in a baker’s dozen. What did the target output of those machines look like?
I’ll tell you. Tables.
Matrices to be more exact and as we are all well aware. Here’s a quick snapshot of one: