When you are caught in the middle of “which technology do we choose” to develop this application, and when the choice is between Power Platform and custom development, there is rarely a straightforward answer, but there are lots of considerations. Why don’t we go over some of them at least.
There is no licensing in the custom development world
Power Platform in general has a very thorough licensing model. Ultimately, there are lots of features available out of the box, but, this way or another, they have to be licensed, and, more often than not, it’s the end users who are supposed to be licensed. Resource consumption is, usually, covered by those licenses, though.
When talking about custom development, licensing may often come in a different form. You have to pay for the server resources, hosting, various UI components, theme customizations, storage, etc. It’s not that you can always write off those licensing costs, since they can also be significant.
Power Platform can tap into an unlimited pool of citizen developers
Power Platform has always been promising low-code development. It does deliver on that promise, but it’s not as if anyone could just go their and start development. Technically, anyone can. Still, not everyone will be able to produce a useful application – that still requires time commitment, there is still a learning curve, there are tricks to learn, there are best practices to follow, there is testing to do, there is application management, etc.
However, Power Platform development is somewhat more user-friendly, and it takes away the need to learn some of the regular development patterns / approaches / etc. For example, you wouldn’t be setting up database indexes, you wouldn’t be creating interfaces and abstract classes, you would not need to know about factories etc… you can basically think in terms of user interfaces and workflows when doing low-code Power Platform development.
That said, business users usually have their own priorities (business and personal), and, for the most part, they can’t be that easily turned into citizen developers.
Developers, on the other hand, can feel very constrained when they are asked to use low-code development where possible (and, sometimes, where not).
Ultimately, that often means your pool of developers is not, necessarily, as deep as you thought it would with Power Platform.
Power Platform = Low Code
This is an interesting one, really. We’d often be talking about Power Platform assuming it’s low-code development, but, in reality, there are tools professional developers can use to extend Power Platform.
Here are just a few examples:
- Javascript can be used to customize UI or to even created a completely custom UI. Mind you, that undermines the idea of having Power Platform there in the first place, since doing this kind of custom development throws away our ability to do quick prototyping / development with the out of the box tools available in Power Platform. However, technically, nothing prevents you from using React to implement a piece of custom UI to cover specific functionality
- Plugins can be used to customize Dataverse on the server-side. Essentially, plugins are pieces of .NET code running on the server
- Power Automate can be used as an orchestrator, it comes with a lot of default connectors, but it can be extended with custom connectors if needed
This all comes with the out-of-the-box features, such as:
- Dataverse security
- Ability to source external data from the Virtual Tables
- Ability to throw in Virtual Agents
- Ability to throw in Power BI
- Ability to stand up a model-driven app quickly, even if it does not always have perfectly fit UI
- Ability to establish web presence with Power Pages (former portals)
- Ability to distribute canvas apps to the mobile devices of your users
Etc. Look at it from the custom development perspective, and you’ll see how Power Platform may look as a very attractive alternative IF you don’t try to turn it into a “black vs white” comparison. It might well be a platform where low-code and pro-code development live together, while making sure that all the benefits of Power Platform are still around. With that in mind, a pro developer can do a lot in terms of user adoption where specific UI customizations are required, for example. Here are just a few examples you could think of:
- Custom search functionality to cover specific requirements
- Custom PCF components to cover complex behaviors and/or theme customizations
- Even developing a custom web portal would not be unheard of (with the Dataverse being the backend)
Power Platform development vs Custom Development is a valid comparison
As I mentioned above, Power Platform development can incorporate lots of custom development. With the custom portal example, there is another scenario where custom development can rely on some features of Power Platform. It’s not as if Power Platform were VS Custom Development. The overall architecture, approach to app development, and the tools being used can vary, but, in general, Power Platform development can still be very custom, and it can incorporate a lot of pro code development.
Where I personally find Power Platform troublesome every now and then is when it starts to overpromise.
Yes, Power Automate can do a lot of process orchestration. But no, it’s not that easy to manage as the flows start getting more complicated, and, no, it’s cannot run in real-time. Perhaps you do need a plugin after all.
Yes, advanced find can find almost anything and almost anywhere in Dataverse. But no, you can’t necessarily see where that data was found (can’t bring in child records into the view), so you may have to click through a few links. If that’s a problem, you may need to create a custom search window with Javascript.
Yes, Dataverse can store lots of data. But no, you can’t easily update all of it in one go using a SQL query, so you may need to start thinking of how to optimize those expensive mass updates.
Maybe those ones above should be covered in another fact check post; however, this is what makes Power Platform somewhat tricky in my opinion. There are features everyone can see easily, and there are limitations which are not always obvious from the beginning – that definitely creates project risks in the long term. Although, in the end, if you are aware of those limitations, you can usually plan around them and bring in custom development where needed.