Citizen Development and the Infinite Cloud
Software tools are becoming outrageously powerful. Developments in machine learning and AI are happening at a ridiculous pace. Research just a few years ago feels almost amateur relative to today, despite being cutting edge at the time. While research and development of these tools is done by specialized technical experts, the end user could be the average person. In between the average user and specialized experts are the citizen developers, also commonly referred to as power users. Some time ago (and still today), these were your business professional spreadsheet wizards writing complex formulas and maybe even some spicy VBA script. But the tools available today extend well beyond spreadsheets and now nearly anyone can build a fully featured application without a developer background. Combine powerful tools with the infinite scalability of the cloud, single individuals are able to do tasks that were impossible a decade ago. In this blog, I will highlight the promises and peril within the interplay of citizen developers and the infinite cloud.
The motivation for this blog came from my impression and conversations that followed the Microsoft Build 2022 conference. While there were a ton of announcements, one that struck me was the Power App Express Design feature that allows an individual to sketch a layout, take a photo, then configure the application with some drop down features. Anyone can sketch or take a photo. Another development is the mind-blowing image generation service DALL-E 2. With nothing but text prompts, an AI will generate a grid of images. Creative minds paired with such a tool may revolutionize design and art in the next decade. We may even see new professions emerge where top creatives thrive as they are able to make the best requests from these AI services.
In a previous blog, I looked at the promise and peril of low code development in relation to technical debt. What has become clear in my mind is that low code platforms very quickly outgrow simple templates or new user-friendly use cases and effectively become development projects. This is the first peril with citizen development. If an organization does not recognize this, they can very quickly find themselves in the modern equivalent of “Excel Hell”. We do not know what we do not know. Citizen developers come from all corners, but without training in proper development practices it is likely that they will not consider development governance practices like source control, environments, integrations, architecture, scalability, life cycle management, disaster recovery, or security.
These skills can be learned but the citizen developer needs to be aware of them. Increasingly low code platforms are baking some of these considerations either on the backend (basic security and backup done automatically) or in a feature like Power BI Premium’s support for development pipelines.
In a perfect world, the individual’s closest to the problem also have all the domain and technical knowledge needed to create a solution. In the real world, many problems are well beyond a single individual’s capacity to understand and as much as hiring managers would disagree, unicorns do not exist. Problems arise when either a solution outgrows the capacity of its citizen developers, or for more diverse teams, there is weak definition of responsibilities between citizen and professional developers. If citizen developers are left to build unrestricted, it is very easy to create a massive amount of bloat, likewise, heavy handed traditional IT controls can limit creativity, development velocity, and agility.
In the world of data analytics there is another peril to be avoided. We live in a world where a single individual, with a few clicks of a button, can procure access to truly monstrous computational capacity. Modern cloud providers often market the cloud for its flexibility and scalability. Ditch the fixed costs and performance of an on-premises data center and only pay for what you use. Sounds great right?
Through the last few years, I have been working towards expanding my data analytics skill set. In that time, I have focused on Learning Power BI as an extension to Excel and more recently SQL because if you really want to make Power BI sing, controlling the entire data pipeline is essential. I do not have a background in software development so what I have learned has come from exploration and tinkering. In this process, I have to say with some hindsight, I have done some ridiculous things. Examples are: DDOS myself with Power Query, bad joins, excessively large tables, wrong data types, unnecessary columns, overly complex DAX expressions, and data flow logic spread across multiple domains. Most of the time I have been learning with local resources so if I do something bad, it will either fail from lack of resources, or take a significant amount of time to compute. With an infinite cloud available at a button click, a citizen developer can just call for more resources. Cloud resources used poorly can be very expensive. Being very strict about application performance is a great way to learn the nuts and bolts of a system.
If we look back when Excel was the dominant citizen developer tool, in many cases the most technical person in the organization was the business professional acting as the organization’s spreadsheet wizard. The same goes for the modern day, the most technical person in the organization might be automating with Power Automate, creating Power Apps, or doing analytics with Power BI. We do not know what we do not know, and with the infinite cloud offering massive opportunity it is extremely easy to use such a resource inefficiently and not be aware. Just because an application works, does not mean it is performant, easy to maintain, and secure.
I am a tinkerer; I love rolling up my sleeves and pushing buttons and seeing the results. What has helped reveal the unknowns have been user group forums, Discord channels, in person community groups, and poking the minds of co-workers. Talk to people, it is ok to not know things.
Be open to learning new things and get good by being bad and improving.