What I learnt in my last role

Acknowledging your mistakes, allows you to learn from them #HoskWisdom

After 3 and half great years in my last role I have moved for a new challenge and I’m excited about joining PowerObjects.  I met some great people and leave better person with more experience than when I joined.

Looking back over the last 3 and half years, it’s been a great journey and team effort.  The key to it was hiring talented people with potential and let them do their jobs (e.g. don’t micromanage them).  The culture of the team is important because you want the team to collaborate and share information, experiences, mistakes and solutions.

When I joined there were a handful of people in the Dynamics team and when I left there are 10 times that amount.  Few people knew there was Dynamics team and now the team has a blog and social media presence.  It is one of the biggest Dynamics team I worked on until I started at PowerObjects 🙂

Below are some highlights I contributed to, as most things in life it was a team effort that made everything work.

DevOps

Enterprise projects means needs software engineers not developers because there is more to development than just writing code.  Having lots of developers working on a single Dynamics project is tricky, you need high standards and create quality customisations because you create lots.

With Enterprise projects the focus is doing things right, not doing things quickly.  DevOps shortens the feedback loop, allowing the team to find problems quickly with small code set.

DevOps automates boring tasks (reducing errors), automate quality checks and best practices.  The result is better collaboration on the project, higher quality and finding problems quickly.

I didn’t contribute to DevOps because I was a Scrum master/Solution architect and not directly creating customisations.  I helped with discussions, encouragement, making sure the software engineers understood it and used it.

Most of the DevOps changes were 2 years ago, DevOps didn’t seem as standard as it is today

The team could monitor Microsoft adding changes in the xml files, we noticed this because it sometimes broke the build, read more here Problems with Microsoft Dynamics 365 patches

DevOps is becoming more common in Dynamics projects, Microsoft created the solution checker and the PowerApps BuildTools.

It’s good to see Dynamics developers using the best practices from software engineering and increasing the quality of our processes and solutions.

People

The strength of a team is the people and the culture they work in.  I learnt not to lower my standards in hiring because a poor hire can be disruptive and slow the productivity of your good team members.

Only hire strong candidates, if you are not sure, don’t.

I did lots of interviews and it helped me improve and know what I’m looking for, below are numbers of phone/face-to-face interviews

  • 35 Interviews 2019
  • 28 interviews in 2018
  • 47 interviews in 2017
  • 27 interviews in 2016

I helped create digital interviews for 3 different roles and watched at least 60 digital interviews.  I attended 4 assessment days helping assess graduates/DA’s.

Recruitment was a priority for me because the key to building a good team is getting people with good character and right attitude.  This makes it easier for leadership to create the right culture.

Consultancy and delivering large projects is all about people.  When you have a team of capable people with the right attitude, you feel you can do what’s needed to make it successful. The goal is to have multiple people contributing to the team and many leaders.

The things I looked for in candidates
  • Passion – Be passionate in Dynamics, Power Platform and creating solutions, otherwise you will be average
  • Team player – IT Projects are a team sport and you must work well in a team
  • Drive – People who want to improve and progress
  • Curious – Curious learn how things work results in deeper knowledge and enables the creation of flexible solutions to changing requirements
  • Potential – Hire for what they will become, not just what they are now

Technical knowledge is a prerequisite, it’s stops someone from being hired but its not a reason to hire.  A talented person can learn technical skills but someone with good technical knowledge will find it very difficult to change their character.

An example is I would hire a good Cloud native/C# developer and teach them Dynamics if they had many of the traits above.

People with good character and mindset take responsibility and get the work done, they help the team and improve others.  These people deliver projects and make the team stronger by creating best practices, accelerators.

OnBoarding

I onboarded most the people who joined the Dynamics team; I felt it was important for people to start a new role well, give them the information they need and set expectations.

I improved the process but onboarding is about people, welcoming and introducing to them to as many of the new team as possible.  This is a challenge with distributed teams because people are on site and not available to meet people.

Team spirit and sharing knowledge

