How we try to speed up IT projects and why it doesn’t work

Code not in production has no value and you don’t know if it will work, get it live in the shortest time possible #HoskCodeWisdom

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

Code not being used by users is worth nothing, you to get a return on investment of creating the code only when it is being used in production by users.
People get lost in the fog of a project and forget its purpose is to create software which helps a business achieves its goals and do the activities which makes the business money.

The goal of IT projects is to create software to help a company deliver its business goals. To help the employees finish tasks and the company to be profitable.

No one cares about technology, employees want to keep their job and the business to be profitable. Technology is an aid to doing work easier, quicker or automating it.

To get a return on this investment of creating software, you need employees using it.

 

Until the code is in production, it has no value to the business #HoskCodeWisdom

Releasing quickly

I tweeted the quote and it generated a some negative answers on LinkedIn, much of which Some of the blame is mine for for the poorly worded statement
Here is the link
This generated comments
“I hope you mean after all quality gates have been passed. If not it makes no difference if you code directly in production. Since it was not tested anyhow.”
“#hosklowqualitycode”
“If that’s your attitude, I would stay well clear of you delivering any code-heavy solution if your priority is to rush stuff into production. This sounds like something written by someone to whom quality, and quality assurance is very much a secondary consideration. Stating that you think that code should, and can only be tested in production implies that you have place a very low premium on the testing process.
“Sounds like recipe for disaster; imagine if such code was behind human nuclear launch systems. If so, recipe for human extinction! if that is your culture, I expect they will also be extinct in due course. Code not in production worthless,? have you not heard of IP?”

When I wrote the comment I focused on speeding up deploying code into production using DevOps, rather than using shortcuts.

The assumption from some readers was a faster release schedule means reducing quality and not testing.  This is the mindset used before DevOps and continuous integration, continuous deployment.
Software engineers should not be spending their time doing repetitive tasks, which can be automated.

If your deployments are manual and you don’t consider automation then it’s difficult to speed up the deployment process with using short cuts and creating technical debt for the project.

Traditional thinking of speeding up projects

The traditional method of speeding up projects with manual deployments is taking shortcuts or working more (weekends, evenings) or faster.
and What’s slowing down your CRM development? for other thoughts on development/release cycle and project quality.
Common methods to speed up projects
  • Add more people
  • Work weekends
  • Reduce quality
  • Reduce testing
  • Reduce scope

The only one of these methods I would agree with is reducing scope and this is the choice customers don’t like choosing.  One benefit of Scrum is the simple rules regarding scope e.g. if you add a story to the sprint, you must remove a story but often people want to squeeze in one more story but Scrum doesn’t allow that.

Add more people

Adding manpower to a late software project makes it later. Fred Brooks

The more people you add to a project, the more complexity you add.  Communication and collaboration becomes harder and the project needs to spend more time communication to avoid creating conflicting solutions, making incorrect assumptions and creating a solution which works.

I tried to explain the problems of adding more developers is to imagine 9 people all trying to write a chapter of a book at once, each person writes 5 pages.  All 9 people need to know the characters, the plot, what’s happening now, what’s happening in the future, writing standards, where to store it.

The chances of the chapter being written 1st time is tiny,  it will take many iterations before you create a coherent story.  This is like a team of developers creating one solution, communicating, checking code works with the existing code, code works as specified by the requirements.
Adding more developers increases the technical debt because they work on seperate parts of the code base.  Good developers will do it properly and refactor as they go but good developers are hard to find.

Problems that come with adding more people are also known as Brooks’s law from the author of The Mythical Man-Month: Essays on Software Engineering

Adding manpower to a late software project makes it later. Fred Brooks 

Brooks explains the problems in seeing people as interchangeable better than I can

“Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth. It implies that men and months are interchangeable. Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them… This is true of reaping wheat or picking cotton; it is not even approximately true of systems programming” Fred Brooks

e.g. Software development is difficult and a project needs people to understand all the intricacies of this project (Business knowledge, people, existing technical solution, tools, etc)

Brooks’s Law focuses on projects who are already late but the main points

  • It takes some time for the people added to a project to become productive.
  • Communication overhead of adding more people
  • Limited divisibility of tasks

The bigger the project the harder and longer it takes people to become productive.   On Boarding is underestimated.  When starting a project you need to learn

  • Business knowledge
  • Existing technical solution
  • People on the project
  • The way the project works, it’s flow
  • Tools and software used on the project

The more people the harder you need to work communicating with them all, the more meetings that pop up!  You can end up slowly down the project by adding more people, the opposite of what is intended by adding additional people.

The last point on limited divisibility of tasks refers to you can’t always split up tasks for multiple people to work on simultaneously.  Summarised by this quote

“nine women can’t make a baby in one month”. Fred Brooks

Work weekends

You can do more work, if you work more days and hours in the same time, by working weekends, the elapsed project days stays the same but the team can deliver more.

This can work on a short-term basis e.g. but it should be a last resort.  Working weekends is a sign of problems, the development team have too much work to do.  It burns out the developers, giving them no time to rest and recharge.

