No Code, Low Code, and the Role of AI in Software Development
Illustration by @YvetteGilbert

No Code, Low Code, and the Role of AI in Software Development

When Sildenafil was developed by Pfizer in the 1990s, it was intended as a treatment for angina and high blood pressure. During clinical trials, however, an unexpected side effect was discovered. The drugmaker changed tack and marketed the drug as a way to combat erectile dysfunction. (Talk about rising to the occasion!) Under the brand name Viagra, it has gone on to become one of the most well-known and lucrative pharmaceutical products of all time.

This kind of unexpected success is common in the technology sphere. Slack, which sold to Salesforce in 2021 for $27 billion, was originally conceived as an internal communication tool for the game company Tiny Speck. When created by Netscape in 1995, JavaScript was intended only as a way to make web pages more interactive. It is now the most popular programming language in the world, used not just for web apps but for mobile apps, backend code and even AI.

Speaking of AI, the latest generation—powered by large language models (LLMs)—is still finding its place in the technology landscape. It is currently treated by many as a "feature" to be sprinkled like magic pixie dust onto existing applications. The new technology's evident strengths lie in interpreting, summarizing and authoring text. Unsurprisingly, the first LLM-based features have tended to play to those strengths, letting Notion correct your grammar or Microsoft Teams summarize a long discussion thread.

It would be a mistake, however, to assume that LLMs will be limited to helping software better interpret and generate text. Their impact is likely to go far deeper. In fact, they promise to completely reinvent the way that we create new software by addressing perhaps the biggest challenge facing the software industry. And since software is eating the world (another consistent theme of this newsletter), this has direct implications for the world economy, and perhaps even the future of humanity.

That problem, in a nutshell, is that software development is too damn hard. In my experience, almost everyone hilariously underestimates the effort needed to create a production-ready app. Attempts to reduce costs inevitably turn out to be counterproductive. These include the "race to the bottom" in the early 2000s, where companies embarked on outsourcing initiatives in countries like India and China that cut costs, but often at the expense of sacrificing quality. Another perennial favorite is skimping on initial research, discovery and design. This might lead to superficial cost savings in the short-term, but it is actually one of the main causes of budget and schedule overruns, as developers are forced back to the drawing board when software fails to meet user expectations in terms of functionality and usability.

Meanwhile, we're running out of software developers. Of course, to some extent we can just train more, and trends like the increasing number of female programmers are encouraging. But even if we manage to keep up with demand for the time being, the way software is developed seems increasingly wrong to me. Some applications no doubt merit many months (or even years) of full-time effort by a team of highly trained individuals. But many clearly don't. This doesn't mean, however, that your aardvark-training app—tailored to your avid fanbase of aardvark lovers in central Lithuania—doesn't have the right to exist.

So what to do? The obvious solution is to come up with ways to create software that don't require so much time invested by skilled professionals. These could be:

  • visual environments where a business domain expert can create an app without programming,
  • tools that let you solve a certain type of problem (modeling financials, visualizing business data, searching and displaying textual information, etc.) through configuration not coding, or
  • a Domain-Specific Language (DSL) that make it possible to create specific types of applications by coding but without needing as much of a formal software development background.

Another possibility—far more plausible now than it was, say, a year ago—is that more and more software will be written by AIs rather than humans. LLMs are impressive when writing prose. Since programming languages are more structured than natural language, and the problem domain is typically more constrained, LLMs are even more impressive when writing code. Tools like GitHub Copilot have already been widely adopted and evidence suggest that they offer significant productivity gains. Isn't it just a matter of time until modern AIs like ChatGPT are capable of producing complete applications based only on a textual description of the desired functionality?

Yeah, probably.

But just as we've been "two years away" from self-driving cars for at least the past decade, it is very difficult to predict when AI will be good enough to completely replace human programmers. Nor is it entirely clear that this is a requirement if AI is to have a major impact on the software development landscape.

A lot of software can be created by configuring an existing framework or template. You can think of this as "turning dials" to achieve the desired functionality rather than writing new code. A spreadsheet like Excel or Google Sheets is a great example. You can create sophisticated apps without any programming ability thanks to the underlying capabilities of the spreadsheet. It can't do everything, but what it can do, it does very well.