Teams should work as a hive mind with collective knowledge.  Dynamics, Power Platform and Azure is too big for any one person to understand all parts of it.  You want the team to learn from individual mistakes, solutions/limitations and successes.  Avoid everyone making the same mistakes individually on each project.

When you learn as a team and everybody learns faster.

Theoretical knowledge is useful but unproven, practical knowledge is invaluable because it’s tried and tested.  Learning when and when not to use a customisation or solution can save you weeks of effort/expense/time.

If everyone shares experiences, then the team can learn as whole without each individual needing to make mistakes.

I arranged a Monthly meeting where we shared solutions, showed new functionality, updated the team on projects, bids, certifications, blogs etc.  This was successful because everyone took their turn to present. If we all do a little, then no one individual needs to do a lot.

The challenge of distributed teams is project teams not feeling part of a bigger team.  It’s important to remind everyone they are part of a larger team.  It’s expensive to meet in person but a worthwhile investment.

It’s hard to work as a team and help each other if you have never seen each other.  Delivering IT projects are a team game and the better the relationships between people the more effective they will be.

The better you know other team members, the more fun you have at work.

Team profile

I raised the profile of the team, help the Dynamics community by sharing the approaches, best practices, problems solved, technical solutions and experiences of the team.  This encourages people to join if they see what we are doing and how we we do it.

I created the Medium publication and hassled people to contribute posts.  The start was mostly me writing posts and persuading others to help.  In the first 8 months we write 30 posts and momentum starting to grow.

The blog now has over 100 posts and 370+ followers, with many people contributing.

Other ways I helped promote the team
  • Attended Extreme 365 Europe for the last 3 years
  • I presented at CRMUG in Birmingham
  • I attended a Power Platform Hackathon this year

I raise the team profile using social media to share blog posts, job roles, celebrating new joiners, certifications and other achievements of the team.  The team is no longer a secret.

Improving

My goal was to create an atmosphere and culture where everyone is trying to improve the team, other people and themselves.

I encouraged individuals to share their knowledge.  When you explain something via a blog or presentation, it forces you to understand it, then you can describe how it works and the key points (not all the points).

One of my favourite sentences was – “That would make a great blog post”.

I improved over the last three years.  My experience in delivering large projects and leadership isn’t something you can prepare for, jump in the water and learn to swim.

Reading, doing and reflecting were the keys to improving.  I tried to work harder but you reach a limit where you can’t work any harder because there are only 24 hours in a day.  I had to learn to work smarter, delegate more and think how I could motivate others to contribute.

When leading a team you must have priorities and a plan, you want to act strategically or you can react to situations and not progressing.

Certification

I am a big believer in Dynamics professionals getting certified because it expands their knowledge of the out of the box functionality.  If you specialise in delivering Dynamics projects, then you should be an expert in Dynamics 365 and the out of the box functionality.

You need to know the out of the box functionality is so you can align the requirements to fit out of the box functionality.

Read more here – What are the benefits of CRM certifications

Fun

I have had a lot of fun over the last 3 years and worked with some great people and hired people who will progress well in the careers.

Delivering large IT projects is a tough and challenging.  It’s important to inject fun into the proceedings and create a good team spirit.  Happy workers work harder and have more fun.  Enjoyment at work comes from interacting with people, laughing and creating solutions that help people.

I have had lots of enjoyable meals and nights down the pub with the team, this improved relationships and made work enjoyable.

It’s the role of the senior people on the project to make sure you create the moments where the team can be together without thinking about work.

Based on my leaving present in the picture, maybe I didn’t do a good as job as I thought 🙂

Hosk’s recommended Dynamics 365/Power Platform and other articles May 2019

 

Quotes

When the pressure is on you don’t rise to the occasion, you fall to your highest level of preparation – Chris Voss

Articles of the Month

awesome-1

Great resource below showing all the new certifications and resources to study

