40 Tips to help you improve as Dynamics developer

You shouldn’t write code, you are not willing to test #HoskWisdom

I have compiled a list of tips to improve as a Dynamics developer made up of blog posts I have written and blog posts I should have written.

  1. Get certified to broaden Dynamics knowledge –The benefits of Dynamics certifications
  2. Answer forum questions Microsoft Dynamics 365 Community Forums, CRM forum
  3. Know what value to set entity ownership to, Dynamics 365 Entity ownership — How do you decide?
  4. Don’t put code in the plugin class, create separate objects and code properly and unit test.
  5. Understand the activity entity and ActivityParty and ActivityParty Lists
  6. Read blogs daily to stay up to date and keep learning
  7. Automate builds to raise quality, release more often, which reduces errors and boredom — Dynamics 365 and ALM/DevOps Information to get you started
  8. Don’t deploy manually, it’s boring, error prone and you shouldn’t do something you can automate. Dynamics 365 — The cost of manual deployments activities
  9. Master the fundamentals of coding, you will use those skills every day. Start with SOLID Principles.
  10. Use the solution checker to delivering high quality code (not adding to technical debt) — What the solution checker does and why you should use it
  11. Solve own problems by explaining them to a cardboard developer
  12. Understand the business purpose of the solution you are creating
  13. Push back on requirements that need complex customisations
  14. Why Dynamics Developers should always start with the SDK/Web API and learn how it works, rather than google the answer and learn little
  15. Read books for deeper learning and bring fresh ideas to Dynamics development
  16. Not all solutions should be done in Dynamics 365, Just because you have a hammer it doesn’t mean every problem is a nail.
  17. Read the what’s new, depreciated functionality and release guide
  18. Use the XrmToolBox because it saves time and someone has already faced and solved the problem you are wrestling with.
  19. Show users out of the box before getting their requirements and guide them to an out of the box solution
  20. Don’t copy and paste code, it skips the learning phase and can’t adjust your code when the requirements change
  21. Being prepared helps you write better code — The prepared developer writes better code
  22. Avoid taking work home with you, come to work recharged and ready to go — Let go of thoughts, emotions and actions that weigh you down
  23. Team player because IT projects are a team game — Why you need a great team to deliver an IT project
  24. Uses no code solutions before code because it’s easier to maintain and upgrade. To deliver a project on time, stick to out of the box (if you can)
  25. When you write code make it simple, it’s easier to understand, maintain and extend — Simple code is worth the time it takes to create
  26. Write your code, do your job, focus on the details, predict problems
  27. Don’t take shortcuts they create technical debt and you don’t learn anything — No shortcuts to becoming an awesome Dynamics 365 developer
  28. Don’t move job for money, move for role and opportunity. The more you know and the more value you bring, the more you get paid.
  29. Use early binding in your code because it’s easier to understand and it brings the bugs into development not production (e.g. errors found in code, not a plugin running in Dynamics 365)
  30. Uses the plugin profiler to debug as a last resort because you should be writing unit tests which everyone can use over and over. The plugin profiler adds dependencies to solutions and causes solution import problems. It can affect everyone using an environment.
  31. Don’t use the System administrator to test their customisations — The System Administrator role is a benefit and a curse to Dynamics developers
  32. Think in entities
  33. Don’t reuse out of the box fields because it confuses everyone to have a field name and label different. (they also get overwritten when the solution is re-imported)
  34. Organise your solutions to minimise change, speed up deployment and organise the customisations. What’s the best way to organise solutions in Microsoft Dynamics 365
  35. Reflect on what you doing, how you are doing it and how you can do it better. What I learnt in my last role
  36. Write your code, do your job, focus on the details, predict problems
  37. Continuously keep improving
  38. Name your code and customisations so it’s obvious what they do and they don’t need comments. Code should be the one version of the truth, don’t add comments
  39. Think long term and create code you can reuse — Why isn’t code reused in Microsoft Dynamics projects?
  40. Remove code you don’t need, it gets in the way and confuses — The code you take away as important as the code you write
  41. Don’t overestimate your skills and underestimate the task — One simple tip to improve your development and project estimates
  42. Time is a tool, use it to think about the problem when you have time, so you can react quickly when you don’t. 10 books to improve your thinking and decision making

