In my current project (team of five developers) all developers use their own TFS branch (named per developer). From time to time they will merge into the main development branch.
The argument for using branches per developer is: too much went wrong when they worked in one branch. Developers work mainly remote but use one common TFS and AD accounts (VPN connections).
I would like to get opinions whether this sort of collaboration is thought to be good practise, OK under some circumstances or just plainly wrong for certain reasons.
Is it feasible, yeah sure. It's not necessarily bad to isolate what you are doing from someone else....There's a catch, everyone has to constantly keep their code in sync with what is in the trunk. You can't go say 4 weeks without either merging or getting from trunk. That will always lead to issues.
The part you need to be concerned with is: "too much went wrong when they worked in one branch." That sounds like something is seriously wrong with how they are using source control. There are thousands of teams where the developers work on the same branch and have no issues at all. (I can think of 6 teams where I work and none of them have an issue). Before moving to a pseudo-distributed model like you are talking about, they need to figure out the basics. To me, it just doesn't sound like they have this down. Could I be wrong? Yes, of course, but at first glance, using basic source control seems to be a little problematic.
I would first ask what went wrong with the single model and go from there.