I'm currently a developer in a team of size 3-4 and I am concerned our team is not at all resilient to me taking days off or saying goodbye.
Two years ago when I arrived at the company I made the choice to take over and learn the work of someone departing. We had also the team downsized due to the start of an other product branch with team built from ours. That with other refactors I carried alone made me the sole expert over parts of the product that are currently undergoing most if not all current feature requests.
The team dynamics in terms of task assignation consists roughly of me developing features, someone else correcting legacy bugs, someone else refactoring legacy code. We sit on a lot of code so it's not without its value as well - but some tasks such as refactoring have been added to sprint as a courtesy, not as providing customer value. The other developers so far seem currently unwilling from learning from my expertise, although I remember being always welcoming for questions and explanations, sometimes perhaps even overwhelmingly so.
I suspect some of the reason they are not coming to me is that a vicious circle kind of started, where I'm busy working and they are afraid to interrupt me to learn from me because I'm busy, but this doesn't actually help at all.
Within the company things are going well but I'm concerned I did not manage to empower them to be more autonomous. We're currently in a state of things where 50% the tickets we have they can't handle without taking a massive delay or risking regressions or both.
I'm aware that if they don't want I may just have to be patient, but how do I prepare best their way to take over things I know, knowing there is a lot to learn, improving thus the truck factor (or bus factor)? Documentation? Pair programming? Tests? How to apply this to focus on the most efficient transfer?