Dynamics 365 - The cost of manual deployments activities

We can create a customisation that meet customer requirements quickly but they must be maintainable and moved between environments without manual tasks or you create a growing maintenance backlog. The creation of a customisation is only half the work needed.

Lets walk through an example which will show the cost in time of manual data and customisations.

Scenario

We create a workflow which sends an email to account when a certain field is updated. We create a Workflow in Dynamics 365 and manually create the account in each environment.

You might see this as not being to bad and wondering why Hosk going on about keeping guids in SYNC

  • When it comes to guids, take your lead from the boy band NSYNC #HoskWisdom
  • When guids are out of sync, manual work is needed every time you deploy #HoskWisdom

or the recent blog posts — Dynamics 365 — Document templates, guids and workflows

What happens next

The account is manually created in

  • DEV
  • QA
  • Training
  • UAT
  • PreProduction

The account will have a different GUID in each environment. Every time there is a deployment to an environments, the workflow needs to be edited, the correct environment account lookup set and the workflow activated.

In this example we will assume it’s a 6 month project. Below we can see the estimated number of builds and manual work needed.

  • QA — Every night for 6 months
  • UAT — month of UAT — 3 deployments a week
  • Training — once a month for 4 months
  • Preprod — 6 times
  • Production — 6 times

Fixing and activating the Workflow takes 2 or 3 minutes

  • QA — 5 times per week, 20 times per month, 6 months = 120 times the workflow was manually updated
  • UAT — 12 times the workflow was deployed manually
  • Training — 4 times the workflow was deployed manually
  • PreProd — 6 times the workflow was deployed manually
  • Production — 6 times the workflow was deployed manually

148 times the workflow was deployed manually

if it took 2 minutes then that’s 296 minutes or about 5 hours

if it took 3 minutes then that’s 444 minutes or 7.4 hours

The current cost of creating that one customisation and not creating the data properly and putting it into the ALM process has cost 5 or 7.4 hours and counting. This will continue to take time.

The example doesn’t take into account any bugs which could be created if it wasn’t done or done incorrectly (which can happen with manual tasks)

The correct process

When you create static data or data used in workflows then you should add the data into the ALM process. If you haven’t got an ALM process, read this blog to get started

Dynamics 365 and ALM/DevOps Information to get you started

These tools have data moving DevOps tasks

If you don’t have an ALM process, you can add the data with the same guid in different environments, it’s a one off step, which can save you hours. You would need to add this to your environment build tasks so you don’t forget.

Conclusion

Creating customisations is one part of a developing a solution, the maintenance and deploying the customisations between environments is an importance process. 

Manual deployments reduce the frequency of deployments (because no one wants to do it) which reduces the testing. Manual deployment steps are boring and can consume hours over a project.

The example is with one customization, on a project you can have tens or hundreds of customisations. The manual tasks can build up to 30 or 40 minutes per deployment.

Manual deployment activities are time consuming, boring and prone to error/people forgetting so make sure you avoid them.

Dynamics 365 - Document templates, guids and workflows

When it comes to guids, take your lead from the boy band NSYNC #HoskWisdom

I had a problem with Document templates, guids and getting out of sync between environments. When guids are out of sync, manual work is needed every time you deploy, this can add up to a lot time of the course of a project.

Document Templates are an impressive feature that allows you to create Word or Excel templates that work in a similar way to mail merge. Once you create the word template once, users can use them to generate a word document using values from Dynamics. Compared to SSRS reports these are lightening fast and anyone can create them.

To learn more, read these posts

Sounds great, what’s the catch

It’s a powerful time-saving feature but Microsoft forgot to create a method to move these documents between environments. Microsoft want Dynamics 365 to create enterprise solutions but don’t provide the tools to do. To have functionality that you have to create manually isn’t a suitable solution. 

Document templates are either Word or Excel document which you upload to Dynamics 365. When you upload the document it create a record in Dynamics with the word document attached.

