"I hate doing UIs."
For years, I've designed data systems, algorithms, and efficient data processing flows. I'm comfortable with it. They're problems that I know how to solve. But I really pigeon-holed myself by purposely avoiding any sort of UI work. I'd develop a quick analysis script and slap a UI together so that other people could do the work without me. But here's the thing: the users would complain about things that required me to do additional work.
- "I can't find the button to make things run."
- "I accidentally fat-fingered a slash in a field and the whole thing crashed."
- "Oh man, it'd be real nice if you could make this tool do x, y, and z. I know z is really hard, but it'll save me a couple of minutes. It's just like 4 lines of code, right?"
Ugh, users. Software would be so much easier to develop without their
crazy ideas input.
And that was my attitude for years. I avoided UI work like the plague or an ex-girlfriend. Since hindsight is all 20/20 and stuff, I know now that I was limiting myself by not taking the time to understand why users were having issues. Consumers of APIs? I've got that under control. Users of a graphical interface? Not so much. Because of this, I also steered clear of any web development for close to a decade.
My wife and I were building a live escape game (that's a story for several other posts), and we made the decision to roll our own UI for the rooms and the game masters. I decided then that it was a good idea to brush the cobwebs off my web dev skills. I mean, really, how much had web dev changed in 12 years?
That was before I'd encountered Babel. React. JSX. Node. Websockets. Thank goodness there wasn't that much to catch up on!
We had a tight deadline to finish up the UI. I had about 2 months to make something work... while working another full-time job, spending time with the kiddos, physcially building out the escape rooms themselves, hiring people... It was a busy few months! And it didn't help that I had to catch myself up on sooooo many tech items. I ended up halfway implementing several things and cobbling together UIs that "worked".
... You know, if I'd cared enough about user experience and had kept up with web dev, I would have developed something that was prettier, more useable, and easier to change if necessary. And I would have delivered it with fewer hours logged. Why is this important?
- I would have spent more time with my family. That whole work/life balance just was not there. One day when I was up at the store hacking away at code, my wife brought some dinner for me and had our youngest daughter with her. I broke down in tears when my daughter hugged me because she hugged me liked I'd been out of town for a week.
- It affected my day job. Countless hours working on a "side business" meant that I was struggling to stay awake and focused on my primary source of income.
- It is not pretty code. I spent a lot of time doing Stack Overflow Driven Development to get something functional out the door. I didn't make the project public before because we intended to sell our escape room software when things "settled down." I'm not making it public now because it's embarassing code. I'm pretty sure that it would turn away prospective employers if I ever enter the job market again. It's still tucked away in my own private repo as a reminder of what not to do.
TL;DR - I spent waaaaaaay more time than necessary developing embarassing code, while negatively affecting my salaried job and (more importantly) my family life. And it's all because I let my web dev skills rot, and mainly because I'd abhorred even the thought of doing UI development.
I changed companies shortly after we opened our second escape room, and I joined a project for modernizing software for a government "alphabet agency." Some of the other guys joined the project before me and were working on a lot of the underlying algorithms. The guy running the project asked me "Why don't you take a shot at developing our configuration UI?" And that's when I said it, yet again. "I hate doing UIs."
As much as I butted heads with my lead on this project, he said something profound that I hadn't taken into consideration before. "Don't say that again. It makes you seem like you're not a team player." I knew it would be good for me to branch out and learn new things, but I hadn't thought about how it affected team dynamics. In order to work well with others, you can't put up artificial barriers like that. But we all do it! Sure, there's always something that you'd rather not do. I don't particularly enjoy taking out the trash at home, but I don't complain about that. It's something that has to get done so we can move on to things we do enjoy.
My wife decided that she wanted to start making analysis dashboards at work, and so she started picking up on D3, as well as web development with a focus on UIs. She picked up one book in particular that caught my eye: Design for the Mind. I'm sure there are also other recommended reads out there for good UI development, but I put all my past feelings aside and picked up this book... and I was entranced with the psychology behind UI design. Conducting user interviews to see if you're building a tool that is beneficial to their life or workflow. Constructing the UI in such a way as to guide the user down the "happy path." All sorts of things I'd never taken into consideration before! I now actually find UI work sort of enjoyable. Do I still prefer developing algorithms? By all means, yes! But now that I understand how UIs should be built, it makes development of anything visual actually understandable and fulfilling.
You might not like doing something, and that's okay. But grousing about it to your coworkers? That's detrimental to your work environment and has negative impacts on team dynamics. Sloughing off any work in that field because you don't understand it and don't care to understand it? Well, when you have to do it, it'll take significantly longer and possibly upset your life/work balance. Find a way to enjoy it. Stop "hating" something that could positively impact your career or life, and find a way to make it enjoyable.
I don't really like taking out the trash, like I said before. However, I will stop and enjoy the night sky and get some fresh air on my front porch before I head back inside. And I look forward to that.
I hope you enjoyed this article! I haven't presented technical info in a blog before (mostly talks w/ slides), so I'd appreciate any feedback you might have!