Longer hours results in developers working harder but not more getting done because IT projects are about quality development.  Development needs thinking, creativity and experimentation.

When development teams work harder they lose their spark, churn out code of lower quality and contains more bugs.  Private lives suffer, weakening their relationships with friends and family.

Reduce quality

Faster development leads to lower quality.  Taking shortcuts, cutting corners, delivering to lower standards seems to get the project ahead but it’s an illusion.  The code will be more complex, you have built up technical debt and the debt will be paid later in the project.

The project will slow down when existing code needs changing or extended, the lower quality (highly decoupled, brittle code) will be harder to change and take longer.

Lowering quality gets you ahead now, only to fall behind later

Reduce testing

Unit testing, automated testing and a tester gives the developer a short feedback loop.  Short feedback loops allow you to test your code and find problems and bugs, you fix them whilst deep into the code and an expert.  The further away (longer) your feedback loop is the slower it is to fix bugs.  It takes longer for the bug to get back to the developer and they know less about the code, resulting in longer to fix and retest.

Development is about creating quality, fix code nearest its creation to be most efficient.

Reduce scope

You can speed up a project by reducing the scope.  Less software to create, equals less time to develop and test.

This is effective but unpopular because no one wants to give up functionality.  I rarely see this implemented.

I’m a fan of delivering simplified functionality to get it into production and get feedback.  Often this is good enough.  Simplified functionality is rarely agreed in principle but can gain momentum when seen in action.

Summary

Working functionality is the measure of all projects (assuming its by the users), the smaller the release cycle, the quicker we generate value.

Large IT projects are difficult, the bigger the project the harder it is.  I have read statistics that projects which go longer than a year have a 50 percent failure rate (I can’t remember where I read that state).  This post covers The difficulties of scaled agile projects.

The traditional measures of speeding up projects are adding more people, working harder or reducing quality (by doing less testing).  Scaling the team should only be done when the existing team is working well.  Reducing quality never gets you a head, it just saves the problems for later.

Reducing scope is a realistic approach, maybe not removing scope entirely but delivering a simpler version to begin with, let it be used and make changes from feedback.  You can then deliver smaller updates and everyone feels good.

Most attempts at speeding up projects have been unsuccessful, it often seems people get to a situation where they must hit a deadline but without anyone really thinking why or how this particular date was decided.

The goal of a project is to create a solution which works, it’s better to create a quality solution which takes a bit longer than rush something which doesn’t work.  Production issues cause panic, it’s better to fix these when the stakes aren’t as high.

A great book on the problems of IT Projects (mostly people related)

I recommend the book for anyone working on IT projects, also developers should read books

Where is the better way

This blog post got to big and I got carried away so I have split it up into two posts. in the next post I will discuss DevOps.  I got engrossed in Brooks law and thinking about projects I have worked on and the various attempts deployed to speed up them up.

 

Advertisements

Great posts on Microsoft Dynamics 365 and Software Engineering from the Capgemini team

The Capgemini Microsoft team have been creating some great blog posts this year.  One of the goals of the team is to raise our profile and share knowledge with the community.   The Capgemini Dynamics team created a new blog on medium and we have an existing Software Engineering blog.

Below are links and a summary of the posts this year

Capgemini Dynamics team kick off 2018

A post on the kick off meeting, highlighting the goals for this year and achievements of last year

Why the Capgemini team recommends apprentices

Why Capgemini Dynamics teams experiences of apprentices and the success the team has had

NAW 2018: Dynamics apprentices

An article giving thoughts from the apprentices on the Capgemini Microsoft Dynamics team

What we are looking forward to at Extreme 365

4 people from the Capgemini Microsoft Dynamics team went to Extreme 365 in Dubrovnik, what we were looking to

Future of customer service in your business

How Field Service functionality can help your business

How inverting the problem can help you find different solutions

Inverting your thinking about a problem can help create different solutions and more innovative solutions

Dynamics brain teaser

A brain teaser involving Microsoft Dynamics 365 Solutions, can you solve the puzzle

Create folder in SharePoint from Dynamics 

How to create a folder in SharePoint triggered from a Microsoft Dynamics 365 plugin

Software engineering and .NET articles

Here are some articles from the various Java and Microsoft teams in Capgemini, different technology but both focus on good software engineering practices.

A design review checklist for non‑designers

A checklist for developers reviewing designs

How fast are your React‑ions 

Comparing React to other JavaScript frameworks, seeing how much faster it is and other considerations

Cloud Native Apps on Azure 

Development is moving to the cloud, the article shows how you can use Azure cloud to give you an advantage

Roslyn-Based .NET Code Analyser

Roslyn, which enables .NET software engineering teams to implement automated code reviews based on the skills which they already have.

Serverless and using it

Understanding what Serverless computing is and why it’s a good thing

Debugging into a NuGet package

How to debug NuGet packages

 

Advice on improving as a Microsoft Dynamics 365 developer

The stupid questions are the ones you didn’t ask #HoskWisdom
I get asked questions directly, I write them as posts so the answer can then help many people instead of just one.  Earlier questions