Where you have records, you have guids and where you have guids, you need to keep those in sync between environments.

Microsoft would like you to manually create the document template in each environment. Doing this will create a different guid for the document template in each environment.

Why is this a problem?

When you use a document template in a workflow, it uses the guid of the document template record. 

You might be wondering why you would use a document template in a workflow but the is a useful action created by Microsoft that allows you to create a document using a document template via a workflow

Auto generate word template using custom action

We used this but the problem is when we move the workflow from Dev to QA the workflows are deactivated and you need to open the workflow and lookup the correct document template in the environment and then publish. This can be a drain of time if you have to do it after every deployment in every environment.

I do not like doing anything on deployments manually, particularly boring workflow repointing tasks.

I created a document template called Hosk Test, you can see it has different guids in DEV and QA.

Hosk Test — DEV
 80bb06cc-a99a-ea11-a812–000d3ab94bd3

Hosk Test— QA — Manually created

d4fb8630-af9a-ea11-a812–000d3abaccb2

What’s the solution

You can create a console app written in C# and create, update document templates — Document template SDK, if you have an ALM process it’s worth the time to create a tool to move them between environments.

An alternative solution is the XrmToolBoxtool Document Template mover.

The tool allows you to select a source and target environment and then move the templates between environments. 

It does a few things which are neat

  • Keeps the same guid between environments
  • Converts the object type code between environments
  • Works easily and quickly

It would have been great if it was a command line and then we could add it to a build task and include it into the build but a manual step of moving document templates isn’t too bad because Document templates don’t change very often. 

The code is open source if you want to see how the magic is done

https://github.com/MscrmTools/MscrmTools.DocumentTemplatesMover

picture from here

Creating a Flow which triggers where regarding field = lead

I was writing a flow my SMS entity, like the email entity the regarding can be any type. I wanted my Flow to only trigger if the Flow was of type lead.

There is a useful looking Dynamics content

Regarding (Type)

Regarding (Value)

Behind the hood, it’s looking up the logical name (I think)

The values in the output body of my Flow

“_regardingobjectid_value”: “e565622a-6e47-ea11-a812–000d3a4ab4c2”,

“_regardingobjectid_type”: “accounts”,

I only wanted to run the Flow if the regarding type was lead, so I created a condition

I couldn’t get this condition to work and I couldn’t find out what the value because you only see the results

this was my condition

I tried lead, leads and every combination with single and double quotes, true, false, 1, 0. Nothing worked

Looking for help

Finding help is difficult for Flows. I used to put Flow, Dynamics 365, Power Automate in front of the search but the results didn’t bring back anything useful.

SharePoint blogs kept popping up because they embraced Flow a year earlier than Dynamics 365 and Microsoft didn’t allow Flows to be added to solutions. Make sure you use the CDS connector in your Flow and create a Flow service account. The connector will connect to the current environment, which means you don’t have to put in your credentials everytime you deploy to a different environment.

You need the Flow service account because when a user is deleted, all the Flows are deleted, so you don’t want a developer leaving the project and finding all his Flow’s go with him (well deleted).

Variables

After trying the brute force approach and failing, I needed a different approach. Looking in Flow for some options I found there were variables. I had seen variables earlier and couldn’t think of any use cases for them because most of the time I wanted to use fields directly in queries.

What if I created a variable and assigned the Regarding Type?

I did that

I quickly learnt you have to initialise a variable first, I made sure to initialise it to be blank ‘’

Run my Flow, lets find out what’s going on

null, the out of the box variable had been null, no wonder my condition wasn’t working. Maybe I’m not using this correctly (I can’t find any documentation for it) but it wasn’t working.

So like Edison making his lightbulb and finding 10000 ways not to make a lightbulb, I had found one way not to create a Flow which only runs when the regarding lookup is a lead.

so how do I get that value in the triggerOutput?

I did some couple of useful blogs on this

I used an expression to get the TriggerOutputs @{triggerOutputs()[‘body/_regardingobjectid_type’]}

I ran it and finally I get the entity type in the regarding box

I put this into my condition and boom it worked.

Learning

The Flow I was creating was simple but whilst doing it I think I made every mistake possible.

