Tech Peeps Diaspora

Why Software Engineering Will Always Be More Than Just Code

Published · Conversation from · Watch the interview ↗

There is a line in this conversation that deserves a highlight. Talking about the years he spent applying for jobs abroad from Ghana, Liman describes his approach to learning whatever a role demanded: “So like React, I learned React over a weekend.”

Not over a semester. Not through a bootcamp. A weekend. Because there was a code challenge that needed it, and the job was on the other side.

That kind of urgency runs through the whole story of Liman Adamu Labaran, a Ghanaian senior software developer, that at the time of this conversation, worked at HelloFresh in Toronto. He has worked across four continents and, by his own count, poured about half of his engineering experience into three years in Berlin. Readers who have ever wondered what it actually takes to move from a local Accra startup to a head office in Europe will find a lot here. So will anyone quietly worried that AI is about to make their whole career redundant.

Four continents, same weather (until it wasn’t)

Liman spent close to six years working in Ghana before he left. The first jump surprised me, because it wasn’t to the usual diaspora destination. It was Kuala Lumpur.

“In Ghana, everything was relaxed,” he said, “it was professional, but you know, there’s a lot of things that we don’t do.” Malaysia offered a gentler on-ramp for a very practical reason: the climate. “The move was easier because same weather, the same kind of stack I was dealing with in Ghana.” His friends were heading to Germany, but he wasn’t ready for the cold. So Asia first, for a year, revamping an old e-commerce project into something Python-based with React and Vue.js. That, he notes, was his real introduction to React.

Then Germany, where he stayed three years and where, he estimates, “I think 50% of my experiences in software engineering happened.” He started at a mobility startup called Door2Door, then moved to HelloFresh in the Berlin head office. From there, Canada.

He and I never actually met in person, for the record. We connected the way a lot of us in the diaspora do, through a WhatsApp group of African developers. That is its own small story about how these networks quietly carry people across borders.

What a senior role actually changes (and what it doesn’t)

I was curious about the promotion, because his title shifted from senior backend engineer in Berlin to senior software developer in Canada, and I wondered whether the work itself transformed. His answer was refreshingly grounded.

“I’m still a backend engineer,” he said. The title changed because it’s “just a Canadian role.” What changed was the surface area. In Berlin he was in a squad called CommsTech, handling communication technologies, SMS, email, push notifications, and shepherding customer data across HelloFresh’s many services, plus data engineering on the side with Airflow and Spark. In Toronto he owns just two services: translation and tax.

Do not mistake “two services” for small stakes. The translation service handles every market across brands in 18 countries. The tax service, meanwhile, collects taxes across the US and Canada. As Liman put it, it “brings a lot of revenue,” and the whole point is that HelloFresh does not pay those taxes out of pocket but “collect the taxes from the orders that are happening.” He summed up the shift neatly: “a smaller context but a bigger impact.”

The move also meant fewer meetings, fewer on-calls, and less tech hiring, largely because of the time zone gap with Berlin. It struck me how much of a senior role, in his telling, is defined by these logistical realities rather than by a grand change in the day-to-day.

Small aside: when I first landed in Berlin one winter, cooking was a genuine problem, and a friend recommended HelloFresh. The boxes were smooth, the recipes clear. So it was a slightly surreal pleasure to thank the person whose team helps keep that machine running.

Learning on live production, where mistakes cost millions

The hardest part of joining HelloFresh, Liman said, was not the culture. It was the sheer volume of things he had never done. Data engineering, Airflow, PySpark, EMR clusters, Kubernetes on real production rather than in a sandbox.

“HelloFresh does it big,” he said, with services deployed across 18-plus countries and “a whole lot of requests coming through.” The learning curve was steep and the pace unforgiving: “you have to ship code as fast as possible to tackle certain customer issues that come up every day.”

Canada added a fresh challenge on top: a new language. Most of the services there are in Golang, and he had only introductory Go coming in. Learning a new language “when you are coming in as a senior person” is its own particular pressure, he explained, because “you don’t have a skill set up in that language and you have to learn as quick as possible.”

And all of it, I pointed out, on live production rather than mock projects. His reply landed with quiet weight: “Any mistake that you do would cost a lot of millions lost in revenue."

"Am I supposed to be in here?”

I asked whether he ever hit that wall, the one where you wonder if you belong in the room at all. I have felt it. He has too, more than once.

Malaysia was one of those moments, building from scratch a system that had already been generating revenue, working with a CTO from Poland, navigating a team where “there was no straightforward way of doing stuff.” That is where the doubt crept in. “Am I supposed to be in here, you know?”