Ask the Hosk questions

If you ask a question if you are polite it will increase the chance of me answering, don’t forget to say how great my blog is (that really helps).

Consider I’m a busy and sometimes I won’t be able to answer you question.  I might not know the answer.

The CRM Forum

I would recommend raising a question in the CRM Forum

  • It’s free
  • CRM experts who have experience will answer the question
  • Microsoft CRM support answer questions
  • You might get a number of answers and opinions

If no one answers you question then if you email me I can see you have tried

CRM forum

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 Microsoft Dynamics 365, you can see common questions raised by users/developers and the answers from experts.

Question – Transition to Microsoft Dynamics is tough

Hi Ben, I have been working on CRM as a consultant/lead for the last 5 years. Earlier I was working on IBM Mainframes/AS400. The transition has been a rough one with trying to learn on the job. Struggling a bit with plugins as .net fundamentals aren’t strong enough. Can you kindly recommend a good learning path?

Its like for every stumbling block I try to Google it out which is kinda taking the fun out of it

 

I didn’t answer so he reverted to flattery

Hi Ben, I have been eagerly waiting for your response. Would love to hear your wise words

It worked!

Help yourself

When you ask for help, the person wants to know you have tried, got stuck and now you need some advice to set you off in the right direction.  I am reluctant to help people who haven’t tried or thought about the problem because they are taking a shortcut (googling answers, copy code and not learning).

I will go one step further and believe people should think about the problem

Thinking about a problem is the best way to solve it #HoskWisdom

 

Define what the problem is and work out solutions.  I encourage people to think

It’s useful to use the cardboard developer technique and explain the problem to yourself or a small figure (my preference is a Teenage Mutant Ninja Turtle).

Consultant or developer?

First understand where your destination is before you plot a course.  You should have an ideal job role or identified your next role.  Answer the questions

  • What do I like and dislike about my current role?
  • What did I like/dislike about my previous roles?
  • What is your dream role or dream job?

I recommend going through the Career Conversation as specified by Radical Candor: How to Get What You Want by Saying What You Mean (a great book I recommend it for team leaders/manager)

I think its better to specialise in become either a functional consultant or a developer.  Consider what role you enjoy more because you will be doing it every day for 8 hours.  They are separate roles, which need different skills

Consultant skills

  • Good communication
  • Presentation skills
  • Understanding requirements and analyst skills
  • Running meetings and workshops
  • Strong knowledge of Microsoft Dynamics 365 out of the box functionality
  • Gathering requirements, questioning the business, listening
  • Converting requirements to Dynamics 365 functionality

Developer skills

  • Strong coding skills and experience
  • Design code – SOLID Principles, design patterns
  • Unit testing
  • Integrating systems
  • Software engineering
  • Knowledge of out of the box functionality
  • Debugging, bug hunting

Do everything average or a few things well

I have worked for small companies were my role was consultant, developer, technical setup and support, it was great to learn different aspects of Microsoft Dynamics but I didn’t specalise and I was doing tasks I didn’t enjoy (installing software and configuring servers).

When you work at a bigger companies, you work with experts consultants, developers, DevOps, testers, architects etc.

I think you should focus on becoming either a great Dynamics consultant or a great Dynamics developer but if you try to be both you will be good but not great.  Many Dynamics professionals can’t code and instead focus on improving their consultanty skills.

“The man who chases two rabbits, catches neither.” ~ Confucius

Developer path

I’m a developer, so here is advice on becoming a better developer.

Stop googling answers and think, learning and solving problems, this build up your Microsoft Dynamics 365 knowledge.  Becoming a CRM developer is difficult, it takes time and effort.  Becomean expert in Microsoft Dynamics 365 and improve as a Software Engineer.

No shortcut in become a Dynamics developer

Understand Microsoft Dynamics 365 out of the box functionality, the best way to do this is to take and pass Microsoft Dynamics 365 certifications.

When you come up against problems, don’t search the internet, instead search the Dynamics SDK and understand how it works.  The SDK is the core development engine of Microsoft Dynamics 365

Start with the CRM SDK

The reason to stop getting answers from the internet is because the Internet gives you the answers but it doesn’t help your learn and understand how Microsoft Dynamics 365 works.  Getting answers without learning is short-cutting learning and growing your knowledge.  This leaves  you with fragile knowledge which won’t help you resolve problems not previously tackled.

Known as Chauffeur knowledge

The Two Types of Knowledge: The Max Planck/Chauffeur Test

If you want to improve read books

read the articles below

Dynamics 365 Online Deployment – MB2-715 study notes

You cannot create a solution with Microsoft Dynamics 365 if you don’t understand it #HoskCodeWisdom

The goal of Dynamics certifications is to broaden your knowledge, learn how new features work and get a certification to prove you know it.  If you study, earn the knowledge the certificate is useful to you and employers.

Short-cutting creates technical debt for yourself because employers, colleagues are expecting you to be an expert in Microsoft Dynamics 365.

