I have this problem with an otherwise very respectable colleague, who holds the position of consultant/tester in my team. Due to them being in the company twice the years I've been working here, they have acquired great experience on how things work and are able to be very helpful on that aspect. They also know some technical stuff - but no programming.
So far so good. However, there is some friction between us when we are required to collaborate and I really want to settle things and not get frustrated when this happens.
Although they are very good at what they are doing, they sometimes inconvenience the way I work. Let me explain: they get very anxious and impatient when they assume (sometimes mistakenly) that an issue is urgent or difficult to fix. They even go into lengths such as guessing what the bug actually is and urging me to look into particular functionality/code when I have already found the issue is elsewhere. Or, they give me advice I didn't ask for, on very easy algorithms (in other words, how I should code). They often don't respect the estimated effort I have determined (which is logical because they don't know coding, but still very frustrating given I'm many years in the project myself). They often try to remind me about the bugs assigned to me, and frequently ask me about the progress I have made (in other words, they are spamming me when I'm trying to work). This whole behavior makes things worse more often than not.
I really appreciate that they assign the most urgent and sometimes complicated issues to me instead of the other developers. But I'm also an anxious person and multitasking impairs my productivity. When I'm not overly nervous and not required to switch from coding to communicating very often, I'll have the code ready way sooner than I'm supposed to. But when I am interrupted frequently, my work slows down. I also don't like unnecessary comments on how I should code, since it implies that I don't know how to do my job. I have already told them that they don't need to interrupt me and tried to imply that advice on coding is unnecessary, but to no avail.
I have tried to advise them about something that concerned their duties, and they rightfully reminded me that it was their job. So, they are aware about the boundaries of each team member's position, but unfortunately not about their own.
My question is: how should I convey to them that our collaboration technique isn't working? My goal is to work together more effectively.
NOTE: They refers to a single person.