Gartner, the global research and advisory firm, recently hosted an impressive event in the bustling city of London, bringing together leaders in the realm of application and software engineering. With over 1500 attendees, and a lineup of reputed analysts, the event featured prime exhibitors, including us at CAST. While many topics captured the attendees' attention (low-code/no-code, Generative AI, etc.), one concept stood out as particularly intriguing: cognitive load.
Understanding Cognitive Load
Cognitive load, defined as the mental effort required to perform a task, holds significant importance in the realm of software development. This cognitive load experienced by developers is influenced by various factors:
- Complexity of the Task: The software landscape is becoming increasingly intricate, with numerous technologies spanning from back end to front end, hundreds of thousands of interdependent elements, and millions of lines of code.
- Knowledge and Experience: Developers often switch projects or companies, leading to limited experience with the specific software they are working on. In some cases, experts with decades of experience in older but still actively used technologies, like Mainframe, retire, taking critical knowledge with them.
- Tool Limitations: Integrated Development Environments (IDEs) currently are the go-to tools for understanding software, but they fall short when dealing with millions of lines of code. They are also incomplete, providing a limited view of the software tech stack, which hinders developers from gaining a holistic understanding of the application.
The Impact of Cognitive Load
The consequences of this ever-increasing cognitive load on developers are profound. Cognitive load results in fatigue, errors, and frustration, and makes it challenging for developers to learn new concepts and be creative. Additionally, it has significant business implications, including:
- Reduced Responsiveness: Companies struggle to respond promptly to customer and market needs.
- Lower Customer Satisfaction: Unreliable and low-performing products or services diminish customer satisfaction.
- Security Concerns: Introduction of major security flaws becomes a real risk.
A Solution: Platform Engineering
To counter the challenges posed by cognitive load, Gartner recommends forward-thinking enterprises to adopt platform engineering. Platform engineers collaborate closely with developers, supplying them with the tools and resources needed to boost productivity and efficiency as they build more reliable products quickly. For instance, they design and build self-service tools and workflows for developers, such as continuous integration and continuous delivery (CI/CD) pipelines, infrastructure provisioning tools, and developer portals. They also establish and ensure best practices for software development and delivery.
The Key Ingredient
Study upon study has found that developers spend the over half of their time understanding existing code.
Whether creating new capabilities, maintaining existing software or modernizing legacy applications, developers spend the bulk of their time comprehending all relevant dependencies between the various code and data components, repeatedly re-creating ‘images’ of the system in their mind, and typically involving others on the team to validate their understanding, thereby affecting their productivity, too.
Thus, in my view, platform engineering should also provide capabilities allowing developers to navigate the application structures much faster, like interactive application blueprints. Such maps of applications’ inner workings – akin to what software intelligence technologies, like CAST Imaging, automatically deliver – allow developers and architects to navigate through technologies, services and APIs It helps visualize all elements (e.g. methods, classes, programs, webpages, tables, procedures, etc.) and all dependencies that make up any custom-built software. Studies have demonstrated that visual representations reduce comprehension effort – i.e. the developers’ cognitive load. What’s more, the level of accuracy and completeness of such blueprints, auto-generated from source code and database structure analysis, help software teams find answers to their technical questions rapidly AND independently, without interrupting nor burdening subject matter experts – like database administrators – who often have such knowledge.
Benefits of Platform Engineering
Embracing platform engineering leads to a range of benefits:
- Enhanced Developer Efficiency: Developers can work more efficiently, leading to a better overall developer experience.
- Increased Agility: Software development teams waste less time digging through the code searching for answers, leading to faster development cycles.
- Superior Products: The end result is the delivery of more reliable, efficient, and sustainable products with reduced technical debt.
In a rapidly evolving software landscape, managing cognitive load is essential for developer wellbeing and business success. Platform engineering, as advocated by Gartner, emerges as a compelling solution to empower development teams, reduce cognitive load, and ultimately deliver superior software products. As businesses strive for greater agility and innovation, investing in platform engineering is a strategic move toward achieving these goals.
* - see the references in our developer productivity guide.