In addition to everything that has already been said—and what will likely be said—I would add that…
Well, there are some projects that are gradually changing here and there. For example, if you are working on a growing app that constantly requires new features and implementations, one thing is almost certain: you will need to tweak the database here and there, adding new data types, fields, option sets, and so on.
This is common for apps like these and then you will need to plan the data migrations to populate new fields/datatypes (where applicable) and remove old ones (in the past I used to put a prefix on these old things to remove them after everything was done, something like “DEL_”, but now Bubble implemented one way to flag these fields.
And, you know… not everything needs to be created as reusable from the start like reusable element, reusable event, backend workflow, or even a global variable (a feature recently implemented by Bubble). However, you will start to recognize the need for these as you start to see repetitive patterns emerge. This is also normal, some developers anticipate future repetition and build with a reusable architecture from the start, though this isn’t necessary in every case.
In other cases, you might find yourself using these reusable artifacts not because they appear in multiple places across the app, but simply to consolidate logic, a screen, or a workflow into a single, centralized location.
You should also use colors in your workflows, give them descriptive names, use folders to separate logic and flows, and adopt a naming convention that makes sense to you but without making a mess.
There was a time when the element tree didn’t use icons to distinguish between elements, so some people used emojis to identify them, and I believe, some still do.
I picked up some habits from that era, so even today I still use “
” for reusable elements . You know, some people are more visual than others
. However, while some people use emojis in the names of option sets and elements, you should avoid using them in the names of data types, fields, options within option sets, and so on, they can cause problems over time and end up creating a mess rather than helping.
And yeah, documenting everything you can is incredibly helpful, while documentation should be an essential part of the process, I understand that it isn’t always easy to document things when the speed of creation and constant changes leave you with no spare time.
So, at least, you should focus your attention primarily on the most complex parts. If you can’t produce written documentation, try making videos. I personally like making videos for myself to explain complex workflows, in addition of written documentation.
This is different from the well-organized written documentation a project ideally requires. Fortunately, there are tools available today that can assist you, such as Buildprint.