Platform Engineering Reduces Cognitive Load and Raises Developer Productivity

8 minutes read
06 December 2023

This article was originally published on The New Stack.

 

 

Unsurprisingly, developers have, over the past decades, created countless memes that depict the struggle of joining and understanding a company’s code base. Attempting to choose tools, frameworks, and methodologies wisely in addition to complying with DevOps’ “you build it, you run it” mantra has caused software developers’ cognitive load to skyrocket, requiring significant effort and resources to comprehend, create, and maintain increasingly complex software.

To alleviate the challenge of excessive cognitive load, adopt platform engineering, a structured approach that eases the pressure of the software development lifecycle by streamlining processes, offering standardized tools, and automating repetitive tasks.

This article describes the following:

  • The impact of cognitive load on developer productivity.
  • The ways in which platform engineering alleviates the cognitive load, boosting productivity and fostering software development.

Understanding Cognitive Load in Software Development

Coined by John Sweller in his 1988 paper Cognitive Load During Problem-Solving: Effects on Learning, cognitive load refers to the amount of intellectual effort or information processing required to execute a task. Vis-à-vis software development, cognitive load is the analytical endeavour involved in processing software artifacts, which varies according to the task and individual.

Robert Martin pointed out in his book Clean Code: A Handbook of Agile Software Craftsmanship that “the ratio of time developers spend reading and understanding versus writing code is well over 10 to 1”. Not only that, cognitive load is a pervasive struggle that intensifies if it becomes excessive, which limits how much information people can effectively process and memorize, leading to delays in task completion, errors, and suboptimal solutions, as well as heightening stress, potentially causing burnout and decimating job satisfaction.

Discerning Platform Engineering

Platform engineering is the practice of designing and building toolchains and workflows for self-service capabilities that reduce the complexity and uncertainty of software development in this cloud-native era. Of key importance are internal developer platforms (IDPs) that reliably manage application configurations, build new and fully provisioned environments as necessary, provide a pipeline for continuous delivery or deployment, and, more importantly, secure development projects.

How so? Let’s make an example. In a traditional context, to start a new project you should spend several hours manually configuring the development environment.
Now, imagine you have a graphical interface (or a command-line interface – CLI) to orchestrate complex software development processes. If you’re using an IDP, with this capability you just need to execute a command from the interface or from the CLI specifying your preferences: the IDP will automatically manage all the configurations to start the environment.

What’s more, a transformative approach like platform engineering can automate repetitive tasks, accelerating and reducing the mental strain on software engineers and eliminating human errors.

Redefining Developer Workflows

The advent of technology in recent decades has eased and accelerated the software development process. Of prominence is the revolutionary DevOps function, which birthed platform engineering by promoting collaboration, automation, continuous integration, and delivery. Impressively, DevOps—

  • Bridges the gap between development and operations by having automation play a central role in streamlining tasks such as testing and deployment through CI/CD pipelines, leading to faster and more reliable software releases.
  • Reduces the cognitive load by automating code integration and deployment so that developers can focus on problem-solving and innovation.

Recognizing the Impact of Platform Engineering on Productivity

According to a Puppet report, 37% of respondents from organizations with robust platform-engineering practices are “very satisfied” with the effectiveness of their product-delivery process, That heartening endorsement speaks to an enhanced developer experience that unquestionably lifts productivity.

Specifically, platform engineering performs two important functions:

  • Simplifies the initiation of development projects through a consistent set of tools and frameworks.
  • Gifts developers—through the internal developer platforms—everything they need to test and deploy code, minimizing delays throughout the development lifecycle. Automated workflows for building, testing, and deploying applications abound in those internal platforms.

It is worth giving a more practical example of how this works. Imagine your developers working on the same project on different branches. When one commits changes and pushes code, the IDP runs all the pipelines, checks the compatibility, converts the code into an artefact, and runs it on all the selected servers and environments. In a traditional context, the developer should have been following and overseeing the entire process, manually starting each phase. Instead, in platform engineering all these repetitive tasks are carried out by the automation provided by the IDP with no further action from the developer.

Leveraging the Advantages of Platform Engineering

