About Me
Senior Software Engineer & Founder building clean, scalable products across web, mobile, and AI. With 8+ years of experience, I've delivered 30+ projects for 16 clients across 8 countries — turning ideas into products people actually use.
My aim is to collaborate with ambitious, forward-thinking individuals to solve everyday problems through technology.
What I do!
Startups
I build products from zero to launch — ideation, architecture, deployment, and growth.
AI Engineering
Building AI-powered platforms with LLMs to solve real-world problems.
Software Engineering
8+ years across frontend, backend, testing, and deployment.
App Development
High-performance mobile apps shipped to the App Store and Google Play.
Resume
Experience
Co-founder & CEO
FRSTDAY Ltd
Co-founded an AI-powered hiring platform reimagining technical recruitment. Building intelligent interview simulation and automated assessment tools that help companies evaluate talent faster, more fairly and more accurately.
Founder & CEO
Bubbl Solutions
Founded and lead an EdTech platform helping students excel in local and international exams. Built it from the ground up — an extensive study library, AI-powered explanations, collaborative study rooms and CBT simulation — making exam prep smarter across Africa.
Lead Frontend Engineer
ENODA, UK
Leading frontend across a suite of grid monitoring and management apps for a UK energy-tech company working on electrical grid stability. I architect scalable interfaces on a modern monorepo stack, set frontend engineering standards, and contribute to the backend behind it.
Senior Software Engineer
Distributed Research Technology, UK
Keywords: Mobile, React Native, NextJS, React, NodeJS, AWS, API, FinTech, Web3, Bank etc.
Built a dual-purpose fintech app in React Native (Expo) handling both traditional payments and crypto wallet operations. Architected the AWS Amplify backend — GraphQL, Lambda and API Gateway endpoints fronting Cognito, DynamoDB and S3 for secure, scalable serverless delivery.
Senior Frontend Engineer
Bankable, London, UK
Keywords: React, NextJS, NodeJS, NestJS, AWS, B2B, SAAS, FinTech, API, PostgreSQL, Bank etc.
Led the frontend team on a data-intensive B2B platform, delivering responsive micro-frontend React interfaces that lifted user engagement by 30%. Also shipped NestJS REST APIs, drove Jest and Cypress coverage with GitLab CI/CD, and mentored junior developers.
Software Engineer
Ace Studio Tech, USA
Keywords: React, NextJS, React Native, Python, Django, AWS, API, Dashboards, Charts
Built a full-stack CRM and internal tooling with React (Next.js), React Native (Expo) and a Django API, cutting reliance on third-party software by 95%. Containerised with Docker and automated deployment to Vercel, the App Stores and AWS via Jenkins.
Education
MSc Computer Science
University of Sunderland, UK
BEng Chemical Engineering
University of Benin, Nigeria
Working Skills
Programming Languages
JavaScript / TypeScript, Python & Golang.
Problem Solving
Algorithm design, debugging, data structures, system design.
AI Engineering
RAG, LLMs, pipelines, orchestration, LangChain, vector databases, fine-tuning.
Soft Skills
Technical leadership, mentoring, cross-functional collaboration, stakeholder communication, product thinking, ownership.
Frameworks
React, Next.js, React Native, ElectronJS, Node.js, NestJS, Django, DRF, ExpressJS, GraphQL, Gin Gonic etc.
Databases
MongoDB, PostgreSQL, MySQL, Firebase etc.
Testing
Jest, React Testing Library, Enzyme, Cypress, Playwright.
Infrastructure
Docker, AWS (Lambda, EC2, S3, RDS, DynamoDB etc.), Vercel.
Portfolio
- All
- Live
- Testing
- Development
FRSTDAY
Project : AI-Powered Technical Hiring Platform
Role : Co-founder & CEO
Status : Testing
Link : home.frstday.com
FRSTDAY is reimagining how companies hire technical talent. Traditional hiring is slow, biased and inconsistent — FRSTDAY solves this with AI-driven interview simulation and automated assessment.
The platform generates tailored coding challenges on demand, provisions live cloud development environments for candidates to solve them in any programming language, and uses AI to evaluate submissions on correctness, code quality and problem-solving approach. From frontend challenges and DSA problems to full-stack builds, FRSTDAY delivers fair, fast and objective candidate evaluation.
What I built
- AI task generation engine producing custom coding assessments with weighted rubrics and hidden test cases
- Cloud-based code execution supporting any language, with automated test running and performance analysis
- Intelligent review system that scores submissions and surfaces insights for hiring teams
- End-to-end assessment lifecycle — from candidate invitation to AI-powered evaluation
Bubbl Quiz
Project : AI-Powered Exam Preparation Platform
Role : Founder & CEO
Status : Live
Link : withbubbl.com
Bubbl Quiz is an EdTech platform built to help students across Africa excel in local and international examinations. It transforms exam preparation by combining an extensive study library with AI-powered learning tools and collaborative features — all in one mobile app.
Students access detailed explanations, complete syllabus mapping and topic breakdowns spanning decades of examination content, all available offline. The platform's AI assistant analyses study notes against official syllabi, while collaborative study rooms, real-time leaderboards and authentic CBT simulation make learning engaging and effective.
What I built
- Cross-platform mobile app (React Native / Expo) shipped to the App Store and Google Play
- AI-powered question generation and detailed explanation engine using LLMs
- Offline-first architecture optimised for regions with limited connectivity
- Real-time collaborative study rooms, leaderboards and gamified CBT practice
- Token-based monetisation system with integrated payment processing
ManyPlates
Project : Artisanal Bulk Food Marketplace
Role : Founder & CEO
Status : Development
Link : manyplates.app
ManyPlates is a food marketplace that connects people with independent, verified chefs for bespoke bulk meals — perfect for weekly meal prep or special events. Instead of generic recipes, customers order authentic dishes cooked exactly to their taste, from smoky Nigerian Jollof to Caribbean Jerk Chicken, by the litre, kilogram or platter.
The platform bridges home cooks and culinary masters, letting customers personalise every order — spice levels, ingredient swaps and specific flavour profiles — while chefs manage bulk orders and grow their independent businesses. With verified chefs, direct customer-to-chef messaging and a premium mobile experience, ManyPlates delivers restaurant-quality dining at home prices.
What I built
- Two-sided marketplace connecting customers with vetted independent chefs
- Bespoke ordering system with custom notes for spice levels, ingredient swaps and dietary needs
- Volume-based ordering (litre, kg, platter, pax) for cost-effective bulk meal prep and events
- Native mobile apps (iOS & Android) with chef preparation Stories and order tracking
- Chef vetting, ratings and reviews system for trust and quality assurance
- Cuisine discovery across West African, Caribbean, Asian Fusion and Mediterranean menus
- Weekly meal plan management and subscription options
Altec Solutions
Project : All-in-One Business Management CRM
Role : Founding Engineer
Status : Live
Link : home.altecsolutions.com
Altec Solutions is a comprehensive CRM platform built to help businesses manage jobs, projects and workforce operations from a single place. Designed for teams that juggle multiple projects and field workers, Altec streamlines everything from time tracking and order management to team communication and analytics — so businesses can focus on growth rather than admin.
The platform spans a powerful web dashboard, native mobile apps for on-the-go management, and a full API for integrations. From project scheduling and worker call sheets to advanced sales reporting and file collaboration, Altec brings scattered workflows into one seamless system.
What I built
- Full-stack CRM with a customisable admin dashboard for managing projects, jobs and teams
- Cross-platform mobile apps (iOS & Android) for real-time, on-the-go management
- Time tracking, order management and call sheet systems for organised operations
- Email integration and file sharing for centralised team communication
- Advanced analytics engine for data-driven decision-making
- Tiered subscription model with API access and custom workflows for enterprise clients
- RESTful API and integration layer to connect with external tools and platforms
Blogs

