Everyone wants to improve but few want to put in the work needed to get better #HoskWisdom
Becoming a champion is not an easy process… It is done by focusing on what it takes to get there and not on getting there – Nick Saban
Improving as a Dynamics 365 developer takes dedication and persistence. It takes years to build up your experience and knowledge but you can speed up the process by learning from the mistakes and experience of others.
This blog post my advice to Dynamics 365 developers who want to improve. The core message of the post was written to a frustrated junior developer who wrote me an email simply saying “I want to stop making mistakes and get better, what is the quickest way to improve.”
A few posts improving and tips to improve, start by reading those
- Tips on how to become a CRM MVP from CRM MVP’S
- Tips to boost your career in Microsoft Dynamics CRM
- 12 Ways to become a better CRM Developer
No shortcuts
Becoming a good Dynamics developer is difficult and takes time, which is why there are so few good Dynamics developers.
No shortcuts to becoming an awesome Dynamics 365 developer
It involves focus, effort and learning from your mistakes. The more focus on improving the quicker you will improve. It takes time for your skills, knowledge and experience to accumulate and learn from your mistakes.
Aim to finish work wiser about Microsoft Dynamics than you when you started. Each day learn something new, improve your skills and reflect on your experiences
If you want to be a better coder then commit to being better and start being a better coder now #HoskCodeWisdom
There is no shortcut, only time and dedication. Warren Buffett talks about Charlie Munger and his focus
“Charlie, as a very young lawyer, was probably getting $20 an hour. He thought to himself, “Who’s my most valuable client?” And he decided it was himself. So he decided to sell himself an hour each day. He did it early in the morning, working on these construction projects and real estate deals. Everybody should do this, be the client, and then work for other people, too, and sell yourself an hour a day.”
Enjoy being a Dynamics developer
“You must understand the following: In order to master a field, you must love the subject and feel a profound connection to it. Your interest must transcend the field itself and border on the religious.” ― Robert Greene, Mastery
If you don’t enjoy Dynamics development you will find the work boring and the days long. If you are not passionate, you won’t care enough and you devote the time needed to improve.
Want to improve
Development is difficult but rewarding when you do it well #HoskCodeWisdom
Improvement comes from within, it‘s a desire to get better. You need a passion for development, keep motivated, know why you want to improve if you don’t have a good reason you will give up.
It’s a slow process of continuous improvement, end each day learning something new or improving skills. This is sucking less each day. Junior Dynamics developers struggle with the limitations of Dynamics 365 functionality, often creating a customisation only to find due to a limitation the solution won’t work.
Why .NET developers struggle with CRM Development
A student mindset uses opportunities to learn and improve, the more experience and knowledge you build the fewer mistakes you make.
“Most people don’t have the patience to absorb their minds in the fine points and minutiae that are intrinsically part of their work. They are in a hurry to create effects and make a splash; they think in large brush strokes.
Their work inevitably reveals their lack of attention to detail – it doesn’t connect deeply with the public, and it feels flimsy.”
― Robert Greene, Mastery
Visualise your day – plan your day
What will you check? What processes will you follow? When visualizing the perfect day, remind yourself how you should do everything.
Plan your day, make sure you tackle the important tasks and don’t be reactive to change via email or requests. Developers need to concentrate and focus on one task, avoid switching between many tasks and losing time through switching.
Don’t let email push low priority tasks to the front of the queue, Email tasks can be the tasks which shout the loudest but the task you do next should be the most important.
Reflect
Learn from your experiences, review your mistakes you and avoid repeating them. Inspecting how you work and adapting, keep improving.
Learn from your mistakes, identify patterns, catch yourself from being busy but not productive.
The person who doesn’t learn from their mistakes, repeats them. Don’t waste your experiences, make the most of them.
Start with the SDK
The CRM SDK is the main tool for a CRM developer, the better a CRM developer knows its capabilities, limitations, and documentation the better they do their job.
Every time you don’t understand something, read the Dynamics 365 SDK, understand it, master it.
- Why CRM Developers should always start with the CRM SDK
- Why you should read the What’s new for developers in the CRM SDK
Improve code quality
Read Clean Code: A Handbook of Agile Software Craftsmanship. To write simple code you need to understand design principles are important, they decouple code and avoid making code brittle.
Brittle code with large methods is hard to read and breaks. When you change one line of code ,it breaks other unrelated parts of the code. Controlling dependencies and decoupling code allows you to manage the effects of change.
Naming is important, go back over your code and get the names of variables, methods and classes correct. Like writing a book, developers never give the best names in the first draft, it‘s important to edit, refactor and refine your code. The first draft gets it working, further drafts are to simplify and improve readability.
- 7 Design lessons for a developer
- How do you know your code is bad?
- Writing clean code
- Steps to better code
- Good coding practices – Information hiding
- Why Code Readability is important
Design code
Don’t just write code. Think about it, design it, write it, refactor it, be proud of it #HoskCodeWisdom
Before you start typing, spend time designing your code, find classes and abstractions. Designed code is easier to read, debug, reuse, unit test, maintain and extend. All code has an impact, well-designed code minimizes the dependencies
- Why understanding abstractions can help you write better code
- Understanding levels of abstraction can improve your code design
- How to find classes
- Are CRM Developers are afraid of creating classes?
- CRM 2015 – CRM developers should think in Entities
- Are your CRM plugins creating technical debt?
Understand SOLID principles
SOLID principles are the building blocks of good code. You will produce better quality code, fewer dependencies, and fewer problems later. SOLID principles help developers recognise good code.
- Uncle Bob Principles of OOD
- SOLID architecture principle in C#
- SOLID – the first five principles of object oriented design
- Wikipedia SOLID
Help yourself
Don’t suffer in silence and sit frozen in front of the code, don’t waste time not making progress. Don’t look give me the answer, I want to be pointed in the right direction. Software development has lots of dead ends where to solve a problem you must rule out options and clarify assumptions.
Resolving your own problems is time-consuming, be pragmatic and know when to spend the time learning it yourself and when to get help.
A useful tool is to describe my problems to a toy/cardboard developer, explaining the problem to the toy and myself I can uncover the solution and I avoid wasting other peoples time.
Why all developers should be friends with a cardboard developer
Understand how Dynamics CRM works
He who knows the most, get’s paid the most #HoskWisdom
Take every opportunity to understand how Dynamics 365 works. A greater knowledge of Dynamics 365 allows consistent choice of the right customisations and enabling quicker trouble shooting.
Dynamics 365 error messages point you in the right direction
Seek out what you are weakest
Improve knowledge and skills, build up your experience. Don’t hide from these, focus and improve. Use weaknesses and mistakes as triggers for learning.
Its better to learn functionality before it’s needed on a customer project, where the pressure is on and deadlines are looming.
How to cope when you are out of your Developer comfort zone
Learn from colleagues
Fellow developers are walking, talking troves of knowledge and experience, learn from their experience.
Colleagues might be useful sources of knowledge but don’t ask them for help without trying to solve problems yourself. Solving problems yourself gives you the solution and the learning.
The goal is to create customisations delivering the required functionality but it‘s the journey which improves your skills. Create customisations and get senior developer to ratify your solution.
All developers have tips, tricks and shortcuts which can help you, if you ask and talk to them.
Write unit tests
Know how are you going to test the logic of your code, understand every line of code is doing what it should.
Test your code with unit tests, it‘s best practice and encourages you to write decoupled code which is easy to unit test.
- Why CRM Developers should unit test their code
- Information to Get started with Unit Testing with Microsoft Fakes and Microsoft Dynamics CRM 2013
A good framework is Unit Testing Microsoft Dynamics CRM using FakeXrmEasy Framework
At Capgemini we structure plugins to separate business logic and repository layer (CRM SDK CRUD) to make testable.
Unit tests are a vital part of emerging code design
When manually testing, Don’t just test the happy path
Talk Dynamics 365
Talk Microsoft Dynamics 365 with your colleagues and you will learn something or at worst give information to someone else.
Share knowledge with the team and work together to create a broad knowledge of Dynamics 365 bringing in your differences experiences and thoughts.
Be organised
Don’t waste time looking for files, projects and code. Be professional, be organised and minimise distractions.
Get Certified
Certifications gives a more rounded and in-depth knowledge of Dynamics 365. Investigating functionality in Dynamics 365 which they no practical experience of.
Dynamics 365 is the developers main tool, they should know it inside, outside, up and down.
Studying for Dynamics certifications helps to understand the limitations of Dynamics 365 functionality. Limitations are key factors when deciding the right customization for a requirement.
Average is not good enough
Developer skills are like a snowball, they start off small and quickly pick up speed as your knowledge and skills grow #HoskWisdom
Don’t do average work, do great work. Customers and other developers can quickly tell if someone is delivering quality work. Good developers code works well and anticipates the needs of the users, it contains fewer bugs and when bugs are fixed they don’t bounce back.
Developers who work too quickly often don’t fully understand the requirements, don’t clarify them and deliver what they think the users want. The code contains assumptions and bugs and never seems to be finished
Deliver code you are proud of
Don’t put non-supported customisations
If you write unsupported customisations Microsoft will not support your Dynamics 365 customisations. A detailed explanation below
Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM
Know why things are not working
Errors and functionality not working is an opportunity to learn. Don’t just find the solution on the internet, make sure you take the time to learn what the problem was and how/why it’s fixed.
Microsoft Dynamics CRM not working? check these common causes
The next problem you might get could be different and the better your understanding of Dynamics 365 the quicker you will be able to diagnose the problem.
Read CRM blogs
There are lots of great Dynamics 365 blogs which will help you keep up to date with the latest functionality in Dynamics 365, you can find a great list of them here
https://community.dynamics.com/crm/b
I also recommend follow these hashtags on twitter
- #MSDYN365
- #Dynamics365
- #HoskWisdom and #HoskCodeWisdom 🙂
Finally here are some of my other favourite blog posts I have written