Wednesday, January 4, 2017

Microsoft PowerApps + Flow - My opinion on "No code Enterprise App Development"

Microsoft designed PowerApps and Flow for PowerUsers who may or may not know how to write code.
In my opinion LOB ( Line of Business ) Developers such as myself can benefit from this new offering as well.

How?

Time to Market, Yes PowerApps is essentially a closed market,  there is no way to sell the apps you create in PowerApps, they are intended solely for your organization, so your market is your co-workers.

Being the only developer for my department, all design, development, testing, and support falls on my shoulders, this is both good and bad. The average time it takes to gather requirements, to design, to develop, compile user feedback and make improvements depends on the application, for me this typically takes any where from 3 months to over a year before the app can be put into production.
All the while you have to keep up with your other duties, design in new requirements on existing apps where appropriate, take support calls etc... Typical right!

In PowerApps you connect to your data stores through connectors. There are many connectors already available in the PowerApps Portal.

*Not all connectors are shown here, there are many more connectors available and more being developed.


If one of the existing connectors does not meet your needs, then you can create a custom connector by following the guidelines here: https://powerapps.microsoft.com/en-us/tutorials/register-custom-api/

If your data source is an On Premise source you can create a Gateway that will reside on your OnPremise server, at the time of this post only SQL Server and SharePoint are supported.

PowerApps is a NoCode Solution, well sort of.
You can add functionality to your app through Excel style formulas, there are many out the box formulas available, please see: https://powerapps.microsoft.com/en-us/tutorials/formula-reference/ for available functions.

You can create really robust data centric applications fairly quickly, what would have took me at least 3 months in C#, took about 10 days in PowerApps,  I ported 4 apps at the same time in a single weekend, not bragging here, just pointing out the power of PowerApps.

Granted the apps I mentioned above are ports of two of my existing InfoPath forms and one managed code solution I developed with Visual Studio LightSwitch. For the LightSwitch port I connected to my Azure SQL DB instead of the existing OnPremise SQL Server DB, the new PowerApps app UI now interfaces a custom ASP.NETCore WebApi I developed and published to Azure.

The fourth app happened at the last minute, not a recommended design approach, but I wanted to play with the CDS(Common Data Service).

 I had already gathered the requirements on how the PowerApps should work, that's partly the reason why I was able to develop these PowerApps apps so quickly, but even still, I was really impressed at how much I was able to accomplish in a short amount of time.

Compliance
Depending on your company, you have to consider company policies, data management policies, Legal requirements due to Privacy Management Compliance Policies, does your app contain or surface personally identifiable information, some of my app designs have had to go through architecture review boards made up of various technology leaders from other departments including the IT and Legal departments.

Custom code is the number one support ticket according to IT, therefore if you can develop with an out of the box technology the more likely it is your app will be approved, you will not have to have your app go through the architecture review board process.

PowerApps is now Generally Available within the O365 environment. You will need to check with your IT department as to it's availability within your organization.

Support
As mentioned in the last paragraph Custom code generates the most support tickets according to my IT department. One issue is that if you are on vacation or if you leave the company, you have to make sure another developer is able to take over your source code, in reality this does not always happen, especially if you are a one man team or if custom development is farmed out.

No plans yet but if I were to leave the company, it would be relatively easy for someone to pick up where I left off with PowerApps.

Why not Out of The Box Ready Made Solutions
If this meets your needs, great!
We use out of the box applications all the time.
In my experience more often than not, custom development is necessary. Out the box solutions may be missing some critical functionality required by your business and extending these types of apps can take a really long time, you may not have access to the source code, you might have to involve third party developers, depending on your data you have make sure the dev(s) have network access, proper permissions, you may need to make sure NDA's are signed and properly filed, development can be prohibited by the licensing, prohibited by licensing fees, contracts, there are a number of other reasons as to why you cannot modify the Out the box solution whenever you want.

Maintenance
How complex does your app really need to be?  Not all apps need to use managed code solutions with months and months of design and development time behind them.

How do I get started with PowerApps? 

You have to have an O365 Account.

You can build your UI using PowerApps and connect to almost any data source, SharePoint, SQL Server in the cloud or on Premise through a gateway, you can surface data using the prebuilt connectors or through your own custom API, Social Networks like Facebook, Twitter, Yammer, Slack, use the Entities feature in your PowerApps Console etc...
I say almost anything because the list is still growing and it all depends on whether or not you have the proper permissions to the data source of course.

Also if you work with SharePoint, most of my development these days is done in SharePoint, Microsoft announced at Ignite that PowerApps will replace InfoPath and
Flow will replace SharePoint Designerhttps://channel9.msdn.com/Events/Ignite/2016/BRK2051?ocid=player, but PowerApps and Flow are not limited to just SharePoint as mentioned above.

Is PowerApps a replacement for Visual Studio LightSwitch?
In my opinion NO. PowerApps is significantly different from LightSwitch, it's more like InfoPath but without the Post-backs and PowerApps is not limited to surfacing data from just SharePoint.

Another thing is you have to use the Visual Studio IDE to build LightSwitch apps. Building PowerApp apps with Visual Studio is not available at this time, and I have no clue if ever will be.

PowerApps are developed in either the browser on the PowerApps portal, or through a desktop application available for download from the Microsoft store.

Another big difference I see is that your PowerApps production apps are only available from within your organization, there is no way to make your apps available in one of the online app stores for download by 3rd parties at the time of this writing.

There is a PowerApps management console for mobile you can install on either your iPad and/or iPhone, this is available from both the Apple App store or Google Play. The management app provides you access to all your organizations apps that are made available to you in one place, that way you don't have to install each individual application.

I say the apps your organization makes available to you because admins have the ability to setup compliance rules, limit the apps to specific groups and or personnel or enable the app(s) for the entire organization.

Some features are still a work in progress!
Support for SharePoint libraries is not available at this time and I've had some issues with surfacing Images from SharePoint, QR Codes etc... According to the user forums, support is coming, no ETA though.
More information about what works and what does not work can found in the Community forums and the PowerApps website.


References:

Microsoft PowerAppshttps://powerapps.microsoft.com/en-us/
Microsoft Flowhttps://flow.microsoft.com/en-us/



Microsoft PowerApps and Flow Learning Resources

An ongoing list of Microsoft PowerApps and Flow Resources I'll update as I come across helpful resources. Main Sites: https://p...