Great Dynamics 365/Power Platform articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • There is nothing sexy about underwear when you are hanging it on the washing line
  • Don’t respond to anger with shouting, be silent and confuse them
  • Imagination exhausts itself with the endless possibilities of code
  • When a project isn’t working, you have to stop playing the game
  • Writing good code is like being sexy, if you have tell people you are, you aren’t
  • Code is as complex as you make it
  • Clothes matter, naked developers have little or no influence on projects
  • Good developers bring joy when they join a project; bad developers bring joy when they leave a project
  • Coding is mastered through relentless commitment to the fundamentals
  • When you approach the end of a project, you finally see the requirements and solution as they really are. If only we understood that at the start
  • no project plan survives contact with delivery
  • Customers are a welcome thorn in a developers side
  • You must have chaos within you to be able to dad dance
  • It’s not the skills of the people on team but how will they work together that makes the biggest difference
  • Earn confidence by being good at what you do
  • Everyone wants to be heard but no one wants to listen
  • If you only learn in work, prepare to be average

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Recommended reading for software engineers

In my whole life, I have known no wise people who didn’t read all the time – none, zero. Charlie Munger

Books allow you to delve deep into a topic, stop focusing on doing and think about your situation, your approach and effectiveness.  Spending time on design before writing code creates better quality code, thinking about how you code, run a scrum team, deliver a project, work with people helps you do these things better.

Reading a book is conversing with an expert on that subject, you learn from their mistakes, success and experiences.  You get that knowledge and apply your adventures and conclusions on top.

Read why developers should read books if you are still not sure. If you don’t like reading it’s because you haven’t found a good book but you have come to the right place.  Those who read books, get wiser.

Coding

Coding is a fundamental skill software engineers should try to master.  Improving your coding will have a significant impact on your career.

It shocks me the number of developers who don’t learn how to design, write, test and refactor  code to a high standard.  They are paid cash money to write code, so be an expert in it.   Not being a great coder is like a chip shop that doesn’t make tasty chips, it makes no sense.

Let’s start with books to make your code shine brighter than a full moon

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)

I love this book, it’s short, concise and focuses on the fundamentals of coding.  Every developer should read this book and earlier the better.  Master the fundamentals and you have a solid foundation to build on