The Rise of AI-Native Applications
Why building software "AI-first" is quietly rewriting the rules every engineer learned
For most of the last decade, adding "intelligence" to an app meant bolting a machine learning model onto the side of something that already worked. You had a product, and somewhere in it sat a recommendation engine or a spam filter doing its narrow job. The AI was a feature. The app was the app.
That order has flipped. A new class of software is being built where the language model isn't a feature sitting inside the product — it is the product's core reasoning layer. These are AI-native applications, and building one requires unlearning a surprising amount of what made us good engineers in the first place.
What "AI-native" actually means
An AI-native application is one whose primary logic is delegated to a model rather than hardcoded by a developer. Instead of writing an exhaustive set of rules to handle every case, you describe the goal, hand the model the right context, and let it decide.
Consider the difference. A traditional app that sorts support tickets might have two hundred if statements mapping keywords to categories. An AI-native version hands the ticket to a model with a description of your categories and lets it reason about where it belongs — including cases nobody wrote a rule for.
The shift sounds small. It isn't. It changes how you architect, how you test, how you handle failure, and how you think about cost.
The architecture nobody trained us for
Traditional software is deterministic. The same input produces the same output, every time. Our entire toolkit — unit tests, type systems, debuggers — assumes this. When something breaks, we trace a clear path from cause to effect.
AI-native systems are probabilistic. The same prompt can return slightly different answers. A model that classified a ticket correctly a thousand times might get the thousand-and-first wrong for no traceable reason. This isn't a bug you can fix; it's a property you must design around.
The patterns that emerge look different from anything in a classic backend:
Orchestration over implementation. You spend less time writing logic and more time deciding which model handles which step, how they hand off, and what context each one needs. The skill becomes conducting rather than composing.
Retrieval as a first-class concern. Models only know what you show them. Pulling relevant documents into the model's context at request time becomes central architecture, not an afterthought. Your database's job is increasingly to feed the model the right slice of reality.
Validation at the boundary. Since you can't trust output to be well-formed, you validate everything the model returns before it touches the rest of your system. Structured outputs, schema enforcement, and retry loops become standard plumbing.
Testing the untestable
Here's where seasoned engineers get uncomfortable. How do you write a test for a function whose correct answer is "usually right, in a way that's hard to specify"?
You don't test it the old way. You move from assertion to evaluation. Instead of assert output == expected, you build evaluation suites that score responses across many examples and track whether performance improves or degrades as you change prompts, models, or context.
This feels alien to anyone who came up on red-green-refactor. But it's closer to how you'd evaluate a human employee than how you'd verify a pure function — and that analogy is more useful than it first appears.
The cost dimension
Traditional software has near-zero marginal cost. Once written, running your sort function a million more times costs almost nothing. AI-native software breaks this completely. Every model call costs money, measured in tokens, and those costs scale directly with usage.
This drags an economic dimension into engineering decisions that used to be purely technical. Should this step use your most capable model or a cheaper one? Can you cache the parts of your prompt that never change? Is it worth the latency of a second call to catch the errors of the first?
Engineers who ignore this ship features that work beautifully in a demo and become financially ruinous at scale. The ones who thrive treat cost as a design constraint from the first line of code.
What this means for engineers who learned the old way
If you built your career on deterministic systems, none of your skills are wasted — but their center of gravity shifts. The engineers doing well tend to share a few traits: they're comfortable with uncertainty, they think in terms of context and information flow, and they hold onto their old rigor precisely where it still matters — at the boundaries, validating outputs, controlling cost, keeping the deterministic scaffolding around the probabilistic core solid.
The temptation is to treat AI as magic and stop engineering. The opposite is true. AI-native applications need more engineering discipline, not less — just aimed at different targets.
The quiet rewrite
We're early. The patterns are still forming, the tooling is immature, and best practices change monthly. But the direction is clear: an increasing share of software will have a model at its core rather than at its edge.
The engineers who recognize this as an architectural shift — not just a new library to import — are the ones building products that will feel obvious in five years and impossible today. The rest are bolting intelligence onto the side of apps, wondering why it never quite fits.
The app used to be the app, and the AI was a feature. Increasingly, it's the other way around. Learning to build for that inversion is the defining engineering skill of this decade.

