Using a large number of projects

Hello

I'm wondering if there are any pros / cons to using a large number of projects.

Currently, we have about 6 different projects. These are

  • A project which manages the dashboards
  • A project which collects data from OPCUA and forwards it to SQL/tags
  • A project which sends notifications via email / sms
  • A project which operators use to input various reports
  • A project which supervisors use to review reports
  • A project which engineers use to update machine parameters

The justification currently used for this system is that it allows developers to more easily manage versioning, as for example if I want to change the operator screen, I can create an "Operator Screen V2" project, make changes without impacting the screens used in prod, and then copy these changes over to the main Operator Screen project.

Additionally, the duplication of code is apparently a benefit, as it makes it harder for one developer to accidentally mess up all the code, isolating mistakes to smaller elements of the system.

I feel like this is very strange, but is there a good justification for it?

6 is not a large number. Some systems have many more projects and function well. There isn't a problem with using multiple projects to organize resources that serve different purposes.

I would say that project organization, at minimum, should serve a distinct purpose such as splitting elements of design (Vision vs Perspective) or for organizing different Sites, Lines, Devices etc.

You described a system with different projects based on primarily use-case and who is using them. That is not the worst organization system I could envision.

The justification currently used for this system is that it allows developers to more easily manage versioning

You can always export specific resources from a single project to work on them, so I would say this justification isn't that meaningful. Organization in general is good justification for multiple projects.

Additionally, the duplication of code is apparently a benefit, as it makes it harder for one developer to accidentally mess up all the code, isolating mistakes to smaller elements of the system.

This is the main reason I wanted to reply, who said this? Ask them if they really think this is a benefit. Do they think their designers will constantly be breaking things? Duplication of code, especially if it is repeated code, is wasted work. One thing you should absolutely be doing, when dealing with multiple projects, is using Project Inheritance. This is one of the more effective tools for developing with multiple projects because you can have a single Parent Project that is a source for all of your repeated scripts, queries, Style Classes, etc. So yes, a mistake in that shared code would be quite impactful, but you can avoid issues by testing before deploying to production. So "duplication of code" should be avoided if possible.

4 Likes