Code Complete (Developer Best Practices – Steve McConnell

This is a monster of a book at 960 pages and it goes deep into the details of coding.  When you read a chapter on how to write a method, it helps you realise the skill that top programmers have.

The Pragmatic Programmer: From Journeyman to Master

Great advice for programmers with common sense, down-to-earth advice.  Less technical than Code Complete but still a great book.  Everyone software engineer who reads this will learn something, it improves your code and your approach.

The Art of Unit Testing: with Examples in .NET

Unit testing is an art, you need to write your code in a testable way but writing unit tests isn’t straightforward but it reduces the feedback loop, allowing the developer to test their code.  Unit testing is something you should master and this book will help.

Head First Design Patterns

This helped me understand Design patterns, I still admire the simplicity of well design code and the patterns featured here are beautiful.  Design patterns are great for seeing examples of well-designed code and giving you a common language to use with other software engineers.

Design patterns are common solutions to common problems, it’s worth the time to read up on them.  Without unit tests changing code becomes risky because without unit tests you can’t be sure you have not broken any code.

Refactoring: Improving the Design of Existing Code

All software engineers will spend time on legacy projects and looking after other developers dodgy code.  This book gives you a way to bring order to a legacy project and improve it.

Projects, Scrum and People

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

A story about a company who bring DevOps into their business, solving problems and adding drama with characters.  It’s useful to view a project from a different perspective because most people see little in their own projects because they are so focused on delivering the project.

The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity

An interesting look at the insanity of IT Projects, teams, offices and all aspects of being a software developer.  You may have had an inkling you must be mad to be a software developer, this book will help you understand why you feel that way.  It’s funny and enlightening.

Scrum Mastery: From Good To Great Servant-Leadership

Scrum and agile is a tool, it’s great or terrible depending on who is using it and it won’t be going away soon.  They will use it on many projects you work on, so spend time on understanding how it works and the theory behind the concepts.

Agile projects done well are effective and enjoyable to work on but few people understand the theory behind Scrum\Agile.

Read it, master it, it will help you deliver scrum/agile projects to a high level.

Radical Candor: How to Get What You Want by Saying What You Mean

The driving force behind any project is the people on it.  If you lead anyone, then this book will help you be honest with them and work more effectively.

Never Split the Difference: Negotiating as if Your Life Depended on It

This book contains great practical advice for communicating with people and using emotional intelligence.   The writer was an FBI hostage negotiator, so has experience dealing with pressure situations.  This was my favourite book from 2018.

Mastery – Robert Greene

This book gives many examples of people who devoted their lives to mastering something, it’s inspirational and motivating.

Being a software engineer needs people to master it with constant improvement, study, reflection.

Other recommended reading lists

Time is not wasted if you are reading a book

Hosk’s recommended Dynamics 365 and other articles October 2018

Quotes

Some solutions are so complex, only an architect could create them

There are two great days in a person’s life – the day we are born and the day we discover why. William Barclay

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • To a developer, every problem looks like it needs code to fix it
  • All future development roads lead through CDS, PowerApps and Flow. So start heading in that direction now
  • Architecture is where the fun is, Development is where the pain is felt
  • You have to battle with code more than once, to make it maintainable
  • You’re only as good as the code you create
  • Projects approach methodology like people approach religion, they don’t implement all of it and use the bits they like
  • Write great code if you can, refactor when possible but get the job done
  • Technology should not dictate solutions, it should enable solutions

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Hosk’s recommended Dynamics 365 and other articles September 2018

Quotes

The pain of legacy code never goes away

Writing code is a long lesson in humility #HoskCodeWisdom

 

Power is like being a lady… if you have to tell people you are, you aren’t.” – Margaret Thatcher

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – has read and recommends

Selected  HoskWisdom from September

  • No Developer likes to be told they have ugly code
  • Meaning can come from great suffering, just ask anyone who has worked on an IT project
  • You can’t refactor code until you understand what it does
  • To many people try to do Agile when they should focus on being Agile #HoskCodeWisdom
  • The complexity of code is proportionate to the stress of supporting it #hoskcodewisdom
  • There is a game Microsoft likes to play with developers, They call it Master and Servant. It’s a lot like life and that’s what’s appealing

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Why apprentices work well with Dynamics development

Youth is the gift of nature, but age is a work of art. Stanislaw Jerzy Lec

It’s not the quality of the plan but the quality of the people that is vital to success #HoskWisdom

Capgemini has a degree apprentice scheme which offers an alternative to going to university, it allows you to study for a degree funded by Capgemini, whilst working full time.

In 2018 Capgemini are hoping to add 90 apprentices.   Watching apprentices grow and improve is like a home-grown player making the football team, it feels more rewarding.

The Capgemini Dynamics team added at least two apprentices each year for the last 2 years and it’s worked well.

The cost of degree?

The cost of degrees in the UK is huge, students pay back via a percentage of their wages for 20 years after graduation (the degree gets them a better paying job and worth the investment)

With degree’s costing so much money, I’m surprised alternatives or getting a degree at university is still the popular choice.

Alternatives such as

  • Making degrees into 2 years (do you need 3 months off for summer?)
  • Night school
  • smaller focused courses relevant to software engineering/programming or other specialisations

The cost of a degree is £9000 per year (tuition fees, excluding living costs) lasting 3 years, people should question

  1. Is a degree worth the money?
  2. is a degree worth the time?
  3. What are the alternatives?

The Capgemini Dynamics team experience

we had at least 2 apprentices each year for the past 2 years and it worked well.  The apprentices are put onto projects and work as Dynamics developers.

Recent articles on apprentices on the Capgemini Dynamics team blog

Apprentices often learn faster than experienced developers who have learnt bad habits.  The Capgemini Dynamics team bring the best practices of software engineering to Dynamics development

  • Plugin framework
  • Unit testing
  • code using business logic and repository pattern
  • DevOps (CI, CD)
  • GIT not TFS (pull requests differ from check ins :-))

The apprentices pick up the development process often quicker than experienced developers because they haven’t got use to writing code without designing their code or writing unit tests.

Some CRM developers don’t see the value of unit tests but if you are working on a large projects and don’t write unit tests the quality of your code base will deteriate.  The effects of reduce quality code is harder to read, maintain, test and extend your code; The project will slow down and make any changes costly in terms of time and money.

