Learning To Create Non-Personal, Usable Software
I've been keeping my head down working on a piece of Facilities Management software for awhile now. When I was in the field, FM software was denied to me and my team. Talking with other FM departments via message boards and email, I learned that it's a common pain point: there just wasn't any funding for us.
After I left I decided I wanted nothing to do with FM ever again. But, I felt morally obligated to at least try to help out my former fellow under-funded and overworked facilities guys. So here I am writing software.
And oh boy, making software for yourself versus making software for people to hopefully find useful someday is an entirely different ballgame.
I wanted to compile a list of things I've learned, and to have an excuse to write another blog post.
 
UI Design Is Hard
On the final day of the trade show, the guard could restrain his curiosity no longer. "Sir Thief," he said, "I am so perplexed, I cannot live in peace. Please enlighten me. What is it that you are stealing?"
The man smiled. "I am stealing ideas," he said.
Tao of Programming, Book 3, proverb 3.1
It's kind of funny, I've been looking at software UI my whole life, but I never really studied it in any serious capacity (I'd mostly done random CLI/graphics programming before).
Wish I did beforehand, because I had to teardown my entire UI yesterday and start from scratch. It was horrendous. Cluttered tables which somehow linked to more cluttered tables (???). I don't know what possessed me to go that route, but I'm re-evaluating.
There's probably a better tools out there, but I'm currently sketching what I want the UI to look like in Excalidraw while I look at other software for inspiration.
 
Structure Early
I'm using a new frontend library currently, so the early stages was me throwing random things against the wall to see what stuck. When I got into a groove and started more seriously moving things together I ran into cluttered code.
A moment of realization was when I had a specific page that should have just been UI setup, but it ended up doing DB calls, parsing, and then more DB calls.
Had I started out with that any sane person would do, that being split the program into models, services, and views from the start, then I wouldn't have needed to refactor as heavily as I did a few days ago. Ah well.
 
Constraints & SQLite
I mentioned before in my old company GeoCo that we were mostly underfunded. Even despite the fact we had facilities and operations around the entire country, we were also allocated the least amount of care and time.
This would be, as I would come to understand, a common pain point with the people in other companies as well.
So one of the things I wanted this application to be is a statically linked binary that could just live on a company server and really didn't need much fuss to setup. Hopefully an IT department would be able to get it up and running pretty quickly.
This lead me to run with SQLite. I'd heard you can do multi-user CRUD applications with it, and did my due diligence researching how, but I'm genuinely worried it'll cause a bottleneck down the road which will lead to another rewrite.
But I guess I'll cross the bridge when I get there? If people can make it work then maybe I can as well.
 
Hope you all have a wonderful start to your week!