The benefits of Dynamics certifications are discussed in the posts below

Certification criteria

Understand what you will be tested on and read the certification criteria

Microsoft Dynamics 365 customer engagement Online Deployment certification criteria

These are the main areas

  • Create a Customer Organizational Structure (25% – 30%)
  • Administer the Microsoft Dynamics 365 Environment (25% – 30%)
  • Integrate Microsoft Dynamics with Other Applications (20% – 25%)
  • Manage Microsoft Outlook and Mobile Environments (25% – 30%)
Look at the details under these because they will include parts of the Dynamics 365 you don’t have experience with.  This article explains why you might not have experience with certain areas of Dynamics 365.

Certification Process

I have been getting Dynamics certificates since Microsoft Dynamics CRM 4 and I use the same technique

Watch the Dynamics learning portal videos for the certification for the functionality I don’t know(and sometimes watch them for a refresh).

Whilst watching the videos I will make study notes, I believe in active reading/watching otherwise I can’t tell if the information is sinking in or bouncing off.

For functionality I haven’t used before I create a trial in Dynamics 365 and play with the functionality, using the functionality is the best teacher.

I make notes on the limitations of functionality and absolutes because these are the things Microsoft likes to test you on.  It’s also easy to read these notes and put them into a quiz to enable you to test your knowledge.

The more you try to retrieve a piece of information the more your brain will realise it’s important and put it in a prominent part of your brain for easy access.

Source of Information

Hosk study notes

Please note these were made in 2017 some things could have moved on

blog post with a few details on Dynamics 365 instance management

  • There are two types of Instances 1. Production Instances 2 Non- production Instances.
  • Sandbox instance can be put in Administration Mode and System Administrator and System Customizer role can sign in to the instance
  • While Copying instance, target instance can be a Sandbox or Preview instance; not a Production instance.
  • When an instance is copied, target instance will be deleted and replaced with copy Source instances data, customizations.
  • Global administrator can copy all available instances. But Dynamics 365 system administrator can copy instance for which they have system administrator role.
  • Notifications are sent to administrators or any additional recipients configured when 80 % for storage limit is reached. If storage limit is reached no new records can be created. Here then data needs to be removed and/ or additional storage needs to be purchased
  • Full Copy includes all application data, user, customizations from the source instances and is suitable for UAT, upgrade testing, preview in Production (TAP/EA) and training.
  • Minimal copy includes users, customizations and is suitable for iterative team deployment, Partner/ ISV Solutions and Proof of Concepts.
  • System backups occur daily.
  • System backups are retained up to three days. Check your expiration date.
  • System backups do not count against your storage limits.
  • You can back up Production and Sandbox instances.
  • You can only restore to a Sandbox instance. To restore to a Production instance, first switch it to a Sandbox instance.
  • Only CRM Online 2016 Update 1 or later versions are supported for backup.
  • On-demand backups are retained for up to three days. Check your expiration date
  • The instance remains available while being backed up.
  • The instance remains unavailable while being restored.
  • Copied instances are copied to the same region as the source instance.
  • Instances that are reset are reset to the current region.
  • Preview Instances do not consume any of the storage quota purchased for Production and Sandbox instances.
  • A tenant can include up to 50 Dynamics 365 (online) production instances and up to 75 non-production (Sandbox) instances.
  • Each instance within the tenant receives its own SQL database.
  • Dynamics 365 data is not shared across instances.
  • Storage is shared across the primary instance and any additional instances.
  • All instances for a single customer tenant will be set up in the geography where they initially signed up for their account. Storage consumption is totaled and tracked across all the instances attached to a customer tenant.
  • You can set up separate security groups for all instances.
  • A licensed Dynamics 365 (online) user can potentially access all the Dynamics 365 (online) instances associated with the tenant. Access is controlled by instance security group membership.
  • You can purchase additional instances through the Additional Instance Add-On. Additional instances can be added only to “paid” subscriptions – not trials or Internal Use Rights (IUR). If you purchased your Dynamics 365 (online) subscription through Volume Licensing, you must go through your Large Account Reseller (LAR) to purchase the additional instance.
  • You can’t merge existing trials or subscriptions onto an additional instance; instead, you will need to move your data and customizations.
  • User accounts, identities, security groups, subscriptions, licenses, and storage cannot be shared among tenants. All tenants can have multiple instances associated with each specific tenant. Dynamics 365 data is not shared across instances or tenants.
  • Your instance will not be updated unless you approve it. This means your organization will go without the latest features and functionality until you explicitly give approval for the update to happen. Keep in mind, we do have an update policy that will make some updates mandatory, with no approval required.
  • At any given point a customer must be on the current version (n) or a version prior (n-1). For example, if you are on CRM Online 2016 Update (n-2) and chose not to take the available CRM Online 2016 Update 1 (n-1), then you would need to take December 2016 update for Dynamics 365 (online) (n) as a mandatory update.
  • Twice per Year new features become available through customer-driven updates in the Microsoft Dynamics 365 instance.
  • Office 365 admin centre to add/remove users
  • Best practise is to make the user change their password when they login
  • You add the user in Office 365 admin centre but you then must log into Dynamics 365 and give them a security role
  • Authentication is having a licence and office 365 user
  • Authorisation is having a security role
  • Removing the Dynamics 365 license makes the user disabled
  • Role assignment will stay the same for a disabled user.
  • Non-interactive user are for service accounts/integration
  • You can have 5 non-interactive accounts
  • Non interactive users can be used for programmatic access
  • Non-interactive users don’t consume a licence
  • Global Administrator – access office 365 admin centre
  • Administrative roles don’t use licences
  • Administrative roles can’t see any Sales, Marketing or service records
  • Administrative role is set to Administrative on user settings
  • To reduce administration, it’s recommended you setup federation because you must have an office 365 user. Synchronise your AD with Azure AD
  • A global administrator will, by default, also have systems administration privileges in Dynamics 365
  • Global administrator can access Dynamics 365 without a license but they cannot view any records without a Dynamics 365 license in read-write mode
  • Global Administrators are the only people who can assign other admin roles
  • You can assign alternative email addresses
  • Customized Administrator roles
    • Billing Administrator
    • Dynamics 365 service administrator
    • Exchange administrator
    • Password administrator
    • Skype for business administrator
    • Power BI service administrator
    • Service administrator
    • SharePoint administrator
    • User management administrator

