Advice to Dynamics 365 developers who want to improve

“If you always do what you’ve always done, you’ll always be where you’ve always been.” —T.D. Jakes

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

Follow hastags

  • #MSDYN365
  • #Dynamics365
  • #PowerPlatform

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.

Software engineering

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
  • Communication
  • 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.

Solid Principles

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

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.

Unit testing

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.

DevOps

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

  • Solutions
  • Data
  • Environments
  • 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.

Scrum/Agile

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.

Azure

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.

Team

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

One thought on “Advice to Dynamics 365 developers who want to improve

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.