No Code: A Profound Insight For Citizen and Professional Developers
The no code movement is quite picking up steam these days, as you might know. Also, the no code tools, especially the full-stack no code platforms, have come across as a silver bullet, claiming to empower a citizen developer to develop an app like Instagram, at the scale of Instagram in just a few weeks as opposed to requiring years of development time.
A citizen developer is a term coined for a person who uses no code tools to develop real-world apps with zero coding knowledge. They don’t have to worry about things like the technology stack of their app, the application architecture, code design, optimization, scalability, and so on, as everything is taken care of by the no code platforms.
Before delving into this, I would state that as I analyze the trend, I take an unbiased approach. If it is possible to develop, scale, extend and maintain massively complex apps like Facebook, Insta, Netflix that are powered by hundreds and thousands of microservices within a few weeks clicking through a drag and drop visual tool, I see no reason why an enterprise, a startup or a solo dev would take any other route other than using a no code platform for their future projects.
With that being said, let’s jump right into it.
Difference Between No Code And Low Code
The primary difference between a no code and a low code tool is that a no code tool does not expect us to have coding knowledge. It’s that simple. Just use their drag and drop builders and make your imagination a reality. On the other hand, a low code tool provides more freedom towards customizing things through code. Some of the low code tools even expect coding knowledge and expertise on them to leverage their full functionality like Salesforce, SAP Hybris, Siebel CRM, and more. More on them here.
I’ll begin with discussing no code tools, what they are, when and when not to use them. And in the next write-up, I’ll discuss low code.
What Is A No Code Tool?
A no code tool enables an end-user to develop real-world applications using their drag and drop application builders without writing a line of code.
What Kind Of Apps Can We Develop With No Code Tools?
Simple CRUD (Create, Read, Update, Delete) based apps like to-do lists, task trackers, social media planners, campaign management, pandemic trackers, getting user polls, and internal business apps like employee onboarding, employee registration, time reporting, event management, application tracker, information organizer, knowledge base and so on.
If you go through the documentation of these tools, you’ll learn that these are primarily meant to build internal business apps. Business data that is generally saved in Excel sheets and passed across the organization can be better accessed and updated via an app developed leveraging these tools.
Understanding the no code landscape is not so straightforward; it’s rather massive and complex. Let’s break it down:
Besides the tools I stated above, there are a plethora of no code tools available for every use case. For instance, if I want to sell a course online, I can leverage tools like Teachable or Gumroad as opposed to writing an app from scratch. Products like these are also called no code tools.
A similar tool in the e-commerce ecosystem is Shopify. It lets us set up our own e-commerce store without writing a single line of code. In the blogging and static website space, they are Wix, Webflow, Substack, WordPress and so on. Similarly, you’ll find no code tools in every niche and for every use case.
No code tools can be loosely aggregated into two categories:
A. Pre-built platforms like Teachable, Gumroad, etc. that enable us to leverage their features right away by just subscribing to their services. The other name for these platforms is SaaS (Software as a Service).
B. App development tools/platforms like Webflow, Thunkable, and more that help us develop the frontend, backend of our apps, or both.
No Code App Architecture
Imagine I start a business where I need to sell my courses online. I’ll use Gumroad or Teachable for that. Along with that, I need a dedicated email service to stay in touch with the readers. I can use MailChimp for that. I would also need a community-building portal with social features similar to a Facebook group to enable users to interact with each other. I can use Circle for that.
Now one single no code tool would fail to provide all the features I need for my business. So, I have to club these services together to work as one single service. You can think of every service as a microservice. Here is how I would do it—I would again use a no code service like Zapier that would enable me integrate all different no code tools: Teachable, MailChimp, and Circle, together.
Zapier enables these portals work in conjunction exchanging data with each other. So, this is how different no code tools are integrated to form a more extensive system.
For a person who does not know how to write code, this is one possible way to build their online business. The other is to hire developers to build the system from the ground up using open-source tech, which would naturally be way expensive initially, especially if they are on a shoestring budget. The no code way would seem to be the best bet in this scenario. But it’s not all sunshine and rainbows. There are multiple limitations on this route that we encounter at a later point in time in our businesses.
Let’s find out what are they:
Limitations Of No Code Tools
Lack Of Customization And Friction In the Introduction Of New Features
No code tools provide very little to almost no customization possibility.
For instance, say I am using a no code platform to sell my course, and the default functionality of the platform is that the user should log in first to access a particular lesson of the course. Now, what if I want a feature that would allow the user to go through 25% of the content (let’s say the first two paragraphs) of every lesson without logging in?
I surely can’t implement this feature since my platform doesn’t have it. Also, I agree this is a unique request, and granted the platform covers the standard features that most online course selling portals have.
The options I am now left with are:
- I can browse through other no code course selling platforms on the web, looking if they have this feature. What if one of them has this feature but lacks other features that are important to me?
- I can request the platform’s development team to build this feature, but they will only consider it if many users want it and their bandwidth allows it.
- I have to develop my own platform from the ground up to have control over everything: the customizations, new features, and so on.
Also, what if I come across a security issue on the platform that enables the end-users to access the content by bypassing the paywall easily? And this is and has been a real known issue in many popular course selling websites.
Another instance, say we build a real-world app, like Netflix using a no code tool. Subscription streaming service is a relatively competitive market. Initially, everything would appear to work like a charm. And then, we will start getting customer requests for a certain tweak in the product or a new feature. For this, we would now have to contact the support team of the no code platform. And what if they are like, “Oh, this cannot be done, or a feature that you are requesting is in the pipeline and is gonna take a relatively long while.”
On the flip side, our competitor, who has developed their service from scratch using open-source code, would make the necessary changes, add the requested features, and beat us to the market like a walk in the park.
These are real concerns that one should be aware of before picking a no code tool to build an online business. More on building complex apps with no code tools in a short while.
Additional Costs Involved With Every Little Tweak We Want
Hopping back to my no code course selling platform example, one could tell me that Hey, why don’t you use this another service and plug it in using Zapier or something to extend the functionality. It will work like a breeze. True, but then I have to additionally recurrently pay for the new service that I am gonna add. And do I keep paying for new services for every little feature that I add to the platform or for the customizations that I make?
I can bring up all these hurdles in this write-up because I’ve been through all this. I built an online shop using a platform; let’s call it X. The platform enabled me to integrate Stripe to accept money from the customers. Everything appeared fine until the first customer payment failed. I investigated found out that Stripe needed this additional customer info to comply with my country’s sales tax rules which platform X didn’t provide. One specific input field was missing in its payment form.
Bam! I am stuck.
I contacted customer support. They said I could integrate another service that provided extended payment forms using Zapier. Now, to enable just one field in the payment form, I have to pay Zapier and the newly integrated customizable form service besides the platform X subscription fee that I am already paying. How awesome is that?
Since the no code tools/platforms don’t provide the code for the apps, we build using them. Our business always stays locked with them. In other words, we are at their whim. If they decide to spike their subscription fee down the line, we have to comply. If they choose to get rid of or tweak certain existing features, it directly impacts our business. If they don’t like our business down the line for some reason and decide not to be associated with us purging our app and data from their platform subsequently, we have to be okay with that. If they shut their business down the line, we have to be okay with that and bounce back to the drawing board to start all over again.
Most of the apps using no code tools are built using pre-built templates. The standard features that most apps have, like login, shopping cart, a payment system, etc., are already pre-built. The platform creates an app fitting those features together like Lego blocks. This is what enables a user to come up with their app real quick.
The issues I brought up are subtle things that we wouldn’t stumble across until we build our app using these platforms.
The gist is that every tool, product, technology fits a use case and has trade-offs. A magical platform that would offer a solution to every problem hurled at it doesn’t exist. Now let’s discuss when to pick a no code tool.
When Should We Use No Code Tools?
A no code tool comes in real handy for a person who doesn’t know how to code, also doesn’t have the resources to hire a team of developers yet wants to start a business. What options do they have other than picking up a no code tool?
At a later point, when they have enough money, they can hire devs and get their product developed using open-source bit by bit. Or if the no code app fulfils all their requirements, even better, this averts the need to build a custom app from the bare bones.
Simple Use Cases and Side Projects
No code tools fit best for simple apps and websites, as stated before.
I’ll try to elaborate this with an example, say I need to set up a blog and want a feature that would enable me put a few selective articles behind a paywall. For this, though being a developer, I would pick a no code solution like Substack or a mix of Webflow and Patreon. I wouldn’t reinvent the wheel for simple use cases unless I am launching something in direct competition to these services.
In contrast to this, if I was starting up a business like, say, a gamified platform for learning Physics. I would always develop it from scratch using open-source tech for obvious reasons.
So, if you are working on side-projects that are not so important, maybe when just experimenting with things. Or you want to build simple stuff that a no code platform already offers and are certain that you wouldn’t want many customizations in the near future. Just go ahead with a no code platform.
Developing An MVP (Minimum Viable Product)
If you have a relatively complex idea, like coming up with a tech product discovery and recommendation service like ProductHunt. Instead of jumping right into developing it from the bare bones, you would want to build a prototype of the service having bare minimum features to test the waters or show it to the investors. A no code tool could help you come up with an MVP quick. But again, this is subjective.
If you build an MVP using open source, you can build upon that, adding new features as opposed to starting from the ground up all over again.
The Real Reason Behind the No Code Rage
No code tools and platforms like Construct, a no code game builder, Thunkable, a no code android app builder, website builders like Wix, and more have been in existence for like forever. The no code concept is not entirely new. Then what really happened that caused so much stir of late?
Well, it’s because of the PANDEMIC. It cut most of the jobs. The economy was hit pretty bad, industries specifically travel and hospitality, literally came to a standstill. People were let go or wages were cut down. This triggered a surge of people starting online businesses, approx.—1.5 million, through 2020 and 2021.
In addition, as our world became remote-first, the brick and mortar businesses realized the necessity of having an online presence. These reasons combined spawned an unprecedented demand for systems that would enable them transition online quick and thus the no code rage.
Now let’s find out why developing a complex app like and at the scale of Facebook, Instagram or Netflix is not reasonable using these no code tools.
Why Can’t We Build Complex Apps Like Facebook Or Instagram With No Code Tools?
Besides building the user interface, one of the first steps when developing any application is to design the data model. And apps as big and complex as Facebook have a polyglot persistence architecture. This is primarily to leverage different database technologies to fulfil different persistence requirements in the application.
For instance, to store relationships like persisting friends of a user, friends of friends, what rock band a user likes, what food preferences they have in common with their friends, etc., a relational database like MySQL or a graph database like Neo4J would fit best.
For low latency access of all the frequently accessed data, we can implement a cache using a key-value store like Redis or Memcache. We can use the same key-value data store to store user sessions.
To enable businesses run ads on our portal, we need a payment system. For this, we need ACID transactions and strong consistency; this makes a relational database the best fit.
To enhance our application’s user experience, we need to recommend new content to keep the users engaged. A graph database would fit best to implement a recommendation system.
To implement the search feature that would enable the users search for their friends, pages, groups, marketplaces, products, etc., we can use a mix of a documented oriented store like Elasticsearch and a graph database like Neo4J for running a contextual search.
Next up is analytics. To understand user behavior, we need to set up an analytics system. This would make sense of the data generated by the users. We can do this with a wide-column database like Cassandra or HBase.
Businesses continually evolve and the algorithms are continually tweaked based on analytics data and social trends. Short videos is one good case in point. TikTok surpassed Google to be the most popular website of 2021 because of the popularity of the short video format. YouTube and Facebook, Instagram played catchup with YouTube shorts and Reels, respectively, to stay relevant.
I can go on, but I believe you get the gist. Picking the fitting persistence technology and designing the data models for these applications is complex and needs a lot of brainstorming. And the same goes for every component in the architecture, like when picking the right message queue, programming language (backend, frontend), and so on.
I do not see how all this can be accomplished without having the freedom to pick the fitting technology and access to the code.
Apps as big as Facebook, Insta have complex architectures and are powered by hundreds and thousands of microservices. And this complexity in the architecture is for a reason. Features such as Live streaming, messenger, Fb groups, Fb pages, Home page, post recommendations, group recommendations, Like button, and so on have dedicated microservices powering them developed and maintained by dedicated teams. Every feature may be powered by a single or a number of microservices.
Splitting different features as dedicated microservices have several upsides:
Leverage The Fitting Technology
We can leverage fitting technologies to build our features, for instance: for building features like messaging, live streaming that require a persistent connection between the browser and the server for real-time data interaction technologies such as NodeJS, frameworks like Tornado in the Python ecosystem, Spring Reactor, Play, and Akka.io in the Java ecosystem can be leveraged.
C++, Rust can be used for writing features that require low-level memory manipulation. This provides more control over memory to the developers when writing distributed systems. Erlang can be picked if we need support for concurrency, fault-tolerance, and distribution. Go can be used to write code for multi-core machines and handling a large amount of data. Julia can be used for writing features that need high performance, computations, and numerical analytics, and so on.
Loosely Coupled Architecture, No Single Point Of Failure, Dedicated Teams
Since microservices facilitate a loosely coupled architecture, there is no single point of failure in the system. Even if a few of the services go down, the application as a whole is still up. Services can be independently deployed, not affecting other services. Microservices can be owned by dedicated teams, facilitating better management and less chaos.
I’ll stop right here and won’t go into technical detail any further just to keep things concise. However, so many things still remain to talk about, like image, audio, video optimizations, data compression, recommendation algorithms, graph search, handling concurrency scenarios, architectural optimizations for cutting down deployment costs, and more. Nevertheless, I hope you get the gist.
An insane amount of engineering effort goes behind these services to provide a top-notch user experience staying ahead of the curve. Here are a few interesting reads if you wish to delve any further into the technical details:
Netflix: How it serves personalized recommendations and visuals for the viewers.
Facebook: A browser tweak that saved 60% of requests to Facebook.
Under the hood: The natural language interface of Facebook’s graph search
I wonder how all this engineering can be done using drag and drop builder tools without access to the code.
Social networks and e-commerce stores can also be built using WordPress and a few plugins, but the question is, should we? Everything has a trade-off and a use case.
When no code platforms claim to scale apps built on their platform at par with Facebook, Instagram, and Netflix, this means your app running on these platforms will never be short of compute power or memory for as long as you keep pouring bags of money on the infrastructure since these platforms, in turn, are deployed on cloud services like AWS, GCP or Azure.
But can we optimize our server costs? No!
Are we certain our app uses optimum resources? We do not know since we do not have access to the code and the profiling tools.
Can we cut down the infrastructure costs by optimizing the code and the application architecture? No!
Folks! Every tool, technology, platform has a use case and is not a silver bullet. And this goes for open-source tech too. I have learned this pretty well, having spent a decade in the software development industry. I’ve written numerous projects from the ground up and spent countless hours scavenging the web, browsing through technologies and frameworks to pick the right tech that would align with my requirements.
I have wasted days, if not months, trying to implement stuff with a not-so-fitting technology. I have implemented stuff with tech having no support and community and have later cried for days into a pillow.
Picking the right tech stack is crucial for our business’s success. There is no way around it, and I think we all understand this fact pretty well. Do not take everything at face value. Do your research before zeroing on anything.
Is No Code A Threat to Development Jobs?
I am certain you would have figured this out by yourself. Still, just for the record, I will say, No! No code is not a threat to the development jobs unless your day-to-day work involves performing repetitive no-brainer tasks as opposed to solving problems. Repetitive tasks, if not yet automated, will soon be. AI and the scientists behind it are hellbent on automating every task that a human performs.
With so many apps popping up as a result of this no code trend, I see this as an opportunity as opposed to a threat. Every online business, built using high code or no code, needs assistance in marketing, finding influencers, customer feedback, customer support, automation, and whatnot. You can come up with disruptive tools in the respective segment to assist them. All it needs is good research. I’ve discussed the opportunities for devs in detail in my course below.
If you need to understand low code here is a deep dive into it.
If you are a developer and find it hard to cope with constant changes in technology. You are sick and tired of it. You are looking for ways to jump off that endless upskilling treadmill staying relevant and hireable.
You might want to check out my ebook, DEVELOPER’S ROADMAP TO EXCELLENCE AND BUILDING YOUR OWN THING, where I share with you the roadmap and techniques that I follow to keep my sanity in this ever-changing world of software development without killing myself. In it, you’ll find actionable advice and critical points that will enable you to make informed career decisions and accelerate your career at MACH speed.
Zero to Software Architect Learning Track - Starting from Zero to Designing Web-Scale Distributed Applications Like a Pro. Check it out.
Looking for developer, software architect jobs? Try Jooble. Jooble is a job search engine created for a single purpose: To help you find the job of your dreams!!
Zero to Software Architect Learning Track - Starting from Zero to Designing Web-Scale Distributed Applications Like a Pro. Check it out.
- ‘Futures and Promises’ and how Instagram leverages it for better resource utilization
- McDonald’s Event-Driven Architecture – A Gist
- State of Backend #2 – Disney+ Hotstar Replaced Redis and Elasticsearch with ScyllaDB. Here’s Why.
- State of Backend #1- Distributed Task Scheduling with Akka, Kafka and Cassandra
- Live Video Streaming Infrastructure at Twitch