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!
13. 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
15. “Operating under
constraints, is the key to
creativity and fun.”
- Ian Bogost
https://ideas-ted-com.cdn.ampproject.org/c/s/ideas.ted.com/want-to-be-
less-distracted-try-this-find-the-fun-in-tedious-tasks/amp/
16. Learning mindset
- 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
17. “Fun is the aftermath of
deliberately manipulating a
familiar situation in a new
way.”
- Ian Bogost.
https://ideas-ted-com.cdn.ampproject.org/c/s/ideas.ted.com/want-to-be-
less-distracted-try-this-find-the-fun-in-tedious-tasks/amp/
18. Psychological safety
- Get support and support those working on it with you, it is a team
exercise
- 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
19. How this story ends
- Deprecated system in February 2019
- Onboarded more people to the team working on the new system,
applied lessons learnt
20. What you can do to prevent future
pains?
- Document decisions
- Document limitations of the system
- Tests as living documentation
Raise hands if you have worked on a code base older than 1 year? 5? 10? 20 years?
Raise them again if you enjoyed it
Sometimes legacy is not necessarily old software, but that which is not in active development
- We will touch on this more a little later (learning opportunities)
Batch overnight process (1+ billion records) and it failed constantly