Every enterprise I’ve worked with has the same graveyard: a SharePoint site, a Documentum vault, or just a shared drive nobody’s renamed since 2014, full of PDFs and Word files describing how a system used to work rather than how it works today. Nobody updated the architecture diagram when the system migrated. The runbook still points to a server that got decommissioned. And the process document everyone calls “current” predates the last three reorganizations. The expectation is usually there, too. Most organizations assign documentation upkeep to the team that built the solution, and in my…
GitHub has introduced Immutable Subject Claims for OIDC (OpenID Connect) in GitHub Actions. This update fixes a security issue where the subject claim in the OIDC token used to be based on organisation and repository names instead of permanent identifiers. What was the problem? Organisation and repository names can be changed or reused. This means that if an organisation or repository is deleted or renamed, another actor could, in theory, create a new repository or organisation with the same name. This would let them land in the same namespace within the subject claim, and in the worst case…
When we talk about integrating AI agents into software engineering, our minds go straight to the wins: faster development, smaller teams, quicker time to market, increased revenue. The pitch is compelling. Who wouldn’t want to ship faster and spend less? But in our rush towards these gains, we’re missing something fundamental. We’re optimising for immediate productivity whilst overlooking a deeper problem. Let me take you back to 1983. A psychologist named Lisanne Bainbridge published a paper on the ironies of automation.1 Working in human factors research, she studied how humans interact…
One of the major shifts in developer ergonomics has been the introduction of functional pipelines to most popular languages. A pipeline is a chain of operations on a set of data that transforms the data into another shape or value. It is made functional by using lambda functions as the primary way of specifying behavior. git ls-files | grep -o "\.\w*$" | sort | uniq -c Linux has always been built around this idea; programs accept text input and produce text output. This allows you to chain programs together with pipes (|). The above example finds all tracked files in a git repo, then matches…
How insights from cognitive science and social psychology explain why software knowledge is so hard to preserve Summary Software teams face a knowledge problem that no amount of documentation seems to solve. When experienced developers leave, something valuable departs with them — something that comprehensive handover documents and well-commented code fail to capture. Two researchers from the 1980s provided frameworks that, when combined, explain this phenomenon with unusual clarity. Peter Naur argued that programming is fundamentally theory-building1: the real product of software development…
What Is Critical Thinking? Critical thinking emerged as a formal area of study from multiple traditions. The most influential modern definition comes from the 1990 Facione Delphi study 1, where expert philosophers and educators reached consensus on what constitutes critical thinking - no small feat in philosophy. This definition has been widely adopted in education and professional development. They arrived at this: We understand critical thinking to be purposeful, self-regulatory judgment which results in interpretation, analysis, evaluation, and inference, as well as explanation of the…
So you have a difficult problem to solve, and you’ve decided to ask for help with it. Congratulations! Recognising you’ve got a problem is the first step to solving it. Nobody knows how to solve every problem, so you shouldn’t feel bad about needing to ask for help. The next step, which a lot of people find difficult, is to do the asking in a way that helps people to help you. This article aims to help you with that. A lot of what I want to say here is already covered in Eric Raymond’s classic essay How To Ask Questions The Smart Way, and I’d recommend reading it. Having said that, it was…
Just as the universe is governed by a handful of fundamental forces, (gravity, electromagnetism, and the strong and weak nuclear forces), software engineering is too shaped by irreducible forces. These forces, drawn from the deep structure of our discipline, define what is possible, what is difficult, and why certain patterns of success and failure recur. Viewing software engineering through this lens allows us to see not just a collection of best practices, but a coherent framework grounded in the very nature of software itself. Synthesis: A Standard Model of Software Engineering These three…
In today’s rapidly evolving technology landscape, enterprises are under growing pressure to innovate, stay competitive, and reduce operational overhead. At the heart of these demands lies the daunting challenge of modernising legacy applications. From high costs and vendor lock-ins to fragile architectures and limited test coverage, modernisation is a multi-faceted journey fraught with complexity. Before delving further, let’s take a moment to define what we mean by a legacy application. What Is a Legacy Application? According to Google, a legacy application is “a software system that is…
Vibe coding (also vibecoding) is an AI-dependent programming technique where a person describes a problem in a few sentences as a prompt to a large language model (LLM) tuned for coding. The LLM generates software, shifting the programmer’s role from manual coding to guiding, testing, and refining the AI-generated source code. Vibe coding is claimed by its advocates to allow even amateur programmers to produce software without the extensive training and skills required for software engineering. The term was introduced by Andrej Karpathy in February 2025 and listed in the Merriam-Webster…
As a consultancy, we are expected to have strong and well-formed opinions on all new technologies arriving on the market. So we often get asked, “What should I be doing with AI? Should I be using it? What should I do and what should I avoid?” And the answer is, of course, “It depends”! There are so many factors behind whether or not AI solutions are right for a business. So, a good place to start before trying to answer this question is to be goals-oriented; to know where you are, as a business, and to know where you want to go. Then you can figure out whether any form of AI can be…
Defra is a long-standing client for Capgemini, with both organisations sharing a commitment to sustainability. Recently we have been focussing on whether we can introduce “Green coding standards” to our teams. Whilst there can be benefits from developers focussing on making each line of code “greener”, much greater wins can be achieved from using best practices to minimise the infrastructure and resources used in the software development lifecycle. Listed below are the best practices that our teams follow at Defra to help make the application estate as sustainable as possible. Prerequisites…
It’s quite a common design requirement to have a border on some states of an element but not others. For example a set of tabs where the currently active tab is highlighted with a top border, or a button where a border is added on hover. The problem is that if you add a border to an element, that changes its size, so if you add a border on one state of a component, then the size will change when the state changes, as you can see from these examples: One simple and elegant solution is to use a transparent border on the other versions of that element, and only change the border colour when the…
I’ve said before that using the cloud feels to a certain age of developer like a kid in a sweet shop. Talking to a colleague of a similar age recently about how he wrote his own message bus in C, we agreed the current generation don’t know how lucky they are to use this software as a service via few clicks on a beautifully laid out portal! This week I was amazed again what can be done in a few clicks, whilst taking part in a Capgemini hackathon. The brief was short and open – “build an app with AI”, and the toolset was $300 credit on the Microsoft Azure portal. What my team decided to build…
In this blog post, I’ll walk through how using LocalStack with Docker and Docker Compose helped us speed up development and testing, making the entire process more efficient and seamless. When building modern cloud-native applications on AWS, having a reliable and cost-effective approach to development and testing is essential. For this project, we utilised LocalStack, a platform that simulates AWS services locally. This enabled us to work more efficiently, speed up development, cut down on costs, and quickly test integrations without constantly interacting with the actual AWS cloud.…
Use Cases for Generative AI For the past year, almost every week the Software Engineering world is asked about Artificial Intelligence (AI). “What should Capgemini’s AI offerings be?”, “Aren’t you worried about the role of Capgemini software engineers now that AI can write code?” Specifically in these cases, the questions are around Generative AI. To put that in context, here is a recap of some terms used to describe different implementations of AI. Machine Learning A nice dictionary definition of machine learning from Oxford Languages is: “the use and development of computer systems that are…
In the evolving landscape of digital communication, email spoofing poses a significant threat to the integrity of online identities. As a hobby project, and to practice AWS and software design, I have been developing an application called MovieBooker. This application streamlines the process of booking movie tickets and managing movie programs for both moviegoers and staff. Email Integration with AWS SES As part of the infrastructure for the MovieBooker application, I implemented Amazon Simple Email Service (SES) to send emails when a user pays for a ticket. However, I encountered a challenge…
In 2022 we announced a new style-agnostic React library called dcx-react-library and today, after almost 3 years of hard work and 14 releases, we happy to share that version 1.0.0 is finally available. What’s new We’ve built more than 35 components organised in 3 different categories: forms, utilities and typography, keeping in mind our main principles: fewer dependencies small bundles fully tested AA accessible I’m pretty sure the main question you’ll be asking yourself is: “why did you decide to make a major release version?” After using the library on our projects, we realised that we sped…
The need for automation in software engineering, especially in Cloud and Platform Roles is apparent. Manual, repetitive tasks consume time, introduce the possibility of human error and can become tedious for team members. In this blog post, I wish to document my journey of automation using Bash. We’ll look at the process and explore how automation can positively impact our workflows and our team. Automating Simple Commands with Bash Scripts For my first project at Capgemini, I have been working as a Platform Engineer within Cloud & Custom Applications. I quickly recognised the importance of…
Read at the source
Your visit, your choice.
Optional Google Analytics helps us understand visits. Microsoft Clarity records masked interactions to improve the site. Optional tools stay off unless you choose them. Privacy details.