I used the wrong Common Data Service for selecting and updating records, Microsoft hiding the correct one, meaning you have to search for it is annoying

Using Lead ID rather than Lead

Using Apply to each and thinking current item would give me the guid, it didn’t. I have to select the lead item which was leadid of the correct query.

Creating this Flow taught me a lot, often the way to understand how to do something is by doing it wrong, learning why it doesn’t work and working out the right way.

Mistakes are an effective teacher, it highlights that theoretical knowledge is not as valuable as practical knowledge.

Hosk’s top articles of the week - 17th May

 

You have more to fear from friends than from enemies — Robert Greene

Articles of the week

Coronavirus — the basic dance steps everyone can follow

Top 10 articles of the week

  1. I Just Heard That Monoliths Are The Future Of Software Development
  2. Change the Way You Persuade
  3. 68 Bits of Unsolicited Advice
  4. The Burden Of Skepticism
  5. 5 books every developer must read before it’s too late
  6. The Psychology Behind Effective Crisis Leadership
  7. What Makes a Great Pitch
  8. Bad Arguments and How to Avoid Them
  9. 8 critical lessons leaders need to emerge from the COVID-19 crisis (and one that will surprise you)
  10. Lessons from Tesla’s Approach to Innovation

Hosk articles

Dynamics 365

Coronavirus/Covid-19

“Because it’s not a matter of if it’s gonna happen again — it’s simply a matter of when it’s gonna happen again.”

Quotes

“Don’t judge each day by the harvest you reap but by the seeds that you plant.” -Robert Louis Stevenson
“Do not go where the path may lead, go instead where there is no path and leave a trail.” -Ralph Waldo Emerson

Selected HoskWisdom

  • Solutions group customisations which can be easily moved to between environments but with what Microsoft gives with one hand they punch you in the face with dependencies issues with the other 🙂 #HoskWisdom
  • A wise Hosk once said, there is more to life than SSRS reports #HoskWisdom
  • Good development is simple, but not simplistic #HoskWisdom
  • If you don’t have any new ideas, update your old ones #HoskWisdom
  • Don’t develop with a fear of being wrong, develop with the knowledge you can make it right #HoskWisdom
  • A lack of skill becomes a problem when it’s combined with overconfidence #HoskWisdom
  • Noise cancelling earphones have become mandatory in my mission to work and home school the kids #HoskWisdom
  • A book can disrupt our habits of thought #HoskWisdom
  • Most discussions involve lots of taking but little learning #HoskWisdom
  • Many can give a quick answer, few can ask a good question #HoskWisdom

Follow the hastag #HoskWisdom or follow me on twitter BenHosk

Quote from current book(s)

Simple Habits for Complex Times: Powerful Practices for Leaders

The questions you ask will tell you a lot about the way you’re seeing the world at that moment in time. Jennifer Garvey Berger,, Keith Johnston 

The Hosk — last 5 good books

Don’t deny yourself a book, it could change your life #HoskWisdom

Last top 10 article

Check out last weeks top articles — Last top 10 article

picture from here

Dynamics 365 and ALM/DevOps Information to get you started

ALM takes the boredom out of development #HoskWisdom

ALM and automated release management has moved from a nice to have to a must have for enterprise projects in Dynamics 365. The more developers you have working on a project the more important setting up ALM and release management. ?Without ALM you will waste hours manually deploying and having merge and build problems.

There is an investment in time to set it up and learn about ALM tools but the longer or bigger the project, more you use it and the greater the return on the investment.

Start at the beginning

Get your head around the ALM concepts

Application lifecycle management (ALM) with Microsoft Power Platform

White Paper — Solution Lifecycle Management: Dynamics 365 for Customer Engagement apps

Application lifecycle management

You may question if setting up ALM worth the time, this page Application lifecycle management has a healthcheck, read it and score your current setup. The key points Hosk highlights below

You should be deploying managed solutions beyond development

If you aren’t deploying managed solutions, there is a danger the environments beyond dev are out of sync, this can hide bugs and invalidate your testing on those environments.

Environments outside of Dev are to test individual components and how the solution works as a complete system.

