AX allows multiple developers to exist in an AX environment without any issues. I've had up to ten people in a single instance creating all sorts of stuff. There can be some issues with people modifying the same base objects of course but when doing training and creating new processes, everything should be good.
We had an issue with AX 2012 R2 freezing up and stopping anyone from doing anything in the system. The clients would crash and all sorts of nasty things.
Issue was with the database doing an entire system synchronization. One of the developers in the system was doing an unintentional full database sync. From what I could see, when a synchronization occurs, the entire database will lock up from any table Id or sync related problems. People can still compile code and other objects but doing actions like creating a table or changing an EDT would result in a total lock up of the system.
The question 'Is this a bug? Why does this happen' is a fair one. This is all by design and it makes total sense. Imagine if one person was doing a full synchronization and another user came in during that process, added a table and some EDTs and was able to sync them and move on. This process compromised the integrity of the other person's synchronization of the system.
To avoid a full synchronization, when making a change to the system or creating an EDT, the user can be prompted with 'Are you sure you want to synchronize the database' or something close to that. Have the users click 'No' 100% of the time. When adding the EDTs, everything should update properly and we can add them to a table and synchronize those individually (see Figure 1 for that). The user may see the 'Data Dictionary' icon go red. That just means you eventually have to do a full sync. It will not stop testing or let alone a comprehensive unit test. I would before major unit testing to be safe but I don't think its required from my experience (as long as it was fully synced before the dev starting fiddling about) since we're manually synching any changes we manually make.
There were reports that when adding an EDT, the system would automatically perform a full system sync without prompting the user. I have not tied that scenario down yet, but we did clear his usage data, create an EDT with proper name, add the Extends property, add a few other things and not have that happen again. I'm still investigating this...
Helpful hint: I find things are faster dev-wise when doing development in a single tier environment (AX client, AOS, and SQL DB on same machine). It's easy to backup and clone if virtual and the compilation of the code from the AX client to AOS as well calls to metadata provider are reduced