As tends to be the case with such things, however, problems begin to arise once your app reaches a certain level of sophistication. Suddenly there's no dial to turn that does what you want, and you have to fall back on writing code. In the case of a spreadsheet, this might mean highly complex formulas or even true computer programs in the form of Google App Script or Microsoft VBA. (If you don't know what these are, be glad.)

And this is where efforts to create no- or low-code frameworks have typically fallen down. You get almost all the way there with prebuilt features and the aforementioned dials, but the "last mile" requires specific functionality that can't be achieved without coding. As a result, many programs offer some kind of plugin framework like web browser extensions or Slack apps that fill in the gaps, but only by forcing you to write code.

This is where AI may be a true game changer in achieving the vision of no-code software development. It wouldn't be realistic to expect an AI to develop a complete web browser, at least not any time soon. (Just check out the Chromium source code to get an idea of what a monumental undertaking this is. If you've got a lot of free time on your hands and a high threshold for pain, you can even try building it.) But it might not that much of a stretch for an AI to write you a browser extension that removes all mention of e.g. aardvarks from your browsing experience.

In the ever-evolving technology landscape, LLMs represent a major milestone with the potential to reshape the way that software is developed. As history has shown, from Viagra's unexpected success to JavaScript's near ubiquity, innovation often emerges in unexpected places. When it comes to no-code software development, we have probably been close to a truly transformative solution for quite some time. The newest AI technologies may finally provide the last piece of the puzzle needed to make labor-intensive hand-crafted software a thing of the past.

Fela Maslen

Full Stack Software Engineer

8mo

Prediction: in 10 years time, programming a computer to do something explicitly with defined branches and heuristics (vs. teaching an AI the end goal and letting it figure out the means to get there) will be quaint and old hat, like programming in assembly or C today. In fact you'll probably have some older people paid a lot to program computers without using AI, like COBOL programmers today. We're still multiple paradigm shifts away from general AI, so the last niche which humans will fill is the tricky cases which aren't solvable without it. Also there will always be niche roads which AI (except AGI) will never be able to drive without damaging the car or getting stuck. A small subset of driving requires true general intelligence (imo).

Like
Reply

I am not confident it will immediately. As someone who pushed the whole "low code" approach, I could see the writing on the wall. Moreso, it also relies heavily on GIGO. Garbage often seeps into the code base as undocumented requirements. Developers often don't see these because their managers fail to read the minds of what the business people really want as a result. Example: I can tell AI to create a web app that takes two numbers and returns the product. Easy! If you enter two integers, it can return the product. But, will it also have the knowledge to constrain the input for each number to allow only integers and one period (or other scientific notation like exponentials)? Otherwise the first kid using it will try to multiple a capital "F" by the question mark. Will it format the result in the context specific way (like prices with two decimal points, using a comma in the EU and period in America)? I am not confident we are there yet. Smart cookies like you are required to make the good apps.

Like
Reply
Stano Kucharik

Creating meaningful connections at professional events.

8mo

I think you're spot on with the "two years away". The last mile is hard. For now, the size of the context is a big problem. At that point of a project, you've often got a combination of code generated by multiple tools that were not necessarily meant to work together. You need to take that all in as the context and come up with a fix that won't affect how those tools work for you in the future - even more context. Then there's the visual part that takes the diff between design and currently rendered code as input and needs to produce an output that will change what needs changing without affecting anything else (again visual diff as the check). I believe platforms like stylers.cloud will be the needed fix for now. Crowdsourced specialists quickly fix what's needed while the platform takes care of quality and usecase-specific automation. The proportion of human-machine work will be changing but we can't expect the AI to be the magical fix for things that we haven't even created quality data for.

Like
Reply
Jan Jaderný

Software Developer at Heureka.cz / sk

8mo

Hi Matt, very nice article 👏 You might also like one of my last posts from #TestMuConf - the role of AI in software testing - intriguing insights from a survey conducted by LambdaTest 👍

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics