With the rise of the citizen developer, the need for IT to source easy-to-use tooling has become paramount since citizen developers are rarely coding experts.

Citizen developers are an attempt by enterprises to empower their Subject Matter Experts (SMEs) while also promoting innovation. The trend is being driven by two concerns:

  • The availability of skilled developer resources, which are always at a premium in any organization.
  • The length of time it takes coders to bridge the gap between subject matter expertise and software requirements, which too often ends up imperfect anyway.

The thinking is that if SMEs can encode their expertise in applications by becoming citizen developers, the result should benefit the organization, despite the additional burden it often places on IT.

One of the most common types of citizen developer is that of the data scientist. While they work primarily with the Python programming language, few data scientists would characterize themselves as Python programmers. Rather, Python is simply a tool that allows them to get their data analysis, scientific computing, AI or Machine Learning work done. 

But just like citizen developers, data scientists must work with runtime environments approved and sanctioned by IT, who are generally looking for a single hand to shake: one provider that can fulfill both their citizen and enterprise developer needs. Unfortunately, that kind of “simple but powerful” quality is typically more prevalent in the marketing of a solution than the actual use of it. 

Trying to find a “one size fits all” solution can be difficult. You’ll want to include a representative from each internal team to test drive the tool in order to ensure that it can fulfill a wide range of use cases from the novice to the power user. But what’s good in a sandboxed data science environment rarely scales to production use. Developing a data analysis routine is one thing (a mortgage risk calculator, for example), but it’s quite a different task to implement that routine as a software solution (ie., an online mortgage qualifier). 

The result is too often a recommendation to implement multiple tools – one for each user type – or else compromise on a substandard solution, which can mean: 

  • Multiple versions of Python for IT to support
  • Extra work to abstract away complexities or shortcomings
  • Workarounds to integrate third party tools, and so on

This blog considers two providers of Python aimed at citizen developers; Anaconda and ActiveState, to see which may be able to serve both use cases with the fewest compromises.

Python That Enables Developers & Data Scientists

One of the key selling points of Anaconda for citizen developers is its ease of use. By bundling a number of the most popular data analysis and data visualization packages in a single distribution, data scientists have ready access to whatever they want to install in their current project, either via their command line tool (conda) or (even better for newbies) via the GUI (conda Navigator). And conda is a fully capable package manager, able to install not only Python packages but C, Fortran and other binary dependencies that are a staple of data science packages since they speed up numeric computation. 

Unfortunately, such an approach raises a number of issues:

Anaconda Drawback: Dependency Management

Citizen developers are generally unaware of how package management works, especially when it comes to a package’s dependencies. As a result, they don’t understand why installing or updating a single package can result in a cascade of changes that Anaconda will typically take a very long time to resolve, or perhaps won’t be able to resolve, which may leave the user with an unworkable environment.

ActiveState takes a different approach. While they also provide a command line tool (State Tool) for power users, the GUI will walk newbies through the changes that occur when a package is installed or updated. The UI is visually instructive, letting you know exactly what changes are going to happen (both at the package and dependency level) BEFORE you commit to them, and resolving any conflicts that may occur so you don’t end up with a corrupted environment. 

To work around Anaconda’s dependency management issues, IT usually encapsulates the environment in a Virtual Machine (VM) or a container so they can quickly spin up a new version. This adds more work for IT, as well as more complexity for citizen developers. Worse, unless these containers/VMs are periodically checked into a version control system, restoring the original environment loses any changes citizen developers may have made. 

ActiveState takes a git-like snapshot of the Python environment every time a change is made. Restoring a previous version is as simple as clicking “Revert” within the Web GUI. 

Anaconda Drawback: Package Not Available

While Anaconda ships with hundreds of the most popular data science packages, it can be confusing for citizen developers when a package they need is not available in their Anaconda distribution. While Anaconda (the company) will, for a fee, build the package in a few days/weeks, it’s often cheaper and easier to check whether the community has already built it. 

If neither of these paths work, citizen developers will need to adopt Python’s default package management tool (pip) and install the package they require from the Python Package Index (PyPI). Unfortunately, installing a package with pip can bring along dependencies that conflict with existing Anaconda installed dependencies, breaking their environment.

ActiveState effectively solves these issues by mirroring all of PyPI, including all of the most popular data science packages, so users rarely experience a missing package issue. Daily ingestion of new packages as they are published on PyPI means ActiveState’s catalog of Python packages is always up to date, compared to the Anaconda distribution, which is infrequently updated. Additionally, ActiveState maintains a deep catalog of previous package releases, ensuring you can always reproduce an older environment. This addresses an issue with Anaconda where confusion can arise when a package suddenly becomes deprecated.

Anaconda Drawback: Production Readiness

When citizen developers have finished their work, they typically hand it off to enterprise developers to bring it to production. But enterprise developers are unlikely to work with Anaconda Python given its large footprint that results in high RAM consumption, making it extremely slow when it comes to loading, implementing changes, or even switching between multiple environments. Miniconda is preferred since it starts with very few pre-installed packages, but enterprise developers may find it overly opinionated, and will undoubtedly also run into limitations when it comes to package availability.

ActiveState makes it a point of pride to support both citizen developers (typically via our Web GUI) and enterprise developers (typically via our CLI, State Tool). The GUI’s wizard-driven approach to creating a Python environment simplifies getting started, as well as making modifications to the environment at any time. And since ActiveState Python defaults to installing into a virtual environment, dependency conflicts are avoided. 

But for ActiveState, being able to go from sandbox to production is as simple as supporting a single command to check out and start working in an environment (state activate) for citizen developers, while providing enterprise developers with more sophisticated capabilities, such as the ability to checkout multiple environments (state checkout), and switch between them at will (state use). And like conda, State Tool supports not only Python, but also the C, Fortran, Rust and other binary libraries common to data science tools.

Conclusions: Python For Citizen Developers

Citizen developers are an idea whose time has come. With languages like Python and coding tools such as the AI-enabled Copilot making programming easier than ever, citizen developers are finally empowered to translate their expertise into digital assets. 

But given that citizen developers are business experts rather than technology experts, the responsibility for sourcing and supporting solutions for them typically devolves on IT. While modern tech stacks include multiple open source languages, and each language will require multiple tools, IT would prefer not to support multiple language ecosystems, especially if interoperability has been shown to be problematic, as with Anaconda.

ActiveState provides an alternative to Anaconda that can fulfill the requirements of both citizen and enterprise developers:

  • 100% compatible with open source Python.
  • A Web GUI that dramatically simplifies creating and working with Python environments for non-professional developers.
  • A powerful command line interface (State Tool) that supports the way enterprise developers prefer to work.

In other words, a single solution that can be used from sandbox to production without compromise.

Next Steps

Read about the other advantages ActiveState can offer organizations adopting Python in our Datasheet: ActiveState Python vs Anaconda: 8 Advantages