Code or No-code?
When I started with Android development, GUI for designing views was so bad, we did nearly everything in XMLs. On the other hand, iOS had a nice graphical editor, but due to its design, developers couldn't do modifications in text mode. So Android developers were jealous of iOS cool and good working GUI, and iOS developers were jealous of the possibility to directly work on XMLs. Fast-forward to now, and it is becoming a standard to define views in code, both on Android (Jetpack Compose) and on iOS (SwiftUI).
A similar thing happened on web development. When I was a child learning programming, my parents bought me a visual editor for website development, called Pajączek. People were saying then, that this is the future of web development, that soon no one will need to learn programming to do websites, because we could do everything in intuitive and good-looking graphical editors. The future turned out to be the opposite. Of course, you can make a simple website from a template on WordPress or Shop, without any programming skills, just using a graphical editor. However, the serious development is now conducted on code, and visual editors are rarely used.
I also remember Visual Basic (oh, by first programming course), Qt (I used while studying) and others. But I also observe this process on other domains:
- Configurations, that were defined in some wizards in the past, are now typically defined in code. Think of Gradle, npm config, terraform, kubernetes and many more.
- In the past, when SQL was an absolute king of databases, people predict that the future is a powerful SQL manager. People still write SQL, but also use if from behind libraries like PySpark or Pandas.
- Many calculations in the past were made in Excel. Nowadays more and more often analysis's use Python instead (I heard from an analyst in a big company "Python is the new Excel").
These experiences make me really sceptical, when people tell me, that "no-code" or "low-code" is the future of programming. For me, it mainly sounds like a wishful thinking of people, who do now want to learn how to use code.
It does not mean, that no-code will be forgotten. It is great, that business owners can make a beautiful websites in WordPress or Shoplo, without learning how to code. As long as they do not need to many customizations, it is perfect.
However, in the world of professionals, it seems that in the end, using text format rules over custom graphical interfaces. Why? Let's compare what those two offer to us.
As a book writer, I experience the pain of showing readers how to install a program, screen by screen, with detailed instruction of what options should be checked. It is much more convenient to just show a few lines of commends, to install everything needed. Such commends can be shared online or on presentations, easily copy-pasted, started without user interaction. However, installation commends also have an essential flaw: it is not easily discoverable and self-descriptive. When you pass through an installation wizard, you see what options do you have. You can also see a better descriptions of those options. To see what options you can use when you install a program from a command line, you often need to use
help or documentation. This pretty well explains the key differences between using commends and using wizards. Text, by nature, is:
- Easy to share, copy-paste, review.
- Does not require human interaction.
- Can be organized (you can collect your commends on some repositories).
- Often allows other programs to use it (you can write scripts).
On the other hand, wizards by nature:
- Can be adjusted to how we do, so a graphical interface can support a concrete need.
- Do not require remembering commends.
Using code is a bit like using shortcuts. Much more convenient for those who know them, but harder for those who do not.
So this was the discussion between Android and iOS: depend on editing XML text, or on GUI? It turned out, that both of those approaches lost with using code. Why?
A code is a text, so it has all its advantages, but it additionally has some more traits:
- Code can have syntax-highlighting, suggestions, errors highlighting, code verification, hints, and other kinds of support from IDE (Integrated Development Editor). This is a great help for developers, however, it is a problem for non-programmers, because it kind of requires them to install and learn how to use IDEs.
- In code, we can use other structures offered by the languages, like defining functions or using if-condition. It is, again, a useful thing for developers, but problematic for non-programmers, who do not understand those structures, and might have problems learning about them.
- Using code is convenient for creators, who do not need to define any custom language or GUI, but typically just a set of functions. It is also convenient for developers, who do not need to learn about intricacies of a custom language or GUI, but can just use simple elements from the language they know.
In other words, using code if convenient for those who can code, but problematic for others. I believe, that a big reason of why more and more code is used, is because there are more and more people who can code.
When developers operate on code, in a way they operate on a visual editor too. IDE offer us syntax highlighting, suggestions, code verification, different kind of hints. Those, who predicted that code cannot be the future, because it is not visual enough, did not take into account of how visual our IDEs will make development process. Using code is not solely operating on a text, it is operating on a hybrid of text, and visual representation.
No-one knows the future, but for now is seems, that learning how to code is and will be beneficial for many positions. I expect more and more code in corporations and among well-paid professionals. However, code is not for everyone, and for others, good no-codes or low-codes are very useful. I do not think they are the future of programming, but I am sure they will have their niches.