Hot or Not
If I surveyed a hundred people about how pretty our user interface is, I would bet that about half would say “meh”. And that’s OK. Assign It To Me is boring, but it works.
First off, beauty is subjective. Beauty can help sell, but beauty won’t keep customers around. If it did, enterprise software in general would not be nearly as ugly as it is today.
Assign It To Me is made by two people. We’re bootstrapped. Right now, we don’t have money for a designer. Because of that, we went all in on a web ui (user interface) framework to allow us to develop an application quickly without it being horrifically ugly.
For us, flow and functionality come before beauty. If we can get those two things right, people will use our application in spite of the fact that it doesn’t have a glossy finish.
From Here To There
The web ui framework we adopted was Angular Material, which is a fast way to build applications that match Google’s Material Design look and feel. Google made Material Design multi-platform, and to our eyes, it was a decent foundation to get from point A to point B. As I was coding our Assign It To Me client, I could focus on flow and functionality while leaving the cosmetics to the canned modules of the Angular Material library.
But something happened along the way. We got to point B. Our app hit 1.0, and was starting to feel some growing pains with the Angular Material library. On large lists, we were seeing some performance issues that could become showstoppers. Because AngularJS has a reputation for being slower than ReactJS, my first inclination was to blame Angular. After further digging and some luck, we found out the bottleneck was Angular Material and not Angular itself. Our task lists are information dense, and each row has a menu. This menu (md-menu in Angular Material speak) was slowing down our page rendering big time.
Once I found the root cause, working around the issue was a lot easier. But in the process, we’ve moved away from a lot of Angular Material’s components in favor of our own.
Firmitas, Utilitas, Venustas*
Now that our app is stable in terms of flow and function, we are going to start making cosmetic improvements to the application. This won’t happen overnight. These improvements will be gradual and sensible. Once I’ve confined the use of Angular Material to some core modules, it will be easier for me to make these changes, because I’ll have fewer constraints, and won’t be beholden to as many breaking changes with Angular Material library updates.
As much as I would have loved for 1.0 to be splashy and flashy, it would have just slowed down development. Many of our better features were nothing like the original designs. A lot of trial and error while dogfooding the application produced a lot of design improvements. But now that the skeleton of the application is solid, we’re going to build on it in a big way. By the time we hit 2.0, I want the description of “boring, but it works” to be replaced with “works beautifully”.
* firmitas,utilitas, venustas means solid, useful, beautiful
Other articles by this author:
- Not Invented Here
- A Defining Moment
- Wheels, Mousetraps and Other Clichés
- Quick Hit: Create Visualizations Using YAML/JSON files
- How to Save Data Locally in Electron