There is nothing to writing code. All you do is sit down and bash you head against the screen for 7.5 hours until you get it right #HoskCodeWisdom

Being a developer is hard, being a good developer is very hard and being a bad developer is merely difficult #HoskCodeWisdom


Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted.  Code is the enemy – Skrentablog

Microsoft are talking about the citizen developer, improving PowerApps and Flow. Should developers and companies invest time and effort to master PowerApps and creating no code/low code solutions.

Customers question the levels of customisation and the cost of creation and maintenance of code.  Everyone line of code costs to create, maintain and extend, code has a yearly cost.

With no code solutions like Flow and PowerApps, Azure manages the lifecycle and performance, leaving the developer focusing on what they should do.

  • Security
  • Scalability
  • Performance
  • Retrys
  • Lifecycle
  • Memory

No code makes the skill level needed to create and maintain lower but how much knowledge do you need to create PowerApps?

Simplifying creating customisations is like moving from C to C# and memory management/Garbage collection. You get better performance doing it yourself but takes more skilled developers but increases complexity in creation and maintenance.

It’s simpler to let a computer manage memory than write the garbage collection routines yourself.  Delegating garbage collection gives the developer more time to focus on creating business functionality code and less time focused on creating plumbing code (which enables business functionality code)

As a Java developer, I hated doing framework code for security, database writing, passing making web pages.  These plumbing code enabled business functionality but took time to write and created extra code to maintain.

When I saw Microsoft Dynamics CRM 4 it was amazing, which is impressive because Dynamics CRM was not amazing!  CRM had lots of out of the box functionality, this meant creating less framework code and I focused on creating customisations to deliver business functionality and Dynamics CRM did the framework and security functionality.

The framework benefits of no code solutions are great, so why isn’t everyone using them?

Managing complexity

I have never worked on a project which didn’t need a plugin or JavaScript/C# code, I imagine this is because the Dynamics projects I work on are larger and need developers.  There are lots of smaller Dynamics 365 projects which can use out of the box functionality.

I work on complex projects with complex requirements, out of the box functionality is limited to the flexibility of the solution it can create.  Can the users change their processes to fit with the out of the box process or do they need custom validation and functionailty.

Requirements and validation are bespoke to each business. A solution should help people do their job, a good solution will automate and validate for users.  Technology should not dictate solutions, it should enable solutions.

When a user selects a field on a form, it should set other values on other fields or validate values, update other fields in the solution. Automate the creation of data, speed up processes and ensure quality data.

These are bespoke to each business but there lies the value. It’s complexity of business requirements which requires JavaScript and plugins.

Design patterns are common patterns to common requirements, can workflows achieve the common problems addressed by design patterns?

Workflows struggle to deliver complexity, they are limited to simple tasks.  Anyone who has created a complex workflow in Dynamics 365 knows they are unmaintainable beasts, as is trying to create smaller focused ones and intertwining them is also difficult. This is due to the workflow editor and trying to visualise complexity with workflows.

Why is hard to deliver complex requirements with workflows, lets understand what does complex code does?

  • Retrieves, complex retrievals possibly using multiple records
  • Sorts, filters
  • Updates
  • Updates and creates related records
  • Validates
  • Deletes

Code should not be complex, it should be focused steps put together. Codes ability to do complex things and combine them makes it powerful.

GUI customisations struggle (Workflows, Business rules) to do complex solutions.
Workflows cannot sort or filter, they can retrieve records which have a direct link to the entity being processed.

Business rules and workflows struggle to validate multiple fields at once and can’t combine fields.

Strengths and weaknesses

The citizen developer is being mentioned, PowerApps and Flows are being seen as the future companies and projects should be heading.  Is this being asked for by customers or pushed by Microsoft?

Flows connect different systems and data sources, they connect and move data between systems/service.  This is mapping and moving data,  standard repeatable process.

PowerApps, Workflows, Business rules are simple customisations but struggle to carry out complex customisations.  When you mix multiple simple customisations, you can end up with a complex customisations which is very difficult to manage.

PowerApps work for one simple app but 500 PowerApps? will citizen developers understand over lapping PowerApps integrate to create one solution.  Will Citizen developers manage PowerApps in different environments (because despite what Microsoft sells, it’s not good practice to make changes directly in production).

These are the things Software Engineers do

  • Unit tests
  • Data Set
  • Integration
  • Design and create simple designs
  • Security
  • Performance
  • Overlapping customisations
  • Naming
  • Create long term customisations which can be maintained and extended

Postives of No Code

There are positives of no code and in certain circumstances it could be the best choice

  • Simple customisations can deliver simple requirements
  • Lower level of knowledge\skill needed to build no code solutions
  • Services manage performance
  • No servers needed
  • Lower maintenance

Code offers solutions which can match the needs of the clients but expensive skilled software engineers need to create, support and maintain it.   The increased flexibility of code costs more.

No code solutions can deliver simple needs and smaller, less complex projects.  The benefits of reduced cost and complexity increase the longer the solution takes to create and maintain.

Comparing the cost of no code/low code and bespoke code should be done over years.  Bugs can hide in both but code means bugs are harder to find and fix.


There will be demand for code because complex requirements need complex solutions.   Code allows you to create solutions to fit companies working practices, the custom validation and automation can deliver big productivity gains.

No code cannot deliver complex requirements but companies can simplify working processes to align to out of box features and no code solutions.The answer can be to have both working together.

The problems happen when you scale and have multiple code/no code components.   You get overlapping, integrating and conflicting customisations and the solution is difficult to understand, manage and extend.

It will be interesting to see where no code solutions lead.  So far the low code solutions don’t seem straight forward and we are still waiting for the functionality to catch up with the Microsoft hype.  When the landscape changes there are opportunities for developers to become experts

further reading