By mandating that developers are responsible for writing, deploying, and maintaining code in production environments, the DevOps’ “you build it, you run it” principle inadvertently magnifies technical professionals’ cognitive load. Platform engineering overcomes that issue by offering these benefits:

  • Reduced complexity: Platform engineering finds and suggests the right level of abstractions, enabling developers to bypass complex infrastructure setups and configurations.
  • Strong collaboration and knowledge sharing: Platform engineering promotes cohesive cross-team collaboration through the same set of tools, practices, and methodologies, as a result of which teams can readily learn from one another with nary a gap between development stages.
  • Consistency and reliability: Thanks to standardized tools, processes, and infrastructure, platform engineering ensures consistency and reliability in the development pipeline by minimizing misconfiguration-caused errors in testing, deployment, and maintenance.
  • Shorter time-to-market: Platform engineering’s automation capability for development processes, reusable components, and advocacy of cross-functional partnership speed up product delivery.
  • The natural evolution of DevOps: Building upon DevOps’ core concepts for enhancing the software development process, platform engineering establishes an end-to-end self-service setup for the process. An endorsement of such an approach in Puppet’s 2023 Edition of the State of DevOps Report posits that 93% of the respondents to a related survey believe that adopting platform engineering is a step in the right direction for their team.

Creating Viable Platforms: Paving the Path for Developers

Golden paths allude to a guided and well-supported software development technique that works harmoniously with viable platforms on which are standardized cloud environments for streamlining processes. Dedicated internal teams curate and maintain those platforms’ underlying tech stack, infrastructure, and cloud space so that they, the platforms, act as accelerators, eliminating the need for software engineers to reinvent the wheel with each and every project.

Overcoming Cognitive Overload

Itrevolution’s paper 2022 DevOps Enterprise Forum Guidance reports that 76% of organizations surveyed agreed that the cognitive load necessary to learn their software architecture is so heavy that it’s a source of angst and low productivity for developers.

To defeat cognitive overload, developers should adopt these strategies and techniques:

  • Simplify: Ensure that your code is easy to understand, maintain, and debug by following good coding practices, i.e., prioritize clarity over cleverness, create descriptive names, comment, and document your code. Avoid nested loops and conditions, unnecessary intricacies, overengineering, and convoluted logic.
  • Abstract and modularize: Abstract code by making it easier to work with. Also, modularize it by breaking it into small, independent modules that can be reused and reassembled to form different applications. As a result, developers can generate solutions that are easily understood, maintained, and scaled.
  • Learn from others: Excelling in programming requires endless learning. Join open-source projects and communities, study experienced developers’ solutions for problems, and simplify processes and procedures. Additionally, learn coding styles and best practices by participating in code reviews, teaming up with peers on projects, and seeking feedback.
  • Take breaks: Prolonged periods of intense coding without rest can cause cognitive overload. By scheduling and taking breaks, you relax your body, regain focus and motivation, and can then ably tackle the overload. Consider adopting the Pomodoro Technique, whereby you work for a set amount of time and then take a short break to maintain focus and prevent exhaustion.
  • Shift to Mia-Platform: Leverage the capabilities of Mia-Platform and its frameworks. Adeptness with the related tools and their capabilities significantly reduces the amount of custom code required.

In Summary

As technology advances, developers invariably bear a heavier and heavier cognitive load while building, testing, and deploying applications, becoming less productive and generating lower-quality code, not to mention suffering from heightened stress and even burnout.

Platform engineering offers self-service platforms that comprise a standardized ecosystem of tools, frameworks, and workflows that abstract much of the underlying complexity and streamline software development and delivery. Developers can then concentrate on crafting innovative solutions instead of tending to the often-mundane tasks of managing deployment and infrastructure.

Simultaneously, the development cycle becomes more agile because developers can rapidly iterate, test, and release software, delivering new features and enhancements much faster. What’s more, the resultant healthier and more sustainable work environment not only prevents burnout but also is conducive to developers performing at their best while keeping pace with the demands of an ever-evolving technological landscape.

To find out why and how to evolve into a platform company, read this whitepaper by Mia-Platform.

Mia-Platform Platform Company
Back to start ↑
TABLE OF CONTENT
Understanding Cognitive Load in Software Development
Discerning Platform Engineering
Redefining Developer Workflows
Recognizing the Impact of Platform Engineering on Productivity
Leveraging the Advantages of Platform Engineering
Creating Viable Platforms: Paving the Path for Developers
Overcoming Cognitive Overload
In Summary