A while ago I came across this idea in music production, this is paraphrased but the idea is: „It doesn’t matter if what you’re doing is wrong, if you like it“. I have seen this echoed multiple times and often it comes with the addendum „understand why it’s wrong and then do it anyways“. Only then will you distinguish yourself from the pack and make something truly special and interesting.
I thought about this mindset a lot recently. Let me make you consider this: Everyone starts life with roughly the same ways in terms of education, from a young age, as kids, we get taught how things are done, how they are supposed to be done. As we grow older we realise that the „olden“ ways might not be perfect, that our teachers had flaws and so do their preachings. However, oftentimes within them there are valuable lessons, we understand why things are done a certain way or how something works and then we adapt it so that it works better for us.
This also extends to later in life. I do think most of us hit this moment in our careers where we think we know exactly what’s going on. We have finally cracked the code, we may be aware that there is more to learn but generally we are sure we know the extent of what there is to know and only little is left to master. A certain image comes to mind.
(Source)
So when we think we have arrived, we almost certainly have not. And this isn’t about the classic, the „there is always more to learn“. This is more specifically about a certain point that will shift how you view problems and solutions within your domain. A point where you notice that a decision was made outside of the rules, but instead of disliking the decision you actually agree? Suddenly this unfolds an almost infinite amount of knowledge and experimentation beyond what you understood as the de facto rules of the subject matter. You will have this moment of „wait, you can do that?“ and it will completely warp your understanding of what you thought you knew so well.
And while I think this immediately makes a lot of sense for artistic disciplines, I think it translates to many other areas. As a developer I formally learned about all these concepts that over decades were refined to make my craft as optimal as possible. Think ideas such as abstraction, normalisation, typing, etc..
Once I started working with and not just studying these concepts, it felt like I got the hang of them relatively quickly. I thought I could refactor everything to follow the „perfect rules“ that I got taught previously. In my head they were sound and made sense. It surprised me when people with years and years of experience engineered solutions that felt incomplete or conceptually wrong to me. Even more so when I had to fight for the „correct“ way to implement whatever concept I was dealing with at the time. However, the more I built, the more I learned. One approach being technically more correct doesn’t always mean it is mandatory to do it that way.
Sometimes what you do 99% of the time is not required in certain edge cases. Sometimes it’s fine to duplicate code or columns in your database. Sometimes it’s fine to use an „any“ type. Sometimes it’s fine to spend 5 instead of 30+ minutes to build a script to run it exactly once and then forget about it and touch it never again.
What is important is that you understand why it is ok to break the rules in those cases. And for that you have to learn and understand the rules first. You have to internalise what they contribute and, perhaps, what their drawbacks are. You may even break the rules but get it wrong multiple times first, before it clicks and you get it right. Over time this will evolve and the boundaries of „technically correct“ and „accomplishes the job just right“ blur more and more. The part to remember is that this should not be done out of laziness or because of a lack of care. It needs to be an active, deliberate choice. However, when it is, allowing it to happen will enable you to be more considered and also more expressive. In software engineering this may not be as flexible as in music or other art forms, but in my experience it still applies to some extent. Plus, if nothing else it is nice to reconsider why you do the things you do, rather than just habitually follow what you picked up previously.
To wrap up my thoughts on this: It is important to learn the rules. Learning the rules allows you to make happy accidents, rather than mistakes.