The low code programming paradigm has increased in popularity during the last few years. Several low code platform vendors advocate that it promotes development simplicity, accelerates the software development cycle and minimizes writing and maintaining code, enables the delivery of operational applications, and saves costs. Low-code development was not covered adequately in academic research. In this study, we explored what challenges the development team faces in the low-code development process and what impact these challenges could have on the maintainability and performance of applications. Then, we investigated how the development team addresses these challenges to reduce their impact. We followed an exploratory approach and used three data sources. We reviewed the related research and technical reports. Then, we explored the top discussions in low-code online forums. Finally, we conducted interviews with low-code developers. The results highlighted the challenges the developers faced in the low-code development process. The challenges were categorized into Background and Experience, Extensibility and Flexibility, Code-review/Version-control and Collaboration, Documentation and Support, Customization, Data Storage and Access, Integration, Testing, Technical debt and Refactoring, and Other Challenges. We found that the maintainability and performance of low-code applications could be impacted when the development team is mainly citizen developers, the application is complex, implements a non-supported use case, there is no code review, no/amber version control management, or not following efficient development framework methodologies. Additionally, practices such as extending applications with traditional code, customizing an existing workflow or component to implement complex logic, creating an inconsistent data model/architecture, and writing complex data queries could decline maintainability and performance. Furthermore, the development teams we interviewed took some actions to address the challenges, such as educating the citizen developers about the development principles, setting some strategies to handle the versioning and code-review, and following best practices. Some LCDPs have inbuilt mech-anisms that analyze the development output quality, which could help in improving the software quality.
- Master Software Engineering