Back when I was in a consulting role, one of my clients had taken an interesting approach to making it clear when users were accessing non-production environments. The differentiation was added because of a scenario where end-users believed they were in a test version of the application, but were actually working in production. The scenario they added to the application, triggered alarms when the data was posted in the live system.
The Big, Bold Banner
The client decided to include a banner to every screen of the application. That banner, when enabled, would display a message. The banner used bold colors, think Microsoft Windows 3.1 Hot Dog Stand theme, so that the message could not be missed. The large bold text would read things like "DEVELOPMENT INSTANCE" or "TEST INSTANCE" - making it clear that the user was not actually working in the production instance.
Challenges with This Approach
While I understand the goal of this approach, two things bothered me with the approach the client took:
It seemed like the approach was backwards. Meaning, if anything, I thought the production instance should have a warning message — since making changes in this instance will cause critical issues. Without a banner in production, users might forget to think about there not being a warning banner all together. Of course, the reality of having a hot-dog stand bold banner saying "PRODUCTION INSTANCE — BE CAREFUL" doesn't feel right either.
I didn't like the idea of having code in the production application that was only designed to be used in non-production environments. While I know this happens quite a bit in other areas of application design, I did want to point out this minor point.
What's The Answer?
When I expressed these concerns to my client, I was asked for alternatives to their approach. After spending time thinking through various options, I really wasn't able to arrive to a valid recommendation. In the end, end-users have to be able to test extreme conditions and they need to be able to enter these same conditions in production — in the case where the condition really exists (not a false alarm).
So maybe having a banner to remind the user they are in a non-production environment is the best solution after all. What are your thoughts? What conclusions or designs have you implemented to handle this scenario?
Have a really great day!