Lorraine Steyn

Lorraine Steyn

Simplifier-in-chief - driven to find better ways of producing code, and then teaching the next generation of developers all our hard-won lessons!

Cape Town, South Africa

Lorraine founded the software development company Khanyisa Real Systems (KRS) in 1987. The company now employs around 60 technical staff, and has delivered large bespoke projects for hundreds of clients. Lorraine is a hands-on CEO who spends 3-4 days a week working on production code with her teams, mentoring, assisting with design, and driving quality and learning.

Lorraine has presented on such varied topics as Domain-Driven-Design, compassionate leadership, clean code and refactoring, women in tech, and many Agile topics dear to her heart (often based in XP practices).

Area of Expertise

  • Information & Communications Technology


  • Scrum
  • Scrum & Agile
  • Agile software development
  • Agile Leadership
  • Extreme Programming
  • Domain Driven Design
  • DDD
  • Women in Tech
  • systems thinking
  • XP
  • Software Development

The Compassionate Manifesto

Given all that is going on these days and the intense level of uncertainty in our world, many people are understandably feeling scared, angry, sad, and more. One of the best things we can do to address this and support everyone around us, including ourselves, is to lead with compassion.

The Right Choice is Always People over Process.

This talk will cover important aspects of team health, and is based on our own teams' experiences through lockdown, isolation, and intense work pressure from clients.

The advantages of Pairing

This talk covers how to Pair Program, what benefits you can expect from adopting this as a 100% committed activity, and what you'll need to overcome.

I've always been a fan of the XP practices of Pairing and TDD, but recently I’ve moved from intellectually believing that pairing was a good idea, to a deep connection with the behaviour it encourages and the outcomes that it produces.

Working as a pair encourages micro design, method by method, test by test. Do we really need that public variable, how can we better encapsulate that concept, is this piece of code not similar to the piece written yesterday? You share knowledge, experience and thinking to produce code that's an order of magnitude better than working solo. Big win!

A conversational explanation of the topic from a developer's point of view is covered in my blog: https://beingrealblog.wordpress.com/2018/03/29/impressed-with-pair-programming/

Systems Thinking and the Art of Simplification

If all models are wrong, but some are useful, what makes for a good model?

We will look at modelling from a Systems Thinking perspective, with a particular focus on the art of simplification.

Einstein said “Everything should be made as simple as possible, but no simpler.” In modelling terms, we are looking for techniques to help tame complexity.

Sometimes, to find the nub of the issue, other times to find new ways of looking at your system.

This is an interactive session, with brain teasers and puzzles used to challenge people's thinking.

Pairing and Ensembles in a Remote world

More than 80% of developers work remotely. Encouraging pairing and ensemble development is critical for collaborative design, mentoring and skills transfer, and lowering error rates.

In this talk, we'll show how Remote Pairing is a fabulous combination of remote development with high people engagement and collaboration. We'll demonstrate the strengths of various remote pairing tools, and talk about the challenges and successes of remote pairing.

Whether you are new to Pairing, or a long-time fan, we have tons of suggestions for how to make the most of Remote Pairing and Ensemble work.

Legacy Refactoring Strategies

(This is a hands-on lab with limited capacity)

There is an almost inevitable slide into complexity that happens to projects. As legacy code is more ubiquitous than green fields development, this is an area that deserves more of our attention.

Legacy systems represent huge value to the business, and the ideal situation is to be able to turn around a system that has degenerated into the Big Ball of Mud.

We have techniques for handling legacy projects that have been proven in many consulting projects over many years. These techniques include DDD, as well as a way of looking for key leverage points and the blockers that are slowing everyone down.

This workshop will present the 3 tier strategy we have employed to rescue many legacy projects, and will give attendees an opportunity to talk about their own legacy issues. We will encourage the sharing of ideas in groups, as well as bring our +60 years of experience to bear by participating in the groups and seeding ideas that they can consider.

The outcome of the workshop is to present our 3 tier strategy for dealing with legacy projects and give attendees the confidence to try the techniques with their own legacy projects.

What is stopping us? A legacy code question

This is about Legacy code. About how software becomes complex and hard to maintain over time. We all know of code bases like that, but do we understand what is stopping our teams from improving the code?

In my work on many systems over a 4 decade-long career, I’ve found that very often, there are blockers that are actively getting in the way. Finding the blockers includes addressing low trust working environments and the fear of making mistakes, traveling deep into the architecture of the code (with the benefit of hindsight), and looking at the infrastructure, tools and skills available to the team.

This talk will focus on systemic issues in Legacy systems, and how reframing the problem with a Systems Thinking lens can show us how the systems are getting in the way of letting good people do good work.

We will look at strategies for dealing with system issues, and try to face the truth of why, over time, all code bases tend towards the unmaintainable big ball of mud.

I always believe that developers want to do a good job, and if they’re being ground down and unable to fix the code, we should look for reasons beyond blaming the developers.

Applying Systems Thinking in Teams

This workshop goes beyond the definitions of Systems Thinking, to look at how we can apply the concepts in our teams, on projects, and across organizations.

Systems Thinking offers us the hope that we can look at our problems through a systems lens, and fix the systems that cause and perpetuate our problems rather than blaming the people who suffer under the systems. As W. Edwards Deming said "a bad system will beat a good person every time".

We'll work through case studies together, and share experiences. We'll explore techniques to help the attendees focus their system lenses, and see what lies under the surface of various team dysfunctions. There will be space to discuss questions and share ideas in this very interactive session.

Domain-Driven Design Europe 2023

June 2023 Amsterdam, The Netherlands

JetBrains .NET Days Online 2021

May 2021

Lorraine Steyn

Simplifier-in-chief - driven to find better ways of producing code, and then teaching the next generation of developers all our hard-won lessons!

Cape Town, South Africa