Messy cables

What your admin panel tells us about your company

Posted Fri May 28 2021

... what are you talking about? 

Claiming that sounds pretty snobbish right? I realise that this might come off as something out of a trashy magazine, but I genuinely believe this. So let me tell you what this is about;

So let's start with the vital question; why are admin panels a thing? Well, most products have them so non-technical people can quickly add data in the database and/or easily run tasks — the things developers would typically use console commands for.

These panels are often an afterthought, as a customer won't able to access these. Being an afterthought, this often results in the worst UX possible, enormous navigation trees, and a lack of decent CSS (I've even seen products with admin panels that have no CSS at all.)

And that is a problem? 

Well, to me it's a bit strange. You build an entire portal to your database, the most vital part of your product, that is often used by non-technical people and put close to no thought into it?

Even if only people use it that is fully aware of the data model and structure of your application, this still sounds extremely risky. I would even argue that if your admin panel doesn't support validation on your input, you would be better off with just half a day of SQL training for the people that would use the panel (with protective rules on the accounts). That way, you have a security vector less and don't have to maintain the panel at all.

But it goes further than that. There is this movement in developer land that talks about DX. DX is developer experience and revolves around creating an environment that a developer likes to work in. I'm not talking about ping-pong tables or free sodas. I'm talking about the nitty-gritty itself. Working with a nice API or changing the font of your code editor (IBM Plex Mono <3).

If your entire day is based around working with a webpage, with scarcely any CSS, and upon submitting your form, you see a 500 Error because you made a small typo: that's pretty frustrating. Even if you only have to do a small change every x days, it's still not going to be pleasant.

There is also the point of the broken windows theory. I've written an article about this in the past, but I quickly want to touch upon it here as well. Once you create a part of your application that you don't care about, that's when the entire application starts to slip. These small blemishes never seem to be contained to their "admin panel sandbox."

There is this excellent talk from Jeffrey Way that talks about this concept more deeply. (Now whatever you think about Jeffrey, Laravel or even PHP. I do believe that all of these transients beyond that)

Wasn't your previous post about the ROI of code? 

Yes. In that post, I talked about: time to market, ROI of clean code and how you, as a startup, have to do things quick and dirty to get the ball rolling. Your first instinct might be to see this as a total contradiction to that (so was mine, that's why I wrote this part).

But there are some differences here. When I talk about a quick and dirty hack to meet a deadline, I don't talk about laziness. This point is crucial to me. If you can't figure out how to do something "cleanly" and resort to writing it in the ugly way to reach the deadline, those things are excusable. If you make a form in an admin panel and can't be bothered to add validation to that form, that is laziness. The laziness can poison your database with corrupt data and could have been avoided by putting in 5 minutes of work.

What is the least amount of effort I can do? 

Just use something off the shelf. Open source or not doesn't matter. If you have to validate a credit card number, and your framework doesn't have a built-in validation for that, your first reaction is probably checking Github. So why not for admin panels? They mostly already come with a theme, so you don't have to bother with that. Validation often comes out of the box and as a bonus: it probably also has a ton of extra feature that you might not have thought about. I'm thinking about graphs and user management.

What about an existing product? 

I assume your application already has a way to display tables and forms (or it's going to have it at one point) if that's the case, then you have all the tools already available to display and handle data. Now apply the same care you put into the client-facing part to the admin part.

Regarding the navigation; you can apply the same domain borders to the navigation. Takes a bit more thought, but it's also not going to make you embarrassed at the next standup.

I understand that all of this doesn't sound very critical to the operations of your product. But I do believe that this is all about mindset. A mindset that directly relates to the rest of the application. So next time you have to add a small form to a neglected admin panel, please take the extra 5 minutes and add at least form validation, or maybe even a lick of CSS.

Hey thanks for reading!

Hope you enjoyed this post. There is no comments section here, if you've ever seen the YouTube comments section you'll probably understand why. If you have any remarks or comments on this topic, you can find links below to social media discussions

A chair and a washbin

The economics of clean code

Posted Thu Feb 06 2020

Clean code makes projects more comfortable to work with and improves shelf life. Its the antagonist of vile legacy codebases that are unmaintainable. Then why do we see it all the time?

Continue reading

How to implement a code of conduct

Posted Thu Jan 28 2016

We shall not be discussing the ethics or possible political impact this brings with it. We will however propose a starting point on how to implement them.

Continue reading
Bird's eye view of a landscape

A bird's eye view on API development

Posted Sun Nov 15 2015

So you want to build a web API. You have to start somewhere, why not here

Continue reading