Structure allows for creativity

One of the arguments I have heard numerous times is that creativity or art flourishes when it is basking in a pool of total freedom. I quite often have found that a small set of limitations actually improves creativity. After all

necessity is the mother of invention.

I remember quite clearly my days of doing support and not having full access to the source code or the ability to have the customer to upgrade to newer version that I had to think of creative solutions within a very tight bordered off environment. Now of course this is a very limited environment with constricting constraints. Nowadays I have total freedom and yet I put on myself a set of limitations to narrow my limitless field of choices or to come up with a good solution. For example I might say I want the least complex application or the least amount of dependencies or the most ease of use to deploy so non technical personnel can safely deploy. I might place a framework or language constraint. I have to use this framework or language no matter how difficult.

Another way to at least have some structure is in the repository itself. If you have a well defined structure there your mind is free from organisation and scaffolding and can focus on innovative and creative implementations.

So tips on good structure are that you bundle all your scripts according to language each in their folder with . <extension> . For example all Python scripts in .py and shell scripts in .sh. Get all docker, you are using docker right??, related stuff inside docker folder. Then all documentation in docs. If you have frontend and backend code split them as well. Maybe have a folder for tooling as well called cli for example. Use a proper Continuous Integration tool as well.

For databases please use a .sql folder containing anonymised seed data. That way onboarding is a breeze.

These folders make it easy to maintain your local setup and therefore remote setup and therefore more room to code.

#thoughts