Environments should be disposable

You should be able to deploy to a new environment with solutions and data and set it up quickly. Changes should be made in DEV and then deployed to all non development environments.

Source Control

Source control should your definitive version of the truth and all customisations, data, templates and reports should be checked in. You should be able to deploy everything from source control.

Use the Solution Packager to convert your Dynamics 365 customisations into XML files, you can see the changes in detail. Deploying from source control means if your environments get corrupted you can rebuild them easily and quickly.

Solutions are binary files, you can see any changes.

Automated ALM and Release

If it can be automated, it should be automated #HoskWisdom

This increases builds and deployments and finds problems quicker, the more frequently you build and release the sooner you find problems. Fixing problems is easier and quicker in a smaller changeset.

Developers are expensive resources, don’t waste their time and enthusiasm manually deploying solutions or wasting time fixing build/release problems because it’s not done often.

The fewer manual steps you do, the less mistakes you will make releasing updates.

Articles to get your started

I’m hope you have read some of the material above and you are now itching to get started, If you have skipped read this page Application lifecycle management (ALM) with Microsoft Power Platform

Read the two articles below

Overview of tools and apps used with ALM

Scenario 0: ALM for a new project

The articles below give step by step instructions to setup an ALM process. The best way to learn is by doing

Video’s

Release Management

Source Control

Solutions

Solutions are core part of deploying your customisations and organising your the development team.

DevOps books

There are lots of resources available online and videos to watch. Technology books can go out of date quicker than they can be written. The three books below are about the theory and give you a deeper understanding of DevOps.

The two books below are fiction, showing you how DevOps can help a business and the pain you might experience trying to implement it

Conclusion

ALM is worth the investment because it’s something multiple developers on your team do every day. ALM increases build and release frequency, enabling you to find problems faster in smaller changesets.

ALM will set standards on your development process and increase quality.

Once the ALM and release management is set up, you will benefit it every day and you will wonder how you ever did without it.

Woohoo - You can query Dynamics 365 (CDS) with SQL….again

When was the last time you heard anyone getting excited about SQL? #HoskWisdom

 

It’s a crazy world when Microsoft announces NEW functionality of being able to Use SQL to query data in CDS and the Dynamics/Power Platform community get excited about it.

Some things go together to make something beautiful,

  • Strawberries and cream
  • Chaz and Dave
  • Nerds and computers

Now after a lengthy absence we have SQL and Dynamics 365, back together

I was trying to think back when I wrote my last SQL statement, I’m guessing it was with on-premise Dynamics project in 2013. Before then I remember spending 2 days trying to format an SSRS report.

This made me realise there was more to life than SSRS reports

What is SQL back?

Microsoft announced that there is an SQL data connection available to the Common Data Service. This connection provides read only access to entities.

Be aware is a preview, soit might break and there might be bugs.

Read more here — Use SQL to query data (Preview)

You can query CDS with SQL Server Management Studio. Wow, I haven’t used that beast for a while.

Other interesting points

The security is based on the Common Data Service logins.

Supported operations

  • Filtering
  • Unions and Joins
  • Count & Max
  • Select
  • Batch operations

What won’t work

  • Updates
  • Inserts
  • Deletes

Anything that modifies data will not be allowed.

Non SQL data types won’t work (makes sense)

  • Binary
  • image
  • virtual
  • file
  • xml

FetchXML no more

FetchXML can be a pain but I was surprised by the positive support for the ability to integrate CDS with SQL queries. SQL is good but writing SQL queries doesn’t bring joy to my heart.

Why didn’t Microsoft create this or an SQL emulator years ago when Dynamics 365 went online, this would have made it easier for people to transition to Dynamics online, particularly the report writers.

SQL is more powerful than FetchXML and its easier to join tables. It’s useful to query the database to diagnose problems.

I don’t worry about what’s in the Dynamics database much anymore, I use it as a service and let Microsoft deal with it. The disadvantage of letting Microsoft sort out database issues, is after raising a support ticket it can take Microsoft a while to resolve the issue.