Licensing

  • Dynamics 365 is available in two editions. Business and Enterprise. – not any more but the exam might not be updated
  • Enterprise is aimed at customers with more than 250 users
  • Enterprise can include operations and finance
  • Enterprise has dual rights which means you get a free on-premise licence with your on-line licence
  • Business edition is aimed at companies with 10-250 users
  • Dynamics 365 is based on named users – e.g the license is assigned to a Office 365 user
  • Enterprise edition application licenses are often $95 each. Whilst the customer engagement plan, giving access to all of the engagement apps is $115 per user per month
  • The Dynamics 365 Plan license, giving total access to all of customer engagement and operations is currently $210. Whilst the Unified Operations Plan is $190.
  • Business edition, full users are $40 per use per month. And a Business edition team member license is $5 per user per month.
  • One sandbox and one production instance are provided with your first purchase of a Dynamics 365 license.
  • Additional sandboxes cost $90ish per month

Portal

  • One portal is included with any Dynamics 365 Customer Engagement Plan subscription, per tenant, shared across all Customer Engagement Application
  • Each portal may only be associated with one instance

Instances

  • Tenant – an account created in Microsoft Online services
  • One tenant > many instances
  • Each instance is deployed to a separate SQL database
  • Different instances can be used for different tasks – test, dev, training, etc
  • Security group – what users can access what instances. g. you could have a developers security group, with access to the development instances
  • Two Instances types
    • Production instances
    • Non-production instances – Sandbox
  • Production and sandbox instances are purchased as addons for a subscription
  • Trials cannot purchase add-ons
  • All instances have names and unique url
  • Instances are managed in the Dynamics 365 admin centre
  • Sandbox instances have actions not available on production instances such as
    • Switch (change from production to sandbox or sandbox to production)
    • Reset
    • Delete
    • Copy
  • An admin can switch between product to sandbox and sandbox to production.
  • You can only switch instances if you have paid for the different types
  • Production instances cannot be reset
  • When an instance is reset, it’s deleted and created as a new instance
  • Sandbox instance can be moved to Administration mode
  • Administration mode, limits access to administrators and customizers
  • Administration mode stops back group operations such as Async services and workflows
  • All the storage is shared between all instances
  • A full copy, Copies an instance copies Data, users and customisations
  • Minimal copy only copies users and customisations
  • When copying consider how much data you have available and cost
  • You might not want developer users to see production data – be careful
  • You can only copy instances to a sandbox instance
  • You can copy from production or a sandbox instance
  • A tenant can include 50 production instances and 75 non-production instances
  • Each tenant is bound to the same region
  • You can ask Microsoft to create instances in different regions
  • You can only copy between instances in the same region
  • You can have multiple tenants, you cannot share anything between tenants
  • Each tenant is linked to a separate Active directory
  • You can enable Admin mode (Administrative Access) and only users with Administrator or System customizer security roles can sign in.
  • Administrative access will disable Asnc jobs such as Workflows, async plugins, service side sync)
  • You can only enable Admin mode on sandbox instances
  • You can switch a production instance to a sandbox instance
  • You can delete a sandbox instance
  • You cannot delete a production instance
  • You can reset a sandbox instance
  • You cannot reset a production instance
  • Resetting an instance wipes it clean, removes customisations, data, users, everything
  • You can copy an instance to a Sandbox instance
  • You cannot copy sandbox to production or production to production
  • The maximum data you can copy is 100 GB
  • Full copy copies customisation, data and users
  • Minimal copy copies customisations and users but not data
  • Reset an instance, deletes it and recreates it. This is useful to set the sandbox to a different version, free up storage space, delete the data

