In my 13+ years of career in the IT industry, I have experienced that in most of the software development projects, the source code of the product is organized in some form of layout or so to say unorganized as flat layout. No layout or flat layout is a form of unorganized layout; meaning the source code is placed in the root directory and no hierarchy is maintained.
Often project directory layout is the most underestimated aspect, unintentionally ignored and the least interested topic from the development point of view in any project. As long as the product is being developed and deployed successfully, neither the developer nor the architect pays attention to the layout. Nonetheless, the layout plays a very crucial role from delivery point of view as it is one of the key attributes in deployment automation process or continuous integration and continuous delivery(CI/CD) process. Build and deployment automation process is primarily designed on the basis of a project directory layout(this is true also for unorganized layout).
In the absence of a layout, as mentioned earlier, such as in an unorganized layout, scripts are written for the code placed in flat layout. This is not bad but limits the entire automation logic confined to the respective layout and often tempts the designer to add absolute path or hard-coded path wherever possible. On the other hand, in case of organized layout, host of advantages can be reaped including automation, maintainability, serviceability. Namely, following benefits can be achieved:
For an organization working with single application/library, these benefits can’t be realized. However, for those working with multiple product applications/libraries, the benefits are clearly tangible. Having a defined layout gives consistent look across all the projects. Engineers moving across teams with their special development skillsets find the consistent look appealing and it easily creates a “feel at home” sense. They can immediately focus on prioritized development or troubleshooting defects rather than spending number of hours trying to understand the structure or finding the fault. For a release engineer, the underlying layout makes the support and maintenance easier due to common parts; thus common processes can be applied smartly across similar projects. This is one of the step towards enabling smooth CI/CD process for your project.
Do you recognize this as a concern in your organization? Feel free to contact TMC-ALM to learn how you can benefit from this and what layout you can implement for all your products.
Contact details are on our website (https://www.tmcalm.nl/).