The last few premier support tickets I have raised have been resolved quickly and the engineers knew their stuff (but that’s not common in my experience of raising Microsoft support tickets).

SQL 4 CDS tool

I attended D365UG Birmingham virtual meetup and during the a talk from Matt Beard and he mentioned SQL 4 CDS an XRMToolBox plugin which gives you a SQL server management studio type interface created by Mark Carrington

I installed the app on my XRMtoolbox and its easy to use and has a nice autocomplete functionality.

It shows you the converted FetchXML statement from your SQL query and it allows you to delete data from Dynamics 365!

I encourage you to download and try it, rarely have I seen an XRM plugin that is so easy to use. It’s useful to have a tool which can query data in Dynamics without using the advanced find because Microsoft hides some of the entities and fields.

Replicate Dynamics to Azure SQL

An alternative to write SQL queries with Dynamics 365 is to replicate your Dynamics 365 database to an Azure SQL database using the Data Export Service. I discuss this in the blog post below

Dynamics 365 and replicating to an SQL database for reporting

other reading

 

How will IT projects change when the lockdown ends

The only way to make sense out of change is to plunge into it, move with it, and join the dance. Alan Watts

After much of the world has been in lockdown for the last month or more, the curve has been flattened and plans are being made to reduce the lockdown, go back to work and restart the economy.

What will it be like? Can we go back to normal until everyone is vaccinated or we get to herd to immunity.

Let’s imagine

The government will ease the lock down and non-essential work as long as

  • you can social distance at work
  • Anyone with symptoms will self isolate
  • if your job needs to close contact, you will need PPE or other protective measures

There is a probability that there won’t be a vaccine, there is no vaccine for SAR’s. Reading Bill Gates article What you need to know about the COVID-19 vaccine. The fastest ever vaccine was created in 5 years. They hope to save time by removing red tape, starting building manufacturing capacity now and with more projects it increases the chances of one or more being successful.

People are optimistic, but what is the outside view The outside view — how long will it take to create a vaccine for Covid-19?.

We might have to live and work with the coronavirus for the foreseeable future.

IT Projects

It’s likely the guidance will be if you can work from home, you should. Many industries have shown they can cope with everyone working remotely. This will be the safest way to work and reduce the spread of coronavirus.

We can deliver IT projects,

Understanding the As IS

  • Screen shares of using existing software
  • Process maps can be created
  • Online work shops to discuss existing functionality

Gathering requirements

  • High level requirements are created for bid process
  • Workshops can be done via online meetings
  • User stories created, assessed and signed off by both customer and supplier

Development

  • User stories can be developed
  • Meetings and progress done via teams/slack or alternative
  • Test scripts written based on stories and tested when development finished
  • Demo the functionality at the end of the sprint
  • User can try the system and give feedback

Setting up environments

  • Configuration of IT systems is already done remotely
  • Environments are commonly cloud services or configured on Azure/AWS or Google.
  • Remote access can be setup and infrastructure is configured

The difficulties working remotely will be creating the relationship with the customer and collaborating is more difficult. Projects can and will be delivered remotely or with reduced contact.

Remotely working has been on the increase, Covid-19 has accelerated companies digitisation plans to the point they are no longer plans and are now a reality.

Effects of lockdown

Businesses will open up, but they will need to implement social distancing. This will reduce the capacity of many businesses.

Shops can open with a reduced number of people in the shop at the same time. If you are a pub, you can do takeout and maybe you could have a quarter capacity with table service.

Airlines will be severely hit, people won’t feel comfortable travelling and would need to reduce capacity to a half or a quarter. Will this make enough money for airlines?

The businesses that can work remotely will work remotely.

Will schools go back? it will be difficult for the economy to restart if parents have to stay at home to look after their children. This isn’t just availability of schools and nurseries because many parents will be worried to send their children to school.

Governments will say the economy is back open but there will still be many people who will be scared and won’t embrace the working with the virus.

The new normal

If we assume that 2019 was normal then we won’t get back to the 2019 levels of normal for potentially years. The world will have to learn to live with Coronavirus for the next year(s).

