Programming without writing code

The idea to enable non-coders to create software is not new at all. In fact there are many projects already using some form or another to achieve just that.

Clicking your code together

The perfect example for programming for non-programmers are visual programming languages. Scratch is a famous tool of that category. Its primary goal is to help kids learning to program. With dragging&dropping objects and actions students don't learn to code directly but learn how to think like a coder. It aims to teach creative problem solving skills but also systematic and well reasoned thinking.

Scratch is great for what it aims to achieve but its use case is also very limited. You will have a hard time building the next Facebook in scratch. That’s because all actions have to be developed by real developers in the first place.

Some Programming Languages Are Easier to Understand

On the other side of the scale are programming languages that almost read like plain English. Take this piece of Ruby code for example:

exit unless wallets.include? user.wallet

It's easy to read and understand what the code does, but that doesn't make it easy to write the code (unless you actually know how to code already). There's still a lot to learn - the syntax, variables, data types, execution order and much more.

Writing plain text to execute code

Let's look at something that is not as basic as scratch but also not a full blown programming language as ruby.

Meet Gherkin. With Gherkin you can describe scenarios that are used for testing your application automatically. Gherkin looks like this:

Scenario: Eric wants to withdraw money from his bank account at an ATM

Given Eric has a valid Credit or Debit card

And his account balance is $100

When he inserts his card

And withdraws $45

Then the ATM should return $45

And his account balance is $55

That’s plain English and really easy to understand. The pitfall is that it’s not actually doing anything by itself. Anyone from a team can write such scenarios and it’s great to outline the behaviour of your application. But the actual execution of the scenario has to be written by a developer. Every line corresponds to a "step" which is a method implemented in code that supposedly does what it says. So the scenario isn’t much more than a beautiful and easy to understand specification.

As you have seen now there are many uses of the english language for coding but we have yet to see a language that is easy to understand. relies on plaintext english and covers a broad use case.