Articles on why you should unit test

Articles on designing code and technical debt

My experiences

The apprentices are are expected to

  • Contribute ideas
  • One Microsoft Dynamics Certification each year
  • Share information with the team (presentations, blog posts)

These help the software engineers learn about Dynamics 365, integrate and get engaged with the team.  Studying for Dynamics certification allows apprentices to learn Microsoft Dynamics 365 quickly and learning good software engineering principles takes longer.  Using frameworks and code reviews you can make sure junior developers creating code the right way.

Junior developers work best on a project with experienced developers who help them with the intricacies of Microsoft Dynamics development (which has it’s idiosyncratic ways of doing things).

Summary

Its a great way to get a degree and Dynamics project experience without the debt (it does take longer to get your degree)

You need to be hard working and dedicated to take this route but the benefit is you get your degree paid and project experience.  The downside is it takes longer to finish the degree and you need to study and work.

It’s amazing to think of the practical experience the apprentices get working on projects, learning from software engineers whilst people studying at university only have theoretical knowledge.

I look forward to the Capgemini Dynamics team getting more apprentices each year.  You can find out more here if you want to learn more about it.

How to improve as Dynamics 365 developer

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

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 GreeneMastery 

 

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 GreeneMastery

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.

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.

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

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.

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-consumingbe 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 testsit‘s best practice and encourages you to write decoupled code which is easy to unit test.

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 testingDonjust 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

Hosk’s Top Dynamics 365 Articles of the week – 27th January

Quotes

Quality is never an accident. It is always the result of intelligent effort. John Ruskin

#HoskWisdom Favoutes this week

  • The only limitation to what you can develop is the person developing it #HoskWisdom
  • The end always triggers a beginning #HoskWisdom
  • The pressure to make things complex will be great but you must keep it as simple as possible #HoskWisdom
  • Don’t waste words, make every one count #HoskWisdom
  • Don’t blame other people for your failures #HoskWisdom
  • Constantly talking about doing something is a barrier to doing something #HoskWisdom
  • It’s not just what you say but how you say it #HoskWisdom
  • if you tried your hardest you have nothing to regret #HoskWisdom
  • If something has no value, stop measuring it #HoskWisdom
  • Contributing to a successful team is better than achieving personal goals #HoskWisdom
  • Don’t over think and under act #HoskWisdom
  • The difficulty working with cowboy coders is dealing with the all shit that comes from their code and horses #HoskCodeWisdom
  • Increasing people on a project increases complexity of working, colloborating and communicating #HoskWisdom
  • When I see someone crying when their football team has lost, I want to tell them they need to take football more seriously #HoskWisdom
  • Respect silence, its thinking time #HoskWisdom
  • You cant solve all of life’s problems in a day but you can start with one of your own #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Articles of the week

awesome-1

Using Portal Capabilities in Dynamics 365 (CRM)

Good run through portal capabilities, a detailed step by step guide

Best of the rest

The difficulties of scaled agile projects

Dynamics 365 SDK refreshed (11 January 2017)

10 Types of Dynamics 365 Project for IT Decision Makers

Getting around Delegated Admin Restrictions

Read Barcode Value Using Barcode Scanner Control in Dynamics 365

Step by Step Guide to Setting up your Dynamics 365 Portal Trial

Working with JSON objects in Dynamics CRM Plugins

Smart Buttons in the Ribbon Workbench

ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management

Everyday is a school day, yomi fields are for phonetic spelling

Programming/Scrum

5 Steps To Better Agile Retrospectives

Trello board on better retrospectives

It’s Not Just Standing Up: Patterns for Daily Standup Meetings

CannotMeasureProductivity

Other

Maker’s Schedule, Manager’s Schedule

Leadership That Gets Results

Servant leadership – the leadership theory of robert K. greenleaf

Effective Leadership Styles for Scrum Masters

Five books every ScrumMaster should read

Béla Guttmann: the mastermind who was more than just a curse

Stephen Hawking’s Productive Laziness

To Everyone Who Asks For ‘Just A Little’ Of Your Time: Here’s What It Costs To Say Yes

