Not doing their job which is tickets assigned them (coding, testing, building, buying groceries etc.)
So we do have a clear definition of what needs to be done, and it's also clear that who's doing it and who's not. Only question in here might what's the accepted amount of tasks done. Like does this ticket takes an hour for X and a day for Y. In either case (Y is slacking or it takes a day for him) he's an incompetent employee and needs to go. Am I missing something?
Out of context, comparisons like this are meaningless. Maybe the ticket took a long time for Y because he was assigned 30 tickets and spent most of the day suffering paralysis of choice, maybe that particular subject is difficult for him but he has other strengths. When you blamed him for it his knee-jerk response was to get defensive and make excuses (eg personal life problems).
Unclear expectations and confusing priorities can make motivation very difficult. You use the term 'performance' 5 times and I still haven't the slightest idea what these guys are supposed to be producing except that they are "technical." I understand you don't want to be identified and that's fine, but if you use this kind of imprecise language with your employees, they'll just nod and vaguely agree to get through the conversation. Five minutes later they'll realize the conversation was completely pointless.