The evolution of software engineering

programmer sat in front of dual screens

At the most basic level, it’s pretty clear what a software engineer does – they build, develop, test and maintain the code in software applications, services, tools and platforms. Yet the role is continually evolving. The focus used to be almost exclusively on coding – on implementing solutions designed by software architects, then handing them over to an operations team – but today, things are different. The growth of agile and DevOps practices has transformed the day-to-day work of the software engineer, so that they may be involved in projects right from conception through to operations.

What’s more, the importance of the function is changing. As firms bring software and data-driven processes across all aspects of the business, it becomes all the more crucial that software engineers create architectures and systems that work reliably and support future growth and innovation. Companies are looking for the best engineering talent to make these business-critical tools and platforms as robust, powerful and extensible as possible.

Engineering for a modern retail platform

This means that companies you might not even think of as being involved in software have become software developers. Take Tesco for example. There, Adrian Spender, engineering director for Tesco Technology, leads a team responsible for its Customer Technology Platform – all the services and APIs that store data and enable customers to interact with Tesco in the most seamless and intuitive way possible.

This isn’t something brought in piece-by-piece and customised for Tesco, but has been built up, component by component, to meet the specific requirements of the UK’s biggest grocery retailer and, in turn, help it to better meet its customers’ needs. “We’re very much committed to building a retail platform that’s driven by APIs developed by our engineering team,” says Spender, “where those APIs encapsulate data and functionality that’s modelled on how you would think a retailer would work.” To do so, Tesco has even structured its software engineering teams deliberately to produce a specific kind of architecture.

The impressive thing about these APIs is their scale and reach. “We have APIs for price,” explains Spender, “which, very simply, will allow anyone in Tesco who needs to know the price of a sirloin steak to have that price. But that API also provides not just the data, but functionality, so that the same API is used on every single one of our tills.” One result of this is that, as a customer is scanning products through the till, the systems can add up the price of the item and apply any promotions in real time. What’s more, the same information then flows into Tesco’s finance systems – innovation supporting both customers and employees.

Similar things are happening on the logistics side. “The way we get fresh produce from our suppliers into our distribution centres, then into our stores and from our stores through to the doorstep requires a massive amount of software engineering expertise,” says Spender. Code used to help teams optimise the movement of delivery vans or work out how to allocate customer orders makes a tangible difference. “It’s literally a case where small improvements to code can have a big impact on all these things. For instance, small changes can result in us using less fuel per van per trip, which means we’re saving money and delivering value back to our customers, while reducing our carbon emissions as well.”

Another strength of Tesco’s API and platform-focus is that components can be reused in different and innovative ways. For example, when Tesco wanted to launch its Clubcard Plus scheme, a subscription scheme that brings additional benefits on top of the usual Clubcard programme, Spender’s teams were able to quickly bring the idea to reality. Similarly, Clubcard Prices, technology giving Clubcard holders instant discounts on specific products, was created using the time-saving APIs that were already in place.

Beyond the code

Building this platform has taken a different approach to software engineering. “It’s not just coding,” says Spender. “We want our engineering teams to be solving problems, and in order to solve a problem you have to understand the problem and the context – and that empowers the team to use their talent to work out the best way forward.” Rather than work to solutions designed by a separate software architect, engineering teams partner directly with product managers and business units to look at the problem in-depth, get involved in user research and design, before solidifying on a potential solution, which can be tested and prototyped to check how well it works.

“Software is always built by teams – by a team of engineers collaborating really closely,” says Spender, adding that “they’ll own not just the coding, but that it’s fully tested in an automated way, that it follows good engineering practices and test-driven development. They’ll own the development pipeline through which the code then goes into the various different environments. Then they’ll own deploying to live, then own running it once it’s there. DevOps is a real culture and a mindset at Tesco.”

This approach helps keep Tesco innovating and maintaining its competitive edge, but also makes the impact very tangible. “You’ve not just written some code and gone home at the end of the day,” Spender explains. “Because of the software development and information-technology operations [DevOps] approach that we have – you’re running and building, not just building – you have a sense that you’ve seen this all the way through to it being used by real customers. And then you can go home and be one of them!” Spender himself has come home from work, walked five minutes to his nearest store, and user-tested code his teams deployed that day as he put products through the till.

Requirements and rewards

Interestingly, while technical skills and expertise are important when recruiting software engineers, they’re not the be-all and end-all. “We don’t get too hung up about specific programming languages or frameworks or specific cloud environments,” says Spender. “Fundamentally, good engineers can adapt and learn and are polyglot in nature.” Instead, Spender looks more at how potential engineers might solve a challenge through code – the processes and thinking behind their choices – and at other core skills to do with leadership, empathy and collaboration. After all, while there may be robust debates within the team on technical approaches, there has to come a point when the team aligns.

Software engineering is a job with challenges, particularly when you’re working for a company with the size and reach of Tesco. However, there are rewards in terms of working flexibly and remotely and how easy it is to see your work in use. For Spender, the strength of software engineering at Tesco is the way it combines an innovative, start-up mentality with massive scale. “We’ve got a great environment and a great culture that allows us to do really good engineering, but the impact of that engineering is huge. It positively impacts tens of millions of people every day.”

Learn more about career opportunities at Tesco Technology

ITPro

ITPro is a global business technology website providing the latest news, analysis, and business insight for IT decision-makers. Whether it's cyber security, cloud computing, IT infrastructure, or business strategy, we aim to equip leaders with the data they need to make informed IT investments.

For regular updates delivered to your inbox and social feeds, be sure to sign up to our daily newsletter and follow on us LinkedIn and Twitter.