everything Ryan Holiday wrote in 2016

how to improve success rates in NFL drafts

David Foster Wallace: The String Theory

Great course for Scrum masters

How to build a great team and culture

The Hosk – currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2013 content to help you pass the exam

#HoskCodeWisdom

When you are going through project hell, don’t stop to create the nice to have features #HoskCodeWisdom
Quick fixes are never quick and usually add technical debt, so take longer and do it properly #HoskCodeWisdom
If not managed properly, adding more people to a project can slow it down instead of speeding it up #HoskCodeWisdom
Don’t waste time adding functionality the user might like but hasn’t asked for #HoskCodeWisdom
Never optimize code unless you have to #HoskCodeWisdom
Scrum master should never have answers they should ask the team for answers #HoskCodeWisdom
Writing code is simple but writing simple code is the hardest thing you can code #HoskCodeWisdom
You need to love code with your heart and write code with your head if you want to be good programmer #HoskCodeWisdom
Creating bugs bothers good developers #HoskCodeWisdom
If you don’t find writing code fun, you will never be good developer #HoskCodeWisdom
If you don’t control technical debt, it controls you and the horse you rode in on #HoskCodeWisdom
You cannot be the master coding because some days the code wins and you lose #HoskCodeWisdom
When programmers think they are good, code will find a way for you to waste a whole day on something which doesn’t work #HoskCodeWisdom

The difficulties of scaled agile projects

There are many projects which are Agile in name but chaos in reality #HoskWisdom

The Agile framework is like a person with a hammer, all problems look like nails and all projects look like Agile projects #HoskWisdom

 

Agile/Scrum used on large/enterprise projects with multiple Scrum teams, scaled Agile increases the complexity of a project and if not managed, adding more people can slow projects because there is a cost to adding more people to a project and increasing complexity.

Many agile project require an increase in velocity to meet an earlier completion date, the common method is to add more people to the project.

These Brooks quotes, author of the Mythical man month are apt
Adding manpower to a late software project makes it later. Fred Brooks
The bearing of a child takes nine months, no matter how many women are assigned. Fred Brooks