Storage

  • Storage is shared between all instances
  • If storage capacity is reached, new records cannot be created
  • Storage is connected to a subscription not an instance
  • You get a warning when 80 percent of storage is reached
  • You can add more email recipients to the notification list (e.g. partners)
  • You cannot reset a production instance
  • A new subscription will provide 10Gb of storage, a free sandbox instance, free portal
  • an additional 5Gb will be granted for each 20 full licenses purchased
  • You can see your Microsoft Dynamics licenses within the licenses option under billing in Office 365 admin
  • There is a limit of 30 TB
  • Dynamics 365 has a limit of 300 custom entities
  • default a Dynamics 365 Customer Engagement subscription will provide 10Gb of storage. Then an additional 5Gb of storage is automatically added for every 20 full users. (Team member licenses do not contribute to this increase.)
  • The amount of extra “free” storage is capped at 30Gb.
  • Additional storage can be purchased in 1Gb chunks. Up to a maximum of 5Tb of extra storage.

Updates

  • Updates become available twice a year
  • CDU – Customer driven update
  • You can skip one update but you cannot skip 2 in a row
  • The next update will be mandatory if you skip one
  • Patches will be released between major releases
  • Update emails are sent prior, during and after the update
  • Updates need to approved for each instance
  • Your instance won’t be updated without your approval. Unless the update is mandatory where it will be updated without approval (e.g. you must take 1 update per year)
  • You must be a Dynamics 365 System administrator to approve an update
  • When an update is approved, you can reschedule it as long as it hasn’t started
  • When an update has started the reschedule option will no longer be available
  • Four stages of an update
    • Queue (Not Started)
    • Backup
    • Restore
    • Database Upgrade

Notifications

  • You get notifications for
    • Service outages
    • 80% storage limit reached
    • Potential upgrades

SharePoint – Document management

  • SharePoint can store documents outside of Dynamics 365 and is a way to save space in Dynamics 365
  • SharePoint is server to server integration
  • All combinations of Dynamics 365 online/on premise and SharePoint online/on premise are supported

Microsoft OneDrive

  • 1TB of cloud space provided
  • You can share documents on OneDrive to provide a more private method of sharing, instead of the public SharePoint
  • You need SharePoint integration for OneDrive to work
  • You must be assigned an Office 365 licence
  • Dynamics 365 on Premise or on line
  • You must enable OneDrive for business in System settings
  • There is a security privileges called OneDrive for Business, found in in core records à miscellaneous privileges

Microsoft OneNote

  • OneNote is used to capture notes
  • OneNote integrates with Dynamics 365 and On premise
  • OneNote notebooks are stored in a SharePoint site
  • SharePoint integration must be enabled
  • You enable OneNote integration at an entity level
  • For enabled entities OneNote notebook will appear on the activity wall, after Notes

Microsoft Skype/Skype for business

  • You can configure which skype is used
  • It can automatically open when you click on a phone number

Office 365 groups

  • Shared workspaces for people to collaborate
  • It allows collaboration with Dynamics 365 and Office 365 users (who don’t have Dynamics 365 licences)
  • You need an Exchange Mailbox for each user that will use Office 365
  • SharePoint integration must be enabled for Office 365 Group users to view documents
  • Office Delve uses Machine learning to search all data (but not data held in Dynamics 365)
  • Delve can be shown in the Dynamics 365 as a dashboard
  • Delve dashboard cannot be shown on Dynamics 365 on premise

Dynamics 365 Apps

  • Apps allow you to edit the site map to only show certain entities, regardless of security role
  • Apps can be enabled/disabled for one or more security roles
  • Each App has it’s own URL
  • The apps suffix will work in the url
  • Users can navigate to the app from the menu
  • Apps only work in the web client
  • Apps can modulise the UI and provide a filtered view
  • Apps is another solution enabled entity
  • Apps can used Dashboards, Forms and views and Charts and Business process functions
  • App validation warns users on missing dependencies during app creation
  • App has a sitemap designer, which can be used by non-admin users
  • App Source allows you to find apps
  • Apps can add Site Map, Dashboards, Business process flows, entities (forms, views, charts)

Powerapps

  • PowerApps allow you to create no code apps
  • PowerApps can be built from templates
  • PowerApps can run in a web browser or mobile device (IOS, Android, Windows phones/tablets.)
  • To use PowerApps you need Office 365 or Dynamics 365 licence
  • You can access PowerApps from the app selector in Office 365
  • Powerapps is free of Office 365 and Dynamics 365 users
  • 2 Paid plans for PowerApps
  • Free PowerApps cannot use the common Data Service
  • 1 paid plan can use the common data service
  • 2 paid plan can model your data using common data service and enterprise grade admin
  • You can connect powerapps with 90 plus different services
  • You don’t write code but can use Excel like formulas
  • You can link PowerApps with Flow

