enforce best practice
As software engineers, it is important for us to provide a nice user experience. Software is almost always measured by user experience, rather than internal code, architecture or design.
However, we should not get carried away by this need to please the user, and instead try to refine the wheel when it comes to user experience.
Now, I am not saying that you should entirely skip already used frameworks, libraries, or philosophies but instead try to introduce something new, and whenever possible try to enforce it.
Sometimes the confusion and error endured by a user pays off, if the user is able to use the software more efficiently or the software becomes more powerful. Other times it does more harm than good.
When do we enforce it? Whenever there is a non risk to it. If you ever make a new personal project, there is a good opportunity to experiment, especially with user experience
This is because you do not have a boss nagging you, or a lot of responsibility over your shoulders, or even a reputation to uphold. I am not saying build bad projects either, just reasonably experiment.
A good rule of thumb is experimenting with 3 minor ideas, and keeping the rest standard and fairly conventional. Or, as I like to do, keep everything conventional and experiment with 1 major idea. This major idea should greatly shape and mold your software.
A great example of this is the text editor: vi. For those who do not know, vi is a text editor with a strong philosophy around individual key strokes…
Unlike other editors, when you enter something in vi you enter a mode, and all subsequent keystrokes are executed within that mode. For example, if you wanted to delete around a character, say a bracket, you execute di[
and voila whatever is around the bracket will be deleted…
With vi you cannot simply type stuff and it appears, no, you have to go into insert mode (by pressing i) and type whatever you want. If you want to do some other functionality, you have to press escape, and transition from insert mode to normal mode.
This is exactly what I mean when I say enforce best practice. vi does not care about the normal experience, or users. It simply cares about enforcing it’s philosophy, it will not cut corners or meet halfway, you either use it or you don’t. But it’ll never try to please you by becoming something it is not.
Enforce best practice, because otherwise you WILL get lost in the sea of dull and ordinary software. Enforce best practice out of passion rather than necessity. Enforce best practice cause it is the antidote to a boring work life. Enforce best practice, because without it, software development can not evolve.