2. His output was horrible. He was an obviously a good senior level developer. But it would take him a week to do something a -junior- engineer couple do in 2 days.
3. Lots of strange and unexpected absences.
4. On a number of occasions I asked how he solved a problem at a prior company, and he spoke about the company in present tense rather than past tense. (A slip up on his part)
There were people a few other signs that were more subtle than the ones above... but ultimately I became suspicious about how such a good engineer's output was so bad, and had a theory he had multiple jobs. So I simply emailed his prior employer to make sure they were aware that he had resigned to work for our company. The CEO of his prior company (where he had been for 5+ years) was shocked to find out he worked for us.
The 3rd company he found through YC Work at a Startup, and through that uncovered he had been applying for a 3rd job and actually accepted an offer from one of them and had begun work.
There are whole blogs dedicated to how to pull this scam off (google it). But morals aside, I wouldn't recommend it simply because the stress of juggling remote meetings, standups, sprints between 3 companies is not easy.
Laws are generally not written for the average, decent person, but to stop the degenerates who would try to murder, destroy, etc, and wouldn't be punished otherwise.
People cheat on remote tests and interviews, for example.
The industry is full of engineers working 9-5 then going home and spending 4 hours on a side-hustle or open-source project (plus another 10 hours on Saturday/Sunday).
Those people can hold down two 40 hour a week software engineering positions. Timezone shifted, yes, but they can get their work done.
I doubt anyone will reveal the how because it is becoming a cat and mouse game in my organization.