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
Actions
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
Topics
Systems Thinking for Innovation
(This is a hands-on lab with limited capacity)
Systems Thinking encourages big-picture perspectives. Learn the basic techniques of being a Systems Thinker, with an emphasis on why the discipline is helpful for innovation.
This very practical workshop presents a number of hands-on scenarios for attendees to apply Systems Thinking to arrive at more innovative solutions. We review why Systems Thinking helps to reframe problems as opportunities.
We will also explore how to use a Systems Thinking lens to avoid complexity. Attendees will work in groups to create a checklist of ways to identify unnecessary complexity, from reviewing the big picture to looking for leverage points.
Systems Thinking
Systems thinking is the macro behaviour that we must understand in analyzing our world. A system always produces what it is designed to do, even if that isn't at all what we meant it to do!
Systems are self-maintaining, and contain balancing and/or reinforcing feedback loops.
We'll look at how these work, and what happens when they fail. We'll apply systems thinking to team behaviour to show how systems are all around us.
Remote Pairing
Remote Pairing is a fabulous combination of remote development with high people engagement and collaboration.
In this live demo we will take you through a variety of pairing tools, and talk about the challenges and successes of remote pairing in each tool.
Pairing solves many of the issues inherent in solo development. These include siloed development, lack of domain knowledge, poor mentoring and insufficient upfront design. Pairing adds collaboration, knowledge sharing, real-time code review and improved design.
We are going to role-play various dysfunctions with commonly used pairing tools as well as present our favourite tools and better ways of working.
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.
Legacy Refactoring
Let's talk about legacy code and why "legacy" has become a synonym for "bad". And how we change that!
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
Abstract:
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 2024 Sessionize Event
Domain-Driven Design Europe 2023 Sessionize Event
JetBrains .NET Days Online 2021 Sessionize Event
Regional Scrum Gathering® Cape Town 2021 Sessionize Event
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top