How can a non-technical person create an app?

What matters the most in your app:

That it uses the most powerful technologies, or that it solves your target audience’s problem?

I am a software developer. Mobile developer to be precise. When I started, years ago, the only way to create mobile apps was by using native development. Therefore, I had to learn the programming language and software development kit for each operational system I intended to build an app for – Android and iOS.

After some time, cross-platform alternatives began to pop up, allowing us to develop apps to multiple operational systems using a single programming language and software development kit. By using this alternative we could cut development time by half, pretty much.

However, when I went on to test some of these alternatives, I realized their performance didn’t match the performance of native apps. For example, lists didn’t scroll smoothly, touch on buttons took a while to register, among other issues. That was enough for me to ditch the cross-platform alternatives back then.

“Why would I use these alternatives if I can develop native apps that are a lot better?”.

But, after a while, I noticed these cross-platform alternatives gaining traction in the market. More and more companies were adopting some of them to develop their apps.

It kinda made sense to me, because companies could spend a lot less money with developers just by using a cross platform development technology. I mean, previously they had to hire at least two teams, one to develop their Android app, and another one to develop their iOS app. Financially it made sense, but I still thought the end users of those cross-platform apps wouldn’t get the best experience they could have. I thought that, sooner or later, these companies would have to develop native apps because users would just complain in the Google and Apple stores reviews, and the issue would be translated into low app ratings and low user retention.

I wasn’t satisfied though. Wouldn’t companies have realized this already?

“I must be missing something”.

So I decided to analyze some apps developed using one of these cross-platform solutions: Ionic. Found a list of the top 5 Ionic apps and downloaded them.

Their performance really wasn’t that great, they had the issues I described before (laggy lists, delayed button presses, etc). But there was something that surprised me. Those apps’ ratings were really high!  4.5 or higher. All of them also had so much more positive reviews than negative ones. Users loved those apps, despite their non-native performance and feel.

So, it was clear to me that people don’t care about the technology we are using, they don’t even care if the app has the best performance; what really matters to people is that the app solves the problem it tries to solve. Of course, there are some users who demand the best, fluid, native like performance, and there were some reviews reflecting this, but most of them seemed to not care about it at all.

As time went by, cross-platform technologies improved. What could only be done with native development, now can be done with Ionic, React Native, Flutter, and others, with pretty much native performance.

Now, there’s a new technology on the market, a technology that is in the sort of early stage cross-platform development was back then. It’s a technology that doesn’t build apps with great performance yet, that doesn’t build apps with amazing animations and incredible custom UI. However, it’s a technology capable of delivering, in a matter of weeks, apps for multiple operational systems – Android, iOS, web – without the need of coding them.

It’s called no-code. That’s right, no more programming language knowledge required, because you interact with a visual interface, dragging and dropping components in the editor to build your own app.

“Oh, but it must have limitations, must be laggy, and probably generates apps with bad performance”.

Yes, I had that thought when I first saw it, but I soon realized that I was having the same mentality I had when those cross-platform solutions emerged. Don’t forget, end users don’t care about the technologies we use, end users care about solving their problem with our app.

Obviously, traditional software development, with code, with programming, is a lot more powerful, has less limitations and better performance; but, in most cases, it’s far more important to release your app as soon as possible and test your idea in the real world, gather feedback from real users, within as little time as possible and with a lesser cost of development.

That’s lean startup.

So, no-code opens up numerous opportunities for people that have no programming knowledge, because now almost anyone can use this technology to build apps and test an idea in the real world, with real apps – not just questionnaires, wire-frames, or animated designs – without having to learn how to code.

Now, just to be clear, it doesn’t mean that no-code is the best solution for everything, but it can get you pretty far. And this is how a non-technical person can create an app.

The main reason why startups fail (hint: it’s not about money)

The failure rate among start-ups is pretty high —somewhere between 75% and a whopping 90%. And while running out of cash and being outcompeted are of course frequent reasons for that, neither is the most common reason for failure: according to a study published by CB Insights, the main reason for failure is creating something with no market need.

Top 20 Reasons Startups Fail, based on analysis of 101 startup postmortems by CB Insights:
No market need: 42%
Ran out of cash: 29%
Not the right team: 23%
Pricing or cost issues: 18%
User un-friendly product: 17%
Poor marketing: 14%
Ignore customers: 14%
Lose focus: 13%
Disharmony among team or investors: 13%
Pivot gone bad: 10%
Lack passion: 9%
Failed geographical expansion: 9%
No financing or investor interest: 8%
Legal challenges: 8%
Didn't use network: 8%
Burn out: 8%
Failure to pivot: 7%

Testing ideas and reacting quickly to unproven hypothesis is key to success —not only in today’s Silicon Valley, but throughout history. Thomas Edison famously said, about having reportedly failed thousands of attempts to invent the lightbulb: “I have not failed 10,000 times. I have successfully found 10,000 ways that will not work”. 

Unfortunately, this is not always the founders’ mindset. In a research with 14 international accelerators published by Entrepreneur, the lack of proper testing is considered to be a key failure reason:

“Inadequate testing was by far the most mentioned reason for startup failure. This factor is identified by several other terms like not getting started, not understanding how to access the market, and not understanding the barriers to entry.”

Michael Houlihan & Bonnie Harvey for Entrepreneur.com

Many entrepreneurs fall in love with their idea, and they tend to try to make it “perfect”. The thing is, “perfect” does not exist. The main goal for any company or product should be to solve a problem.

And while this may sound obvious, in general, it isn’t. It’s easy to get trapped in a vast product backlog with advanced features. And it’s even easier to spend a lot of time worrying about a pixel-perfect design before actually shipping a product.

Nowadays, anyone with an idea can be an entrepreneur, especially when using low-code and no-code tools. With those technologies, we’ve seen makers build companies in weeks instead of months either doing it themselves or hiring a no-code expert. It is that faster, and it takes exponentially less money.

Building with no-code solves two parts of the problem: it allows you to ship and start learning in weeks, and it also saves you money, so you can use it in an even more vital step: iterating your product with user feedback.

But it does not guarantee success, of course. So here are the three main bits of advice we usually give when consulting:

1 – Solve the cause, not the symptom

Every good product serves a purpose. In order to deeply understand its purpose, it is crucial not to focus only in the surface (i.e.: ‘hotels are boring’), but get to its core (‘people want to have an authentic experience while traveling’). As Donald Norman says in The Design of Everyday Things (2002) “Invariably, the problem I am asked to solve is not the real, fundamental, root problem”.

2 – Design experiments

The best way to learn something is by testing ideas in the real world. As Eric Riess puts:

“The reason to run experiments is to discover customers’ revealed preferences trough their behavior. In other words, don’t ask customers what they want. Design experiments that allow you to observe it.”

Eric Riess – The Startup Way (2018)

3 – Embrace change

After rounds of experimentation, you might feel your original idea is not the most appropriate way to tackle a problem. Perhaps some things need to change, and that is good learning. As Peter Drucker says, “There is nothing so useless as doing efficiently that which should not be done at all”. It is important to understand that changes in the original plan are inherent to how a successful startup works.

To sum it up, a good idea is a great place to start a business, but execution is everything. Your chances increase dramatically when you unleash the full potential of your idea by iterating it.