“How do you know when 30 minutes has gone by, when all you have is a set of matches, a rope that has random points of density whose entirety will be consumed in one hour?”

“With 9 balls and 2 attempts to use a scale, how do you figure out which single ball is a different weight from others?”

“What do I have in my pocket?”

Brain teasers. Riddles. Lateral-thinking exercises.

They’re all the same, and I’ll spend the better half of the day trying to figure one out if you give me one. The act of taking a small amount of information and extrapolating any sort of connotation or denotation from it while thinking about it critically is my favorite thing to do.

That’s why back-end technologies in programming have always interested me so much. The act of setting up means to record and access information, is the very act of setting up your own riddles.

How many users of a Tinder are male? How many people that signed up for Pokemon Go are still playing as opposed to one time users? What’s the breadth of age that we see on Facebook?These are all questions that can be asked and resolved using the data that was collected from these tech monoliths. And I found that fascinating.

So in my own projects, the number one thing that I always focused on was the data models, the database, the joins, the relations..in a couple words - the backend. I found the front-end as almost frivolous, as a gimmick.

I found that revealing my projects to non-technical friends or family wasn’t that enjoyable. They just couldn’t understand the complexity that went into it - and so I grew bitter and arrogant. All of these puzzles that I had created and solved with less pieces meant so little to them and it disappointed me. It was their fault for not understanding how efficient I was being with my data models right?

…No, it wasn’t. It was my fault. And I begun to put more and more effort into my UI. Then the total switch in my philosophy came when I read the infamous rant by Ryan Dahl. For those of you that aren’t familiar with it, here’s a copy of it. For a TL;DR though, he’s the creator of Node.js, and he goes on to say how tired he is of it and all software that’s needlessly complicated. And that ultimately that the User Experience is the only one that truly matters.

That got me thinking…lots of products are ousted by ones with inferior capabilities, but ultimately better usability and UI. cough A certain fruit company..cough. But actually, Apple is a wonderful example, Apple wasn’t the first to use touch screens, they weren’t the first to create the mp3 player, they weren’t the first-to-market with any of their products truly…but that didn’t matter, because everyone liked the UX was so superior. People didn’t care about that Samsungs’ products had better durability, or that LG’s had the best camera. They cared about the overall feel of the phone.

You can have the most amazing intricate product in the world, but if it’s not fun and/or easy to use, no one will.

And so I’ve started creating new puzzles, this time putting myself in the head of a non-technical end-user. I’ve started to go back through all of my old projects.  I’ve begun bootstrapping, adding Angular, and/or just normal JS to the projects, trying to figure out the riddle of what keep’s a person’s attention.

Software is a tool to make things easier for people. And if non-technical people aren’t wowed by your application…it’s probably because it sucks. So don’t fall into the pit that I did early on, the UI will always matter, because the end-user is more important than you and your ego.