Friday, 13 October 2017

PowerApps: 3.5 months in the life of…

In the last few months I've started using PowerApps, part of the growing list of features in Office 365 (surely the best cloud service since ever). My first impression was of high-quality beta software. Some features felt like they hadn't been fully realised and the programming model was somewhere between MVVM and Excel. A lot of features had changed since its inception, as evidenced by the amount of content that was no longer valid. However, once I started to use it in anger I noticed that the features and documentation grew and evolved rapidly. Not only that but I've found the PowerApps team to be helpful and communicative.

I won't lie; the first few days were spent turning the air blue in frustration at trying to get things done - it seemed like the productivity value of a feature was inversely proportional to its intuitiveness - but once you know how to do something it's always very quick to do again. Basically, there are very few steps to doing some very powerful things - the tricky bit is knowing the steps. No doubt as the pool of community documentation grows the learning curve for new users will ease.

As a cloud-based alternative to Access and/or dumb SharePoint lists, PowerApps is a compelling piece of kit. However, my personal opinion/prediction is that PowerApps has the potential to be the best platform for delivering LOB apps to mobile devices as a mashup tool consuming web APIs. This is because, out of the box, it takes care of several of the biggest problems in getting UI apps into production:

  • Authentication
  • Device-specific screen sizing
  • Hosting and deployment

Not only that, but for a lot of Office 365 Enterprise Plan users, it also provides you with a securable tabular data store in the form of the Common Data Service. My personal preference is not to use CDS because coming from a SOA and SQL Server background it just has too many limitations. But as a canonical data source with table and column level permissions it compares very favourably with tools such as Microsoft Access. As a former/sometime Access developer I can safely tell you that Access will never die, cockroach of the database world that it is, because it's so easy to use and share - despite its programmatic limitations and the storage constraints of the Jet database engine. But for the Enterprises that (wisely) do not disable PowerApps and CDS for the end users, Access just isn't as securable and it can be too easily replicated (like a Git branch) so that data becomes corrupted through human error - never mind the propensity of the Jet engine to corrupt its own data.

The reason I think that APIs are better for PowerApps than connecting directly to tabular data sources is because, although PowerApps provides a layer of validation, once a connection is made available to a user there is nothing to stop them using the connection directly. So you can bypass all the validation that PowerApps puts in place if you're a bit tech-savvy. For apps like asset registers and the like this probably doesn't matter, but for expense approval apps it could be a bit of a problem. With a custom API you can be assured that all data in your back-end database (to which your end users have no access) has been validated against your business rules. Also, despite the expressiveness and power of the formula language, some things are just easier done in "proper" code.

For illustration: my first proper application in PowerApps was a debt management tool for a utilities retailer that I finished at the end of September 2017. I created a prototype using CDS as a back-end, which took about a week but was for a smoke-and-mirrors demo. The production app was developed against an ASP.NET Web API hosted in an Azure App Service with a SQL Azure database, which took me about six weeks to develop and get into production. I worked on a team 7 years ago that developed a similar application in WPF with a WCF/SQL back-end for another utilities provider, which took 6 developers 3 months to build and another 2 months to get hosted and into production.

With my BI/DW developer hat on I see PowerApps as a compelling alternative to the otherwise-indispensable-but-awfully-implemented mess that is SQL Server Master Data Services. PowerApps would be perfect for capturing and centralising all that miscellaneous-but-mission-critical organisational data that accountants are so fond of keeping in Excel spreadsheets on random file shares.

Give it a try - the PowerApps team at Microsoft deserve a big pat on the back for this one!

No comments:

Post a Comment