It’s a great time to be a Dynamics 365 and business apps developer with opportunities to take on enterprise projects with companies digitising legacy applications. Complex projects need developers who do more than write code and create customisations.
This article is the advice I give to developers who want to work on large projects. I wrote a similar post but less technical for functional consultants who want to become Dynamics developers.
Ask Hosk — I’m a functional consultant who wants to become a Dynamics developer
Enterprise projects are different
When you have multiple teams of developers working on a project, standards, consistency and quality become important because technical debt and chaos will erupt if not controlled. On large projects DevOps becomes a necessity, giving feedback quickly to anyone who has broken the solution.
If you have 10 people creating customisations and code, to find the problem quickly, you want to look in the smallest change set possible. Change set is the group of changes made since the build worked.
These processes reduce the number of changes you need to look at
- Unit test — problem just in your code
- Continuous integration — problem in last individual change
- Nightly build — Problem in one days’ changes
- Weekly build — Problem in weeks changes
Releasing once per sprint — 2–3 weeks would include lots of changes, making finding, diagnosing and resolving the problem difficult. This finds the the bugs in one piece of functionality, not regression testing or bugs on related functionality (unless you have automated tests).
On enterprise projects you want to reduce complexity of customisations/code with standards, quality and testing. The nearer you find the bug to when and where it was created, the quicker you resolve it and the less people involved.
Be a Software engineer
Developers concentrate on code/customisations, software engineers understand the entire development process.
There is more to creating solutions than creating code/customisation, such as
- Building environments — DevOps
- Releasing/deploying- DevOps, Solution packager, CI/CO
- Testing — Unit testing, integration testing, automated testing
- Code quality — SOLID principles, design patterns, standards, processes, static analysis, solution checker (What is the solution checker)
- Data — Moving data between environments and data migration
Read blog posts — Learn
Knowledge compounds over time, if you keep learning it becomes an advantage.
Blog posts are a great way to learn about new functionality, solutions and best practices. Reading release notes only tells you about new features but don’t help you to learn existing functionality, problem solving and coming up with the solutions. Dynamics 365, Power Platform, Azure and business apps environment is changing at a fast pace, combined with the licencing and API limitations means the solutions and approaches we use today are different from past projects and future projects.
Keep up with the changes of services, functionality and environment by reading about new features. Don’t just read, try out new functionality and gain practical knowledge, which is more valuable than theoretical knowledge.
The way I keep up is by using Twitter and the great Tweetdeck.
I recommend creating a list and adding Dynamics, Power Apps and business apps twitter accounts, like @BenHosk and @PowerObjects
A few posts from to help your career
Keep learning, be curious and upgrade your skills. Keep up with Dynamics 365 and Power Platform changes because it’s evolving and improving all the time.
Read books for a deeper knowledge — Recommended reading for software engineers , a good book can change the way you view the world.
As Microsoft Dynamics 365 has matured, it has been used to deliver bigger and more complex projects; you need to bring the best practices of software engineering to Dynamics development.
Writing code and creating customisations are less than half a developers role, work on other skills
- Team work
- Designing solutions
- Testing code
- DevOps and deployments
- Gathering requirements, clarifying user stories
Developers focus on writing code and software engineers, focus on delivering quality projects. These article highlights the difference — Are you a Dynamics Craftsman or a CRM developer?
I recommend all developers read the book — Clean Code: A Handbook of Agile Software Craftsmanship It covers core skills such as naming, commenting, methods, classes, error handling, unit tests.
Understand Solid principles, this helps you write quality code which is easy to read, maintain and extend. For large projects it controls dependencies, minimiseing brittle code (which breaks with minor changes) and reduces testing and maintenance.
SOLID Principles: Explanation and examples
Solid principles are simple rules to help you create quality code. They are chapters dedicated to them in Clean Architecture: A Craftsman’s Guide to Software Structure and Design.
There are articles, YouTube videos and other resources to learn the SOLID principles but be prepared to come back to them many times. The rules are simple but they are hard to implement, it takes experience and practice to learn them.
Understand the concepts of interfaces, how they work, when to use them and why they help reduce dependencies.
Design patterns are examples of simple code to common problems. They give developers a common language to discuss problems and solutions. Design patterns are classics and you learn by understanding them. There is a design pattern book on my post — Recommended Books for Developers
Design patterns give you a common language to use with developers e.g.
- Singleton — creates one class only
- Factory — A factory class for creating objects
Articles on design patterns
I recommend learning one per week or month because they can be dry. Once you learn design patterns you can see them in the code you and others have created, it helps you understand the problems and solutions.
You must test your own code, don’t expect testers and other people to find your bugs. Finding problems in your own code is the quickest way to resolve them, ask yourself
How do I know this code works?
Unit tests can be run by yourself, other developers and automated to run during the build. A unit test can help developers understand the code and alert you when the code is broken.
Unit tests offer mini regression test functionality and give confidence that any changes you have made, haven’t broken the code. For large projects with different developers and lots of interconnected code, unit tests help find problems in unfamilar code.
If something can be automated it should be automated. Of things I love about DevOps is it takes away the boredom of development. Manually doing tasks such
- Running unit tests
- building solution to check you haven’t broken it
- Releasing all your customisations to environment
There are many tasks you need to do to enable the creation and testing of customisations. The harder you make it to test and deploy customisations the less it’s done and fewer problems you find.
DevOps reduces the feedback loop and removes obstacles to testing and environment management.
DevOps isn’t a nice to have skill, it’s a necessity. The bigger the project, the more you need DevOps and knowledge of it.
Most projects are Agile, so make sure you understand the logic behind Agile.
Looking at the ideas behind SCRUM
There are good courses on Pluralsight, YouTube and the internet.
Agile done badly can make projects harder, so spend time getting good at it.
Plugins should be short and quick, anything more complex should be running in Azure.
Azure Functions should be your choice for long running C# code, Dynamics has a 2 minute timeout limit and moving the code to Azure reduces the load on Dynamics 365.
Azure Webhooks should be on your to learn list.
Azure gives you enterprise scale, allows you to create code and customisations outside Dynamics 365.
Dynamics 365 and Power Platform
Become an expert in Dynamics 365, pass the Dynamics 365 certifications, read blogs and write blogs.
The no code solutions of Power Automate, Logic apps are powerful tools to allow quick development and integrations. The growing number of connectors means you what used to take a day with code can be done in a few hours with Power Automate. Power Automate is easier for non-coders to understand and manage because they won’t need access to Azure.
A system can be made up of multiple small focused solutions, Power Platform allows you to create these without doing anything in Dynamics 365.
Raise your profile in the team by sharing knowledge, writing blog posts and presenting things learnt on the project.
Colleagues have lots to teach you from their experience and knowledge. Learn from them, improve your relationships and harness the power of the team. A group has a large shared pool of knowledge, this is more important with the growth in areas we need to understand as a Dynamics developer. Colleagues can help you learn and use new services you haave no experience with.
Keep learning, keep improving and opportunities, promotions and money will come. Knowledge compounds and the investment in yourself will bring you the most rewards.
Your colleagues are a fast way to learn and you learn by asking questions. Senior team members are in a position you want to be in and can help you get there in the most direct route.
Start with these Hosk blog posts