His answer to that doubt is something I keep thinking about. He leans on old victories. He and his colleagues from KNUST joke about it: “once we’re able to pass through KNUST or Tech, to be able to finish, um, you know, write an assembly language exams and we’re able to pass it, so we can do everything.” Past success as fuel for present fear. It is a simple trick, and clearly a durable one.

He wanted to teach chemistry

Here is the rewind that surprised me most. Liman never planned to be a software developer. He finished secondary school wanting to study chemistry and, eventually, to lecture in it.

His grades came in above the cutoff for chemistry, and his friends talked him into flipping his application: computer science first, chemistry second. He got computer science. “I decided to just give it a try,” he said, “and it happens that it’s, I think I like it now because, yeah, it has taken me places.”

The first year nearly put him off. C++ was “so abstract,” full of algorithms you memorized rather than understood. His description of exam strategy is one of the funniest and most honest things in the whole conversation: “You just chew it, you don’t need to understand it, you just pour it.” If they asked for a merge sort you hadn’t memorized, you poured whatever you had.

The turn came in second year, during an internship at Saboney Technologies, a lecturer’s software company in Kumasi that “everyone wanted to go there for internship.” Core Java, JavaBeans, entity persistence, “a whole lot of classes to just connect to a database. It was crazy.” But that was the moment, he said, that he and his colleagues “realized that, yeah, we could do something out of what we learned.”

From Accra startups to 100 applications a week

After national service and a stint as a teaching assistant, Liman moved to Accra and stacked up experience across a striking range of Ghanaian companies: a mobile startup, a transaction processing company, an NGO in Grameen Foundation, SMSGH, then Cellulant - leading support for Ecobank’s mobile banking, then Callens Solutions where he rose to a technical director role.

And then, in his own words, “I got tired of Ghana.” Not bitterly, but restlessly. “There’s a lot of things that I wanted to learn and I wanted to contribute to. I didn’t have that opportunity in Ghana.”

The gap between Ghanaian company work and the global market was real and technical. Testing, CI/CD, monitoring, observability, Kubernetes, Kafka: “a whole lot of stuff that we don’t do in our daily work as software developer in Ghana.” So he learned it under fire, mid-job-search. He learned Docker because code challenges expected containerized submissions. He learned unit, integration, end-to-end, and contract testing. He picked up professional Python because “I have to learn what the market demands.”

The volume is what stays with you. “I could tell you, like, 100 per week. Just keep applying.” His method for surviving that grind is worth writing on a wall: treat every interview as practice for the next one. “I go on an interview, then I’m learning from the interview for another one in case it doesn’t go well.” Lower the anxiety, he says, by refusing to believe any single interview will “break you.”

What interviewers are really looking for

Having sat on both sides of the table, Liman named the things beyond raw technical skill that actually move the needle. Communication, first: whether you can “explain those technical topics in a clear, like, sense,” and be straightforward rather than “beat about the bush.” And confidence, “how confident you are in giving that answer.” Get those right alongside the technical, and “you will be able to pass the interviews.”

Will AI take our jobs? He is not worried

I had to ask the question hanging over every developer group chat right now. Should we be scared of AI writing our code, and should students fear graduating into an empty job market?

His answer was firm and, I thought, genuinely reassuring. “Software engineering is beyond coding,” he said, more than once, like a thesis he has defended many times. AI-generated code often is not production level, and “it’s up to the developer to be able to scrutinize the code and adjust the code.”

He is no purist about it. He uses Copilot, iterates on what it produces, and even treats its output as a learning tool, reading through generations to understand the logic. But the job, he insists, lives in everything around the code: “there’s deployment, there’s code quality, there’s testing, code coverage, there’s alerting, there’s monitoring, there’s observability.” Scaling, data movement between services, database replication. None of that gets written by a prompt.

His verdict came with a sharp edge. “It will take the job for only the coders. So if you are just a coder, you just code, I think it will take your job.” But for an engineer who goes beyond coding, it is simply “a tool for us to be more efficient.”

Closing thought

What I take from Liman’s story is not the four continents, impressive as they are. It is the posture underneath the whole journey: a chemistry-hopeful who gave computer science “just a try,” then learned React over a weekend, learned Docker to pass a code challenge, learned Go as a senior because the services demanded it. The learning never stopped being the point.

For a guy who leaned on old exam victories to steady his nerves in unfamiliar rooms, he has built quite a collection of new ones.

You can connect with Liman on LinkedIn. He struck me as exactly the kind of person who will actually reply and actually help, and there are plenty of folks coming up behind him who could use that. The full conversation is in the linked video.

Enjoyed this profile?