Improving legacy applications is something I really like to do. Sometimes it is about changing infrastructure, slicing down the monolith, establishing a better architecture for the code base(s), and sometimes it is about all these things. And the work is not only about technical aspects. You need to make sure a supportive culture is in place. A culture that helps continuously pay off technical debt.
Both tasks are challenging and long-term in nature. You can neither change the architecture nor build an appropriate environment within a month or so. In most cases, this is a plan for years.
And this can be overwhelming.
The work that never ends
Mentioned changes require a lot of effort, planning, and time. The fact the one-and-only correct solution does not exist makes it even more challenging. You must be aware that you will lose from time to time. Then, you can either give up or take a break, find a different approach, and try again.And months pass.
Sometimes you have the impression that you are not moving forward. Yet, this is how it works. Changes that require a lot of time to implement happen slowly. You don't wake up one day to see the world get better when you were sleeping. You may have a feeling that regardless of the work done, there's still an infinite amount of work to accomplish. That can be terrifying. And sometimes it really is.
Because this task really never ends.
You cannot pay technical debt and get rid of legacy code. The code will degrade. The established boundaries of your services and components will need to be changed. There will be new requirements and new knowledge that will force you to evaluate past decisions.
Once teams start to collaborate and there's a culture that supports continuous improvements, you must ensure it will stay.
Once teams start to collaborate and there's a culture that supports continuous improvements, you must ensure it will stay.
Of course, you are not doing it alone, but it changes nothing. This work is continuous. You can expect some great victories and achievements, but you need to wait for them for some time (months?).
And still, the task is neverending.
How to survive?
I cannot change the reality and nature of that activities. Yet, I found a way to recharge and gather strength to continue these battles - I look for the finite task I can complete within a few hours. It gives me a boost. I like to see how the work moves forward. It is good to see the finish line is getting closer.To be more specific - what works for me?
It may sound weird, but the task I find entertaining is ironing. I take a pile of clothes and start. I see the outcome of my work really fast. I see the progress. I can observe how the pile is getting smaller and smaller. Till the moment the last clothes are ironed.
That is how I find a little bit of joy when involved in "infinite work".
Are you facing the same difficulty from time to time? If yes, please share how you overcome them.
No comments:
Post a Comment