In the past, software development was the realm of experts (some might say, geeks). Only trained professionals (some might say, brainiacs) knew the difference between Java and JavaScript, between a dictionary and an array, or between == and ===. Building software required specialized skills, from knowing how to code, to solving problems logically, that only developers (some might say, nerds) possessed. But apparently, this is changing.
Some no-code and low-code tools promise that anyone can build applications. Not software developers, but citizen developers are supposedly taking over application development.
Software developers vs. citizen developers: what is happening to the traditional software developer role? And will citizen development really be the future of application development?
What Is A Citizen Developer?
The typical definition of a citizen developer is a non-technical person who develops applications.
However, this definition almost seems to be an oxymoron: “non-technical application developer”. And the reality is that in the past, non-technical people simply did not develop applications. So, let’s a closer look at who these citizen developers are, what their skills are, and what they have done before they started building applications.
The Characteristics Of A Citizen Developer
- Job Role & Skills: A citizen developer works in a business role, such as HR, Finance, Sales, or Marketing, and does not know how to code.
- Existing Job Scope: Their existing job scope does not include application development. They are not compensated for building applications, it is not their main job, and never has been. This means that turning a business professional into a citizen developer requires changing their behavior: people that have previously only consumed software are now supposed to produce software. This might sound trivial, but remember the last time you were asked to take on additional responsibilities in your job (likely, without additional compensation)? Yep.
- Training: To turn a business professional into a citizen developer, new incentives or at least structured on-the-job training need to be provided.
- Development Style: Because citizen developers have only ever consumed applications, they easily understand the front-end. They prefer building applications visually, where the link between what is being built and how it works is immediately visible.
- Use Cases and Users: Citizen developers build applications that make their own work easier. Typical use cases for citizen developers are small, departmental applications, such as going from Excel to app. They are the builders and users of their applications.
- Development Process: Citizen developers do not know about the software development lifecycle. They will build applications ad-hoc and without necessarily following proper processes.
- Accessing Data: The typical citizen developer uses off-the-shelf software systems to get their job done. They access data in SaaS applications, Google Sheets, or Microsoft Excel.
- Storing Data: Spreadsheets are what a citizen developer is comfortable with. Relational databases? Not so much. Citizen developers believe that application development on top of a spreadsheet as a system of record is a valid approach (sorry, AppSheet, but it is not).
- Tooling: A citizen developer’s application development process is typically not supported by other tools. Their toolbox does not include things such as version control or bug tracking.
To sum up: a citizen developer is a business professional turned application developer, that does not possess (front-end or back-end) software development skills, and who primarily builds applications visually for their own use.
What Is A Software Developer?
Software developers: the wizards of the digital economy. Software has transformed how people live their lives, and how businesses operate. But who are the people behind the code? Let’s define the characteristics of a software developer.
The Characteristics Of A Software Developer
- Job Role & Skills: A software developer works in software development and knows how to code. It is a skill they have acquired and honed over time.
- Existing Job Scope: Software developers are compensated for building applications. Application development is their main job. They have always produced software, primarily for consumption by someone else.
- Training: Software developers are required to stay up to date with the latest technologies, a task that is getting tougher every year because technology is aging faster than ever. However, for a lot of developers, software is their passion, so keeping up with technology comes naturally to them.
- Development Style: Unlike citizen developers, software developers know that the front-end is just the tip of the iceberg. The real magic happens in the back-end. They understand that the back-end is the foundation of a successful application and that the front-end is just a visual representation of the underlying data structure and business logic.
- Use Cases and Users: Software developers build whatever is required of them: web applications, mobile applications, or progressive web applications. Inside larger organizations, software developers typically work together with business analysts, who are in charge of gathering application requirements. The users of the applications that they built can be internal or external users.
- Development Process: Software developers follow the software development lifecycle, using project management approaches, such as agile or waterfall. They will build applications in a structured manner, following proper processes.
- Accessing Data: APIs, get, put & post requests, JSON files: accessing data is a means to an end for a software developer. What matters is having a well-documented way to access data.
- Storing Data: a software developer does not care so much about the actual data that is being used or stored by an application, but about the structure and format of the data. They understand the advantages of relational databases over spreadsheets.
- Tooling: A software developer’s application development process is typically supported by other tools. Their toolbox includes things such as version control or bug tracking.
To sum up: a software developer is a trained professional, who builds applications for someone else’s use in a structured manner.
The Risks of Citizen Development
Citizen development is an interesting concept, and I applaud anyone who takes the plunge into application development, regardless of their background or role. But it also comes with risks:
1) Vulnerabilities and security threats: just because everyone can build applications, it doesn’t mean everyone should be building applications.Custom software typically isn’t safe. Even software produced by highly-trained professionals creates exposure to vulnerabilities. A beautiful illustration of just how frequent breaches are is available through Information is Beautiful, which provides a regularly updated dashboard of the world’s biggest data breaches and hacks.
To give just one example, remember the Solar Winds breach from 2020: this was a supply chain attack, where software company SolarWinds’ product Orion was compromised through a piece of malicious code that hackers inserted into Orion’s software updates. Orion is a software solution written and maintained by a professional team of full-time software developers. It doesn’t take much imagination to foresee vulnerabilities in software that is written and maintained by a non-professional team of citizen developers, who (unlike their professional peers) create applications in addition to their day-to-day work.
Without a sound security policy or involvement of cybersecurity professionals, there is a high chance that citizen development increases exposure to security threats and vulnerabilities.
2) Shadow IT: shadow IT describes application development that is happening outside the oversight of central IT.Citizen development can easily lead to a patchwork of homegrown software solutions, which exist outside anyone’s control or mandate. While shadow IT can lead to efficiency gains by encouraging grassroots innovation, the risk is that these small, departmental apps are undocumented, untested, and not under anyone’s proper oversight. Because these applications are not provided by a professional vendor, they may develop a life on their own, where they become business-critical without anyone having a contingency plan for when the application breaks down, or when the citizen developers leave the organization. After all, internal citizen developers don’t provide service level agreements (SLAs) or response times.
3) Maintainability: the third and last risk of citizen development relates to maintainability. Typically, no-code tools for citizen developers use a visual, What-You-See-Is-What-You-Get (WYSIWIG) approach to application development. They try to reduce or eliminate code as much as possible. This contributes to a faster speed of development. But the downside is a loss of control and maintainability.For example, expressing an “if-then” statement in raw code can be much more efficient than building it visually. Even for the very citizen developer who has built an application, it can be hard to go back to an existing application and understand the visual application logic. Reading standard code may look complicated. But sometimes it is in fact the easiest solution to a complex problem. Commonly used programming languages, such as JavaScript, Python, or SQL also have great support communities and documentation. If a software developer encounters a problem, there is a good chance that they can find a solution on StackOverflow. The online community and available support for citizen development do not match the size of the developer community (yet).
Software Developers vs. Citizen Developers: Who Should Be In Charge Of Application Development?
Even though the comparison of software developers vs. citizen developers seems to favor software developers, it’s not all black and white.
There's certainly risk involved in assuming that a business professional who has never developed applications before can build complex and business-critical applications. The reality is that a lot of business professionals cannot even create a Pivot table in Microsoft Excel.
However, there are a lot of non-coders who have a demonstrated interest in coding. Popular coding website Codecademy, for example, has more than 40 million learners. That’s twice the number of software developers in the world. During the pandemic, millions of people decided to learn coding (including yours truly) through online bootcamps and MOOCs.
Would these people be considered citizen developers? Certainly not, based on the characteristics described above. They have a basic understanding of programming concepts and languages, such as JavaScript, SQL or Python.
Would they be considered software developers? Again, the answer is no: learning full-stack development requires more than a 12-week bootcamp.
These tech-savvy business users present a middle ground in our discussion of software developers vs. citizen developers. Equipped with the right tool and training, low-code could be the best programming language to learn for them to drive business outcomes. And together with professional software developers, they are the best place to start in order to democratize application development.
Originally published at https://five.co/software-developers-vs-citizen-developers/ on November 8, 2022.