Adding more resources (usually developers) to a project would seem sensible.  If one team have a velocity of 25 story points Sprint (Story points gets internally translated to days by 91 percent of the population #HoskWisdom).  So if there are 4 teams a velocity of 100 story points per sprint.

The reality is teams and individuals don’t start delivering 100 percent instantly because there are other factors to consider.

Increasing people on a project increases complexity of working, collaborating and communicating #HoskWisdom

These other factors have been explained by Brooks Law

Brooks Law

 Brooks points to the main factors that explain why it works this way:
  1. It takes some time for the people added to a project to become productive. Brooks calls this the “ramp up” time. Software projects are complex engineering endeavors, and new workers on the project must first become educated about the work that has preceded them; this education requires diverting resources already working on the project, temporarily diminishing their productivity while the new workers are not yet contributing meaningfully. Each new worker also needs to integrate with a team composed of several engineers who must educate the new worker in their area of expertise in the code base, day by day. In addition to reducing the contribution of experienced workers (because of the need to train), new workers may even make negative contributions, for example, if they introduce bugs that move the project further from completion.
  2. 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.[3]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.
  3. Limited divisibility of tasks. Adding more people to a highly divisible task such as reaping a field by hand decreases the overall task duration (up to the point where additional workers get in each other’s way). Some tasks are less divisible; Brooks points out that while it takes one woman nine months to make one baby, “nine women can’t make a baby in one month”.
The problems associated with adding new teams is ramping up, individuals need to learn/understand
  • Business logic
  • Project processes
  • Best resources for situations
  • Project politics
  • Collaborate with others

A scrum team takes 2 sprints to get up to  speed, usually 50% efficiency for sprint 1 and 60/70% in Sprint 2.  When you add the added overhead of trying to collaborate with other teams this can slow new teams further and slow existing teams.  

Deadlines are the common cause of adding more people to a project which adds more pressure to the project and the newly arriving people.

A big overhead is integrating the work from multiple teams into one solution, even with continuous integration there will be problems when bringing solutions together

 

Sutherland one of the creators of Scrum mentions scaling in this article

InfoQ: Now that more and more larger organizations are using Scrum, the need for scaling increases. Can you give some suggestions how organizations can scale Scrum?

Sutherland: Scrum is designed to grow like a biological system. To create a baby, you need one good cell that replicates. If this cell is bad you have a lot of problems. So the challenge is to first get a single team successful to use as a model for other teams, then replicate it. As you grow, Scrum as large follows the same basic principles as Scrum in the small. If it doesn’t you have introduced waste into the system. You will build out organ systems, just as in the human body that have some specialization and need some training on how to handle cross team coordination, elevating impediments all the way to senior management, avoiding the introduction of unnecessary teams that can compromise performance, and scrumming the entire organization.

We have published several papers showing that a properly scaled Scrum can provide linear increases in global velocity, something never seen before in software development. However, you need to do Scrum really well to make this happen.

Hosk thoughts on scaling agile projects

The first rule of large agile projects is not to do large agile projects #HoskWisdom

Large Agile or Scrum projects are difficult but this doesn’t mean Agile/Scrum are not right for large projects because large projects are difficult and have similar problems no matter the framework or methodology used.

Agile projects have an extra dimension because quick decisions are needed from empowered product owners to give Scrum direction and feedback

Having multiple teams adds the need for more communication and collaboration and managing dependencies between teams.

There are lots of different scaled agile frameworks, many of them discussed in article below

Comparing scaling agile frameworks

Most of the frameworks try to solve problems with shared resources between teams and collaboration between teams (Scrum of Scrums meeting).

If you want existing teams working efficiently, you must remove project level impediments before adding new teams.  When a team works well then try adding one more team at a time.

There are other reasons for project troubles

Is Safe Evil

Conclusion

Big projects are difficult, hard and challenging and having people with experience of large projects helps.  There is pressure with big agile projects because sprinting and collaborating create conflicts and complexity.

Stick with the processes and aim to keep improving your processes and relationships.  Challenging projects are the most satisfying to deliver because you have to work hard and earn the achievement of a successfully delivered project.

A few last great quotes from Fred Brooks on why projects are delivered late
Fifth, when schedule slippage is recognized, the natural (and traditional) response is to add manpower. Like dousing a fire with gasoline, this makes matters worse, much worse. More fire requires more gasoline, and thus begins a regenerative cycle which ends in disaster. [page 14]

How does a project get to be a year behind schedule? One day at a time. Fred Brooks

picture from here

The Top 10 Hosk Dynamics CRM blog posts for 2016

Once you replace negative thoughts with positive ones, you’ll start having positive results. Willie Nelson

The company that needs Microsoft Dynamics CRM, and hasn’t bought it, is already paying for it #HoskWisdom

I have written Dynamics CRM blogs for 6 years and this year I got the most views in a year 673873,  beating last years numbers 661057.  Thanks to all the people who read my blog posts and support the Hosk Dynamics CRM blog post.

I have written blog posts so long the default category is CRM 2011!

A lot of people have told me this year how the Hosk Dynamics CRM blog post has helped them which is great.

Here is a list of the most viewed blog post in 2016 (I am always tempted to write CRM 2016, that will now stop with Dynamics 365).  The views don’t include articles viewed on other sites.

Home page / Archives 48326
CRM 2013 – Understanding Solutions and how they work 13408
Microsoft Dynamics CRM Developer Interview Questions 12904
CRM 2013 – Step by Step Update Plugin Tutorial using the CRM 2013 Development Toolkit 11382
What are the limitations of Microsoft Dynamics CRM Online and how do you work with them? 10162
CRM 2015/CRM2013 – JavaScipt to get the current users name 9753
CRM 2013 – Javascript to get id of current record 7370
CRM 2015 – how to find Statecode value 7141
MB2-703 – CRM 2013 Customization and Configuration Certification Information 7131
CRM Plugins – Stopping infinite loops and understanding PluginExecutionContext.Depth 7005
Where is the CRM Developer toolkit for CRM 2015? 7004

image from here