What Software Engineers Get Wrong About RAG
Why production RAG is as much a software architecture problem as an AI problem.
I’m a software engineer, architect and former university lecturer with more than 30 years of experience designing, building and teaching software systems.
I now apply that engineering perspective to LLM systems, RAG, agentic systems and computer vision—exploring how AI applications can move beyond impressive demos to become well-designed, reliable software systems.
Building a RAG demo is relatively straightforward. Building a RAG system that is reliable, maintainable and ready for real-world use is a very different engineering problem.
In this free 90-minute live session, we’ll look beyond the basic retrieve-and-generate pipeline and examine RAG from a software engineering perspective: where simple implementations begin to break down, what architectural decisions matter, and how to think about RAG as a production software system.
I am a software engineer, architect and educator with a PhD in Software Engineering and more than 30 years of experience spanning software development, enterprise architecture, university teaching, research and consulting.
Throughout my career, I have worked across object-oriented software development, distributed systems, enterprise integration, SOA, BPM, software architecture, design patterns, analytics and emerging technologies.
While the technologies have evolved, my engineering philosophy has remained consistent: build systems that are scalable, maintainable, reliable and designed to evolve.
Today, I apply that architecture-first approach to AI engineering, with a particular focus on LLM systems—including RAG and agentic systems—and computer vision, and on the engineering challenges involved in moving AI from prototype to production.
A growing collection of articles, architecture diagrams, notebooks, experiments and reference implementations exploring Retrieval-Augmented Generation as a software engineering discipline.
Exploring the engineering challenges involved in moving from AI prototypes to reliable systems—including architecture, evaluation, observability, security, scalability, maintainability and operational concerns.
Developing practical learning resources, live sessions and self-paced technical education for software engineers who want to build modern AI systems on strong software engineering foundations.
Architecture and design of complex software systems with an emphasis on scalability, maintainability, integration and architectural evolution.
Designing AI applications as engineered software systems, with attention to architecture, retrieval, evaluation, reliability, scalability and maintainability.
Experience designing enterprise integration solutions, orchestration and workflow systems, business rule engines, analytics platforms and distributed applications.
Former university lecturer with experience teaching software engineering and neural networks, supervising MSc research, and developing professional technical education.
C/C++ · Object-Oriented Systems · Software Quality
Middleware · Distributed Systems · Integration
Software Design · Patterns · Neural Networks · MSc Supervision
SOA · BPM · Analytics · Integration · Blockchain
LLM Systems · RAG · Agentic Systems · Computer Vision · Production AI
Why production RAG is as much a software architecture problem as an AI problem.
Understanding embeddings as an architectural capability rather than simply high-dimensional vectors.
How a computer vision model becomes a usable software system through preprocessing, inference, post-processing, evaluation, integration and deployment.
Retrieval, vector databases, evaluation, architecture, agentic systems, computer vision and production AI engineering.
Teaching has been an important part of my career. I spent eight years as a university lecturer and researcher in Software Engineering, teaching undergraduate and postgraduate students, supervising MSc dissertations, and conducting and publishing research in software design and software development management.
My teaching also included neural networks, giving me an early involvement with AI technologies long before today’s generative AI era.
Today, I bring that academic teaching experience together with practical software architecture and AI engineering to develop technical education for professional software engineers.
A practical engineering repository exploring how retrieval-augmented generation systems can be designed, evaluated and evolved as production software.
It brings together articles, Jupyter notebooks, architecture diagrams, code examples, exercises and reference implementations covering the engineering decisions behind reliable RAG systems.
# rag_pipeline.py
class RetrievalArchitecture:
def __init__(self, index, policy):
self.index = index
self.policy = policy
def retrieve(self, query):
# ranked, evaluated,
# and observable
return self.index.query(query)
AI applications may introduce new models, capabilities and uncertainties, but they still have to operate as software systems.
That means architecture matters. Interfaces matter. Data quality, evaluation, reliability, observability, maintainability, security and cost all matter.
How do we turn that capability into a system we can understand, evaluate, maintain and trust in production?
That perspective shapes the projects I build, the topics I write about and the way I teach AI engineering.
A short introduction to my background, what I’m working on today, and why I believe software engineering principles are essential to building reliable AI systems.
Watch the introduction · 2–3 minutesInterested in AI engineering, technical education or collaboration?
Whether you’d like to discuss an AI engineering project, attend a live session, explore training opportunities, or simply exchange ideas about building production-ready AI systems, I’d be happy to hear from you.