I developed a big(ger) project, which is in use already and grows, gets altered, fixed, etc. every week.
Until now I am the only developer. Since the team has to grow, also we will be more developers on that project.
The code is mostly self-speaking or commented on the darker places ...
But I guess an experienced developer will find its path.
To explain the projects tech in a few points:
- the Frontend are two SPAs (React) giving functionality to customers and administrators
- the backend is a Node.JS API (NestJS) with the main purpose of being a flexible GraphQL and REST endpoint(s) and being capable of doing heavy computations, aggregation, organization and exports of data
- a postgres database
- additional (micro-)services doing cleanup, optimization, transfer, etc.
- a CI/CD pipeline that let's us comfortably deploy changes to either a staging or a production/live server
My question is about documenting every flow (or the more complex ones), every Entity / Table, every use case, so that the user (customer) and developers know, what the whole system can do / has to do. Just to find and see first the big picture and secondly the internal details like rules, etc. without digging through the whole codebase (which btw is not an option for the customer).
The project has grown over years, so have I and so have the duties of that software. I still think the project is SOLID enough to be maintained for a longer time.
To the question.
As there is 0 documentation (except from the code), would it be a good Idea to start transfering parts or (in the best case) the whole project into
- use case diagrams
- a big class diagram (for the Entity Class should be OK, I think. To transfer even all controllers, services and helpers will be not too usefull, I guess)
- activity diagrams for the more complex processes (or also even for the whole system?) Does a Double-Opt-In Process have to be drawn as a diagram?
I am asking for experiences of people working in larger projects. Is it good practice in big enterprise projects to do this? Or is it just a tool to "get into a project"? I am afraid that the work of achieving this will grow drastically while being in the middle of the process. I don't want to start and realize after weeks of work, that there will be no end and even no gain in having a "partly" with diagrams documented project.
I also would love to "feel more freedom in my mind". Until this point I feel like I have the big challenge of never forgetting anything about this detail just to be more on point if I dive back into the projects after weeks. I would like to put that knowledge (for me and others) on a sheet of paper or some .zargo
files ...