Outlook integration

  • Dynamics 365 for outlook is installed on a users computer
  • You can track emails, appointments, contacts and tasks
  • Dynamics 365 for outlook allows you to work offline
  • Dynamics 365 for outlook supports 32 and 64 bit
  • Dynamics 365 for outlook works with Windows 7, 7 SP1, 8, 8.1, 10
  • Dynamics 365 for outlook works with Windows server 2012 and 2012 R2
  • Deploying can be done manually, command line, group policy, remote desktop, Microsoft System Center configuration manager
  • To track emails, the outlook email address must match the users email address in Dynamics 365
  • You can add multiple instances visible in Outlook
  • Only one instance can be a syncing instance
  • Offline data is stored on a local Microsoft SQL server express database
  • The offline data filters controls what data is downloaded to the users computer
  • You cannot add new field or custom field to the synchronisation settings
  • Dynamics 365 app for outlook
  • Dynamics 365 apps works online not on each users machine
  • You can track meetings and appointments not just emails
  • Dynamics 365 email templates can be used in the Dynamics 365 app for outlook
  • Dynamics 365 doesn’t have built in email functionality
  • Server side sync, integrates Exchange and Dynamics 365
  • Server side sync doesn’t need Outlook to be running
  • Server side sync talks direction with exchange and Dynamics 365
  • Incoming – None, Microsoft Dynamics 365 for Office outlook, Server side sync or email router or forward mailbox
  • Outgoing none, Microsoft Dynamics 365 for Office outlook, Server side sync
  • Folder level tracking will automatically track emails when they are moved to certain folders
  • You can link Exchange rules to move emails into folders and linked with Folder Level tracking
  • A limit of 25 rules/folders
  • You create folder tracking rules

Mobile Apps

  • Dynamics 365 for phones – uses the same forms as web applications
  • Dynamics 365 for phones – CRM onlines 2015 updates 1, CRM 2016 on premises
  • Dynamics 365 for phones express – CRM 2013 on prem, on line
  • Dynamics 365 for tablets – CRM 2013 online and on premise
  • Mobile apps are free for licenced users
  • Go to a form and click a field to set if a field is visible on the phone
  • Forms are used for both web app and mobile
  • Entity metadata has a checkbox – enable for mobile
    • Read only in mobile
    • Enable for mobile offline
  • 2 Security privilege restrict access Dynamics 365 for mobile and Dynamics 365 for phones express
  • Mobile security privileges are found in the business management section
  • All custom entities can be enabled for all mobile apps
  • Dynamics 365 for phones and tablets can make entities read only
  • Some system entities cannot be enabled
  • Tabs, sections and fields can be hidden from Dynamics 365 for phones
  • You cannot hide components (fields, sections, tabs) for Dynamics 365 for tablets
  • You can hide components for Phones but not tablets
  • Multiple dashboards can be enabled for Dynamics 365 for phones and Dynamics 365 for tablets
  • System or user dashboards can be enabled for phones and tablets
  • There is a dashboard property called Enable for mobile
  • You can only enable offline sync in a production instance
  • You need 5+ professional licences or 1 enterprise license
  • You need to create mobile offline profile, which defines what data is taken offline
  • You can define data to be download as My data, Teams data or business units data
  • You need to add users to a mobile profile and publish it
  • You can choose to set Synchronization conflicts

How inverting problems can help you become a better software engineer

“It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.” Charlie Munger
Not being an idiot is more effective than being a genius in most situations #HoskWisdom

The default approach is to find solutions to problems but instead of solutions to problems, invert the problem and stop doing things which make it worse.

Sometimes the best way to solve a problem is to avoid it and don’t waste time and effort on working on the wrong thing or heading in the wrong direction.

Developers

When software engineers start their career they suck, they have little knowledge, few skills, zero experience but lots of enthusiasm. Every task is hard because they don’t know how to do it, they don’t have the skills or experience.  Junior developers make mistakes and need help from their senior colleges.

Goal

Improve skills, knowledge and experience

Inverted Goal

Stop making mistakes (and slowing improvement)

The goal of a software engineer is to get better, by doing

  • Learn new skills
  • Gain knowledge
  • Write code
  • Make mistakes and learn
  • Watch videos

What if we invert the goal, instead of focusing on being good, the junior developer focuses on avoiding mistakes and getting worse.

  • Code analyser to catch bad code
  • Learn from mistakes and make sure you don’t repeat them
  • Get code reviews to catch badly written code

Avoiding mistakes allows new software engineer to pick up momentum and replace bad behaviors with good behaviours.  Doing stupid things slows your momentum because you need to undo the wrong action before you can move on to doing the right thing (warning, you don’t always know what the right thing is).

Avoid being stupid and doing stupid things instead of focusing on doing clever things.  Experience developers make fewer mistakes because they have learnt to avoid them, this results in steady progress which scrum masters and project managers love.

Improve by not making mistakes

Don’t  limit you stuff to just improving but focus on avoiding mistakes #HoskWisdom

The British cycling team lead by Dave Brailsford use this method to improve with marginal gains by looking for lots of small improvements.

How 1% Performance Improvements Led to Olympic Gold

Goal

Help the riders recuperate and get a good nights sleep

Inverted Goal

Stop the riders from having poor nights sleep