The world will go at half speed for much of the economy. It will drive with the handbrake on. This will cause many businesses to reduce their wage bill and reduce staff. The unknown will cause business to conserve cash and reduce spending on recruitment, marketing and other expenditure. This will add further pressure on the economy.

Talent

There will be many people made redundant because companies need to cut costs and staff are one of the biggest costs.

This is an opportunity to hire good people for the companies who flourish in this environment. The recruitment process will mostly done remotely and face-to-face interviews could be cancelled for some time. This makes hiring more difficult because body language plays an important part in creating a positive relationship.

Talented people who would usually be unavailable might consider moving if you can offer excellent opportunities and more safety.

An interesting article — now is an unprecedented opportunity to hire great talent

IT Projects

IT projects can be delivered remotely and many companies will need to upgrade their existing system to enable staff to work more effectively remotely. So there will be opportunities with companies speeding up their digital strategies but on the flip side there will be many companies conserving cash and reducing expenditure.

IT Projects could be stopped without warning and budgets will be tight. There will be opportunities for digitisation and in industries that are thriving in the new society that will need to leave with Covid-19.

Why are you so busy? And what can you do about it?

“It is not enough to be busy, so are the ants. The question is: What are we busy about?”– Henry David Thoreau

Whenever you ask someone how they are, they often reply busy. Everyone is busy, to-do lists grow longer each day, meetings take up half the day, and that’s before any problems appear from now where to cause disruption.

What about if I asked a different question?

Are you productive?

Being busy makes you feel useful but are you using your limitation time doing the tasks that will bring the most value. Ants and Bees are busy but they have to be busy to survive. Being busy isn’t enough to bring long term gains to your project or career.

Being busy is like treading water, it keeps your head above water but it doesn’t take you anywhere.

Army ants if they lose the pheromone track, will blindly follow the ant ahead. This can lead to ant mill, which is where ants get stuck in a circle and will eventually die of exhaustion. This minor version of this can happen at work, where you lose sight of where you are and get caught up doing tasks and being busy. 

It’s time to pick your head up and make sure you are heading in the right direction before you lose motivation and become exhausted.

Be less busy

The first step in understanding why you are busy is to understand what you are doing. Reasons for being busy.

  • Doing tasks you can delegate or other people can do
  • Tasks which are the responsibility of someone else
  • Habit
  • older priorities

If you don’t protect your time and prioritise, you work on the priorities of others, at the cost of your priorities.

To get a project moving forward, I did my job and another role because a person wasn’t doing their job well. It was difficult to give those tasks back; the work was being done.

When you do the work for someone it’s a short term fix because their performance is hidden. If someone isn’t doing well in their role, they can improve their skills (training, mentor, help), put in more effort or move to a position they will enjoy and feel motivated to do.

When you see a problem, stop and think whose problem is this? If it’s not your problem, highlight the issue and help the person but don’t do it for them. Help them learn to fish, don’t just give them the fish.

Saying no is a superpower, you need to understand your priorities and your responsibilities. Don’t overload capable people, create and train more.

Just because you can do something well, it doesn’t mean you should. If it fits with your goals, great but make sure you think before you say yes. You have a finite capacity, use it on the tasks that matter most to you.

Doing it yourself

One reason to be busy is being delegated tasks, another is not delegated tasks. A trap newly promoted employees fall into is doing too much of the work themselves because they trust their output. Before long they find themselves overloaded and their team with spare capacity.

If you can delegate, you should delegate

In the short term delegating allows you to focus on more important tasks and in the long term it develop other people. Long-term benefits cost you in the short term because you need to give more help whilst the person learn and develops the skills needed.

Growing people helps the career of everyone, as a team you will be able to do greater things.

Think long term

To get somewhere fast, know your destination, where your career is heading, so you can get the skills, knowledge, experience and relationships you require.

Once you identify your long-term goals, you will see opportunities to work towards them.

Visualise your future role, you need to work towards being that person today. We can lose motivation because it’s not always enjoyable doing things we aren’t good at. Theory helps us improve, but the fastest way is by doing and learning from the feedback.

You don’t get to be a talented programmer by reading/watching about writing code, you become a brilliant programmer by writing lots of code and reading/watching.