From Engineer to Founder
The uncomfortable transition from writing clean code to making decisions no compiler can check
There's a specific kind of silence that hits the first time you realize no one is going to review your pull request. Not because the code is perfect — because the decision you just made wasn't about code at all, and there's no senior engineer to approve it, no test suite to tell you if you got it right. You made a call about pricing, or hiring, or which feature to kill, and the only feedback loop is the market, months from now.
Welcome to being a founder. Your best engineering instincts got you here, and some of them are about to work against you.
The trap of solvable problems
Engineers are trained to love well-defined problems. A bug has a cause. A failing test has a fix. A slow query has an index waiting to be added. The work is hard, but the shape of "done" is always visible.
Startups don't offer this. Most of the important questions have no correct answer, only trade-offs — and worse, you often can't tell if you chose well until it's too late to change course cheaply. Should you charge more and serve fewer customers, or less and scale on volume? Should you build the feature three users are begging for, or the one you suspect a thousand silent users need?
The engineering brain wants to solve these. It wants to gather enough data, find the optimal answer, and ship it. But there's no optimal answer, and the data you'd need doesn't exist yet. Founders who stay in engineering mode freeze here — endlessly researching, prototyping, and refining a decision that just needed to be made, imperfectly, weeks ago.
Perfect code, dead company
The instinct that betrays technical founders most reliably is the pursuit of quality for its own sake.
You know how to build things properly. You've felt the pain of technical debt, the 2 a.m. incident caused by a shortcut someone took to hit a deadline. So you build the authentication system to scale to a million users. You set up the CI pipeline, the monitoring, the clean abstractions. It's genuinely good work.
It's also, frequently, a form of hiding. Polishing a codebase is comfortable and measurable in a way that talking to skeptical customers is not. Every hour spent refactoring a system that eleven people use is an hour not spent discovering whether anyone wants the product at all.
The uncomfortable truth is that early-stage startups usually die from lack of customers, not lack of code quality. The scrappy competitor shipping duct-taped features and talking to users every day will often beat the elegant architecture serving no one. Your engineering standards, which are a genuine asset later, are a liability when they let you avoid the terrifying, unstructured work of building a business.
Learning to ship decisions like you ship code
The reframe that helps most is treating decisions the way you already treat deployments.
You don't wait for a feature to be perfect before shipping it. You ship something reasonable, watch how it behaves in production, and iterate. Business decisions work the same way. You don't need the perfect pricing model — you need a defensible one you can launch, measure, and adjust. You don't need certainty that a feature will land — you need a cheap way to test the bet and kill it fast if you're wrong.
Founders who make this shift stop asking "what's the right answer?" and start asking "what's the cheapest way to find out?" That single question turns paralyzing decisions into experiments, and experiments are something engineers already know how to run.
The skills that transfer (and the ones that don't)
Not everything inverts. Plenty of what made you a good engineer makes you a good founder:
Systems thinking transfers directly. A company is a system with inputs, bottlenecks, and feedback loops. The instinct to find the constraint and fix it works as well on a sales funnel as on a slow endpoint.
Debugging transfers. The discipline of forming a hypothesis, testing it, and following evidence rather than assumptions is exactly how you diagnose why customers churn or why a launch flopped.
Estimation does not transfer cleanly. You can estimate a two-week feature. You cannot estimate how long it takes to find product-market fit, and pretending you can leads to burned runway and broken morale.
Your standards need a dial, not a switch. The hardest adjustment is realizing "good enough" is a moving target that depends entirely on stage. What's negligent for a bank's payment system is over-engineering for a product testing whether anyone will pay at all.
The loneliness of the last reviewer
The deepest shift is psychological. As an engineer, you were part of a system designed to catch your mistakes — code review, QA, staging environments, teammates who'd flag a bad idea before it shipped. That safety net is a real comfort, and you don't notice how much you leaned on it until it's gone.
As a founder, you are the last reviewer. The decisions that matter most are the ones only you can make, and no one is going to approve them before they go live. This is genuinely uncomfortable, and no amount of technical skill prepares you for it. You learn to sit with uncertainty, to make the call, to own the outcome — and to do it again tomorrow.
Becoming both
The goal isn't to stop being an engineer. Your technical judgment is a moat most founders don't have — you can build what others have to raise money to hire for, you can smell a bad architectural decision that would sink a competitor, and you can move fast because you're not lost in translation between vision and implementation.
The goal is to become someone who can hold both modes at once. To write clean code when clean code is what the moment needs, and to ship something ugly and fast when speed is what will keep the company alive. To know the difference. That judgment — knowing which hat the situation calls for — is the actual job.
The compiler can't check it. The market can, eventually. And learning to live in that gap, between the decision and the feedback, is what turns an engineer into a founder.

The Real Cost of "Just Use AI"
A practical look at what happens to your margins when every feature calls a model
Someone in a meeting says "we should just use AI for that." Everyone nods. It sounds free — the model already exists, the API is one HTTP call away, and the demo you built over the weekend worked flawlessly. Three months later you're staring at a bill that grows in lockstep with the users you fought so hard to acquire, wondering why success suddenly feels like a liability.
This is the part of AI engineering nobody demos. The magic is real, but so is the meter running behind it. Understanding that meter — before you scale, not after — is the difference between an AI feature that funds your company and one that quietly bleeds it.
Tokens are the unit of everything
Every interaction with a language model is billed in tokens. A token is roughly three-quarters of a word — so a hundred words costs you somewhere around 130 tokens. You pay for what you send (input) and what you get back (output), and crucially, output almost always costs several times more than input.
That asymmetry matters more than people expect. A feature that sends a short prompt and receives a long response has a very different cost profile from one that sends a huge document and gets back a single word. When you're estimating what something will cost at scale, you can't just count "requests" — you have to count tokens, and you have to count input and output separately.
Here's the pattern that catches teams off guard: the cost is invisible during development. You test with ten requests. Ten requests cost a fraction of a cent. Everything feels free. Then you launch, ten requests become ten million, and the fraction of a cent becomes a number that shows up in board meetings.
Not all models cost the same — by a lot
The single biggest lever on your AI costs is which model you reach for, and the spread between the cheapest and most capable models is enormous — often more than an order of magnitude per token.
The instinct is to always use the best model. It gives the best answers, so why compromise? Because most tasks don't need the best model. Classifying a support ticket, extracting a date from a sentence, summarizing a paragraph, checking whether text is on-topic — these are handled perfectly well by a fast, cheap model. Reserving your most expensive model for the genuinely hard reasoning, and routing everything else to a cheaper one, can cut your bill by ninety percent without users noticing any drop in quality.
This is the first discipline: match the model to the difficulty of the task, not to your desire to use the shiniest thing available. A tiered approach — cheap model by default, expensive model only when the task demands it — is how you keep quality high and cost sane at the same time.
The techniques that actually move the needle
Beyond model choice, a handful of practical techniques reliably lower cost:
Prompt caching. Most applications send the same instructions on every request — the same system prompt, the same context, the same examples. Caching lets you pay full price for that shared prefix once and a steep discount on every subsequent call. If your prompts have a large, stable portion, this alone can be a dramatic saving.
Trim your context. Models charge for every token you send, including the ones that don't help. Dumping an entire document into a prompt when the model only needs two relevant paragraphs is paying to send noise. Retrieving and sending only the relevant slice cuts input costs directly.
Cap your output. Output is the expensive half. Setting a sensible maximum on how much the model can generate prevents runaway responses and keeps costs predictable. If you need ten questions, ask for ten — don't leave the door open for fifty.
Batch where latency allows. If you're processing things that don't need an instant answer — generating content overnight, enriching a database — batching many items together is often cheaper than firing off individual real-time requests.
Building the cost into the product, not around it
The teams that get this right don't treat cost as an afterthought to optimize once the bill hurts. They design for it from the start, and it shapes the product itself.
Sometimes that means a generous free tier backed by a cheap model, with the expensive model gated behind a paid plan. Sometimes it means giving users a fixed budget of AI actions per month rather than unlimited access. Sometimes it means being honest that a feature is too expensive to offer for free and pricing it accordingly. These aren't compromises on the vision — they're the difference between a vision that survives contact with real usage and one that collapses under it.
The mental model that helps: know your cost per action, and know what you charge for it. If a single AI-powered action costs you a couple of cents and you're giving it away to hundreds of thousands of users, that's not a growth strategy, it's a countdown. If that same action costs a couple of cents and sits inside a plan someone pays real money for, you have a business.
The math you should do before you build
Before committing to an AI feature, run a rough calculation that most teams skip:
Estimate the tokens a typical request consumes, input and output separately. Multiply by the per-token price of the model you plan to use. That gives you the cost of a single action. Now multiply by the number of times you expect it to happen per month at the scale you're aiming for. Compare that number to the revenue those users generate.
If the AI cost is a small fraction of the revenue, you have room to breathe. If it's a large fraction, you have a design problem to solve now — cheaper model, caching, tighter context, a paywall — while it's still a spreadsheet and not a crisis. Ten minutes of arithmetic before you build can save you a very uncomfortable conversation later.
"Just use AI" is a beginning, not an answer
There's nothing wrong with reaching for AI to solve a problem — it's genuinely the right tool for an expanding range of jobs. The mistake is treating "use AI" as the end of the engineering conversation rather than the start of it.
The real work begins after that decision: which model, cached how, fed what context, capped at what length, priced into which plan. That's not bureaucracy slowing down the magic. That's the engineering that turns an impressive demo into a feature you can actually afford to ship to everyone who wants it.
The model is powerful, cheap per call, and available to anyone. Which is exactly why knowing how to wield it economically — not just technically — is becoming one of the more valuable skills an engineer can have.

Frontend Is Backend Now
How the line dissolved, and why "frontend developer" undersells what UI engineers actually do
There's an old org chart, still hanging in a lot of people's heads, that splits web development neatly in two. On one side, the backend engineers: databases, business logic, the serious infrastructure. On the other, the frontend developers: styling buttons, wrangling CSS, making things look nice. The implication was never subtle. One side built the engine; the other painted the car.
That chart is now fiction. The work a modern frontend engineer does spans so much of what used to be "backend" that the label has become almost misleading. If you still picture frontend as HTML and CSS with a sprinkle of interactivity, you're describing a job that largely stopped existing years ago.
Where the line used to be
The old division made sense because of a hard technical boundary: the network. Backend code ran on the server, close to the database, trusted and powerful. Frontend code ran in the browser, on the user's machine, limited and untrusted. The two talked through a narrow pipe of API calls, and the split in responsibilities followed the split in environments.
For a while this held. The server rendered pages or served data; the browser displayed them. You could have a productive career on either side and rarely think hard about the other.
Then the environments started bleeding into each other, and the boundary that justified the whole division quietly dissolved.
The bleed
Several shifts happened at once, and together they erased the clean line.
Rendering moved back to the server — but stayed the frontend team's job. Modern frameworks blurred where UI code actually runs. A single component might execute on the server, fetch data directly, and send finished HTML to the browser, then hydrate into something interactive. The frontend engineer is now writing code that runs server-side, touching data sources directly, making decisions that used to belong squarely to the backend — all while it's still, unmistakably, frontend work.
The edge became a place to run logic. Functions now run in data centers close to users, intercepting requests, transforming responses, handling authentication, reshaping data before it ever reaches a page. This is backend logic by any honest definition, and increasingly it lives in the frontend codebase, owned by the people who used to just style the results.
State management became distributed systems in miniature. Keeping the browser's view of the world in sync with the server's is, fundamentally, a distributed systems problem — caching, invalidation, optimistic updates, conflict resolution, eventual consistency. Frontend engineers now reason about these daily. The vocabulary that used to belong to backend architecture is now standard frontend concern.
The "backend for frontend" pattern formalized the overlap. Teams started building dedicated backend layers whose only job is to serve their specific frontend — aggregating data, reshaping it, handling the awkward gap between what the UI needs and what the core services provide. Often the frontend team owns this layer entirely. It is, definitionally, backend code written by frontend engineers for frontend reasons.
What a "frontend" engineer actually does now
Strip away the label and look at the actual surface area of the role. A capable frontend engineer today reasons about data fetching strategies and caching layers, makes architectural decisions about what renders where and why, handles authentication flows and secure token management, optimizes performance across the entire request lifecycle rather than just the visual layer, and designs the contracts between systems rather than just consuming them.
They also, still, make things look good and feel right — and this half is harder than the org chart ever gave it credit for. The interaction design, the accessibility, the performance perception, the handling of every awkward state a real user can land in: these are deep engineering problems that happen to have a visual output. "Making it nice" was always doing more work than the word "nice" suggested.
Put the two halves together and you have someone doing full-stack work under a half-stack name.
Why the label persists anyway
If the reality has changed this much, why does "frontend developer" survive as a category? Partly inertia — job titles lag reality by years. Partly hiring convenience — companies still like to sort candidates into bins. And partly because the visual, user-facing half of the work is the most legible to non-engineers, so it becomes the label even when it's a shrinking fraction of the actual job.
The cost of the outdated label is real, though. It undervalues the engineers doing this work, both in how they're compensated and in how much architectural trust they're given. It also misleads people entering the field, who imagine frontend as a gentler on-ramp and are startled to find distributed systems problems waiting behind the CSS.
What this means if you're building a career
The practical takeaway isn't that "frontend" and "backend" are meaningless — specialization still exists, and someone who lives in database internals is doing genuinely different work from someone who lives in interaction design. The takeaway is that the boundary between them is now a gradient, not a wall, and the most valuable engineers are comfortable operating across it.
If you came up as a frontend engineer, you probably know more backend than your title admits — lean into it, name it, and don't let the label cap what you're trusted to build. If you came up as a backend engineer, the frontend is no longer a place you can safely dismiss as "just the UI"; real architecture lives there now, and ignoring it means ceding decisions that affect your whole system.
The engineers who thrive are the ones who stopped defending the border and started treating the whole request lifecycle — from a click in the browser to a row in the database and back — as one continuous thing they're responsible for.
One system, one responsibility
The cleanest way to think about it: there was never really a frontend and a backend. There was always just a system that takes a user's intent and turns it into a result, running across whatever machines happen to be involved. We split it into two jobs because the technology of the time forced a hard boundary at the network.
That boundary has softened into a gradient, and the jobs are flowing back together. The title "frontend developer" describes where you sit in an org chart drawn a decade ago. It says increasingly little about what you actually do — which is, more and more, everything.
contact
© 2026 All Rights Reserved.