They wanted to improve the sleep of the riders when they sleep in hotels in unfamiliar surroundings and different beds.  To improve the sleep of the riders they inverted the problem by looking at what was making the sleep of the riders worse.  To improve the sleep the Sky team brought the riders own pillows to each hotel.  This improved the sleep by not making it worse.

Code

Inversion is used in code analyzers to improve the quality of code and teach developers to write better code.

Goal

The goal of code analyzers is to help developers create quality code

Inverted Goal

Stop developers from writing poor quality code

Code analyzer has rules, containing examples of bad code.  Developer runs the code analyzer it finds examples of bad code and raises a warning.  The developer fixes the problem, swapping poor quality code for better code.

Writing good code is avoiding writing bad code, swap bad habits for good habits and beat the suck.

We can use the approach to projects and the method to speeding up the project is avoiding slowing it down and targeting the bottle necks and processes which take a long time.

Making a project faster is avoiding slowing it down #HoskCodeWisdom

Bug fixing

We use inverted thinking many times as a developer and bug fixing is a good example.

Goal

The goal bug fixing is to find the problem and fix it

Inverted Goal

Confirm what works and narrow the causes of the bug

When bug fixing, forget what you think is causing the bug and prove what works to narrow the search for the problem.  Inverting the problem helps you rule out the working functionality.

Football

The goal of football is to win matches but for the teams in the lower half of the premier league they should invert this and make the goal to not lose matches.

Scoring goals is difficult and goal scorers, creative players cost more money and the lower teams cannot afford top strikers on their budgets.  If they focused their recruitment and training in not conceding goals, not making mistakes and trying to convert set pieces they have a higher chance of success.

Experienced managers such as Sam Allardyce, Tony Pulis successfully use this tactic by focusing on not losing.  Don’t lose the match and hope to win.  The opposition will make a mistake, your player will score an amazing goal or you convert a set piece.

If you don’t let a goal in, you can’t lose the match.

This article highlights the  difference between professional tennis players

Professionals win points where as amateurs lose them

Summary

Inverting problems helps you view a problems from different perspectives so you create incremental improvements.  Inverting the problem is a thinking tool to create innovative solutions and different solutions.Time spent thinking about a problem is time well spent.

Analyse the problem, invert the problem, come up with lots of solutions before picking the best one.  Make your plan and focus on execution. You can save time but avoiding mistakes or executing the wrong plan.

Following the wrong plan is heading off in the wrong direction to your destination.

I will end with this quote from Charlie Munger

 

Invert, always invert: Turn a situation or problem upside down. Look at it backward. What happens if all our plans go wrong? Where don’t we want to go, and how do you get there? Instead of looking for success, make a list of how to fail instead – through sloth, envy, resentment, self-pity, entitlement, all the mental habits of self-defeat. Avoid these qualities and you will succeed. Tell me where I’m going to die, that is, so I don’t go there. – Charlie Munger

Further reading

Extreme365 – Dubrovnik is going to be great

 

Great minds discuss ideas; average minds discuss events; small minds discuss people. Eleanor Roosevelt

Respect #extreme365, its thinking and learning time #HoskWisdom

 

Extreme 365 is going to be great with some interesting looking azure/cloud based presentations.  It’s good to stop working, rushing and reacting and think about Microsoft Dynamics 365, Azure and what the future has in store for the Dynamics 365 projects

Going to Extreme

The Extreme365 conference is on next week on the 19th March in held in Dubrovnik, an event aimed at Partners (3 days) and customers (2 days) featuring presentations covering Dynamics (CRM and Operations) and related services/technologies.

I attended Extreme 365 in Lisbon last year

Looking at the blog from Extreme365 – 2017, the tag line was “learn + connect = grow“, this year it’s Cloud and Azure focused

  • Microsoft Intelligent Cloud
  • Intelligent Business Cloud

Extreme365 – Dubrovnik has moved with the Dynamics industry, shifting towards Cloud, Azure and cognitive online services.

There is collateral on the page for Dynamics 365 (CRM and operations) and focus on features Azure services

The Dynamics industry is moving towards solutions using Azure services and framework, while leveraging congnitive services.

There is a shift needed by Dynamics professionals to stop doing what they have done for the last 5 years (creating solutions using Dynamics 365 plugins, workflows, etc) and move to solutions using Azure to do the processing.

Extreme365 – Dubrovnik will help me learn more the various Azure services, where and when to use them.

Capgemini team

Capgemini are a global team with Dynamics practices in 8 countries and the Extreme365 event offers a good opportunity to meet up.

  • Norway
  • Netherlands
  • India

here is a picture team from last year

You can learn more about the Capgemini Dynamics team from the UK who are going and what they are looking forward to seeing

What we are looking forward to at Extreme 365 — Dubrovnik

What to look forward to

You can see the full agenda here but here are some presentations I’m looking forward to

Some useful blog posts from Extreme blog

If you are going to Extreme365 please say hi to the Hosk, for those of you not going you can follow Extreme365 from your office by

 

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.