In any big organisation there are a number of applications that have been running in production for many years but still need maintaining. Sometimes those systems are in limp home mode and we can only make small changes to help them across the finish line. This is not a very appealing scenario to an engineer with a can-fix attitude, but there are still many benefits to getting involved in troubleshooting live issues.
I used to think that greenfield projects and new features are the most important areas that would give me opportunities for learning, but I have realised looking back at my experience that digging into code that I had not written or from a project I was not part of has given me many benefits: confidence in stepping into the unknown, a better understanding of systems that seemed to be a black box and also the ability to predict possible pitfalls when implementing new systems and prevent failures!
In this talk I would like to share the steps I went through when I could no longer avoid diving into the unknown, some anecdotes of things I’ve learnt and how I have been trying to get my team excited about sharing the brunt of helping production systems continue running.
Getting excited about maintaining
Blanca Garcia Gil
Principal Systems Engineer, BBC
Different flavours of legacy
Turns out I’m not the only one excited
Legacy provides an opportunity for learning
The legacy landscape
Legacy code has been part
of every job I’ve had
A recent personal story…
Joined a team at the BBC where there
had been a high churn
Old version of Apache Spark, running
on an old version of AWS EMR.
Code hard to understand, nearly no
Made a few changes to it, but feared
we were introducing further problems
System was in “limp home mode”
until its replacement came.
How we approached this
Facing the unknown
-Positive attitude, use appropriate words to describe without taking it
down every time.
- See it as valuable work
- Don’t criticize people!
- Engage your curiosity: think of it as a learning opportunity
- Maintaining systems helps us learn if the assumptions made became
true or not, so it is a way to close the feedback loop
Changing our mindset
as a starting point
constraints, is the key to
creativity and fun.”
- Ian Bogost
- Use it as a time to understand assumptions and constraints previous
developers worked under, also their biases
- Reading other people’s code is a skill to develop too!
- Share learnings: take others on the journey with you. Take the time to
explain why certain solution was ok or not.
- Observing vs reacting
“Fun is the aftermath of
deliberately manipulating a
familiar situation in a new
- Ian Bogost.
- Get support and support those working on it with you, it is a team
- Check in with each other!
- Create an atmosphere where there are no stupid questions
- If things are not working for you, discuss and try to find a balance
How this story ends
- Deprecated system in February 2019
- Onboarded more people to the team working on the new system,
applied lessons learnt
What you can do to prevent future
- Document decisions
- Document limitations of the system
- Tests as living documentation