“Alone we can do so little, together we can do so much.” –Helen Keller
“None of us is as smart as all of us.” –Ken Blanchard
I get asked questions from readers of the blog about general CRM topics such as career advice, finding a job, creating plugins or help with a specific problems/errors.
Ask the Hosk questions
If you are going to ask me a question please be polite, it will increase your chances of me answering your question, don’t forget to say how much you like my blog (that really increases your chances of getting an answer).
Take into account I’m a busy Hosk, I work, I have 2 young children, a wife and sometimes even get to chill out or play football. Sometimes I could be too busy to answer your question quickly.
I won’t always know the answer to your question, if I haven’t read about a topic or got any experience in the topic I can’t give a good answer.
The CRM Forum
Instead of asking individuals a question I would recommend raising a question in the CRM Forum, for these reasons.
- It’s free
- CRM MVP’s answer many questions
- CRM experts who have experience will answer the question
- Microsoft CRM support answer questions
- You might get a number of answers and opinions
A bonus reason to raise the question on the forum is after you have raised the question on the CRM forum, you can email me and ask me to look at the question.
When you raise a question, try to give as much information as possible, this will help anyone who answers your question.
The CRM forums are a great way to learn CRM, you can see common questions raised by CRM users and the answers from CRM experts. I answered over 400 forums questions and learnt a lot and helped users in the CRM community.
How do multiple developers work on a web resource within the CRM environment?
With traditional web development if there are multiple developers working on the same page then they will each have local copies/websites to develop and test against then merge the changes in source control.
However, CRM web resources usually rely on the XRM SDK and the parent window within the CRM Evironment.
Are there any best practices for being able to have multiple developers work on the same web resource simultaneously?
This is a great question, working with a team of developers can be frustrating when they overwrite your changes, this didn’t quite make it to my list of frustrations of a CRM developer.
It’s a common scenario, particularly on big CRM projects and part of the problem lies with communication and practices
In the book The Mythical Man-month: Essays on Software Engineering the author Brookes discusses why adding more resources doesn’t always speed a project up, a great quote Brooks law
Communication overheads increase as the number of people increases. Due to combinatorial explosion, the number of different communication channels increases rapidly with the number of people. Everyone working on the same task needs to keep in sync, so as more people are added they spend more time trying to find out what everyone else is doing.
Communication is key to successfully working with a group of developers, particularly if you are working on a shared environment.
Encourage developers to communicate via talking face to face, phone or instant messaging.
Multiple developers can develop separate parts of a CRM solution. There will be time when development will overlap. The quickest technique is to talk and work together, there are some steps to work without overwriting each others changes but this will involve some code merging will can be painful.
If two developers have worked on the same customization, it’s important you test all new functionality to ensure the last modification hasn’t affected the previous modification.
Whether you use TFS or something doesn’t matter but what it is important is everyone checks in their code regularly.
Get into a habit of checking in code regularly, at minimum
- Get the latest code in the morning before starting code
- Before you are about to change some code, get latest
- Check in code before you leave
Source control can be a pain, but it will save you skin on many occasions, don’t fight it, embrace it. The more you refresh and check in your code the less likely you are to suffer merge hell.
If two developers need to work on the same plugin, you can create and test the code in a separate class, avoiding conflict and merging later.
It’s possible to have separate VM’s on individuals laptops, so each developer has their own separate CRM Instance. This is possible but the majority of CRM development projects I have not worked with this setup.
Unit tests allow developers to isolate the business logic by faking/mocking interactions with CRM. Writing unit tests allows the CRM developer to test their code on their local machine without any dependency on the CRM developer environment.
With unit tests, multiple developers can work on CRM customizations without affecting each other.
- Why CRM Developers should unit test their code
- Information to Get started with Unit Testing with Microsoft Fakes and Microsoft Dynamics CRM 2013
No right answer
This question is tricky and I don’t have a right answer or the perfect way for a team of developers working together without stepping on each others toes.
Source control is an important tool for a CRM developer and not just for teams working with multiple developers on the same project. It’s a vital tool which gives an audit trail of the code and saves the code safely in a repository which acts as a disaster recovery for your code on a developer’s laptop.
Source control will help recover overridden code, but it’s unlikely to stop developers overwriting code. The most effective method is for different developers to work on separate customizations or give allocate only one developer to work on a single customization.
If multiple developers must work on the same customization then communicate with each other to agree on a way of working