The curious relationship between simplicity and top-performance

What devs can learn from Giants.

2009, Berlin: Usain Bolt beat the 100m Mens World Record in 9.58 seconds. Please take a look at how simple it seemed for him:

2012, Beijing: Lang Lang plays La Campanella. It looks so simple for him it actually looks like he is playing around:

Despite the underlying complexity of these crafts, despite all the time and efforts that have been required to reach their top level, when you take a look at the way they do stuff, it actually looks simple.

Too often, we think that what looks simple is not optimized

Long before my first articles on Dev. Simplicity, I had many talks with devs who master current complex modern frameworks such as Angular or React, as well as their related environment tools.

Most of the time, they didn’t agree that development will and should become simple. To them, mastering tech is naturally complex and it should stay this way.

They were saying it is part of our job to keep learning stuff in order to keep up with modern tech evolutions. Because this is how apps can evolve and can keep being optimized.

Most of them didn’t feel the need for tools or frameworks to become simple. We should adapt. We should learn. Because as devs or as engineers we can.

Top-level code is simple code

Usain Bolt and Lang Lang reached the top-level of their fields.

When Usain Bolt runs, it looks simple, but it’s not. When Lang Lang plays, it looks simple, but it’s not. Under the hood, it has been very complex for them as they’ve been learning and training for thousands of hours.

It is possible to imagine simple, top-level dev tools, that would allow us to reach top-performance as well, by generating the most optimized apps. First-class tools that look simple, but which are not. Tools that we can operate in a simple way, but which are performant because of their underlying complexity.

Their complexity should stay under the hood, and most devs should not have to deal with it. It is possible, for example, if we use abstraction and if we separate app description from app engine.

You are not a bad developper for prefering simple, highly-abstracted and readable syntaxes and patterns, over overly-complex and mystified trendy syntaxes and patterns. Because if tools were well-thought, they could offer both simplicity and performance. It is technically possible.

And besides optimization, Simplicity means better readability, better maintainance, better evolutivity, better teamwork, less training time, and less overall development cost.

But it also leads to something more.
Something you’ll find in simple people’s way-of-being.
Something you’ll find in rare mathematical demonstrations.
Something you’ll find in programming, in science, in fashion, or in design.
It leads to Elegance.

Usain Bolt’s smile

La curieux lien entre Simplicité et Performance

Ce que les développeurs peuvent apprendre des géants

2009, Berlin : Usain Bolt bat le record du monde du 100m hommes en 9,58 secondes. Voyez comme cela parait simple, pour lui :

2012, Pékin : Lang Lang joue La Campanella. Cela a l'air si simple pour lui qu'on dirait qu'il s'amuse :

Malgré la complexité sous-jacente de ces métiers, malgré tout le temps et les efforts qui ont été nécessaires pour atteindre le niveau maximal, lorsque l'on regarde leur manière d'être et de faire, cela parait simple.

Trop souvent, on pense que ce qui semble simple n'est pas optimisé

Bien avant mes premiers articles sur la simplication du développement, j'ai eu de nombreuses discussions avec des développeurs maîtrisant les complexes frameworks actuels que sont Angular ou React, ainsi que leurs outils d'environnement associés.

Souvent, mes interlocuteurs n'étaient pas d'accord sur le fait que le développement devrait devenir et deviendra simple. Pour eux, la maîtrise de la technologie est naturellement complexe et le restera.

Ils disaient que cela faisait partie de notre travail, en tant que devs, d'apprendre continuellement afin de rester à jour sur les dernières évolutions techniques. C'est ainsi que les applications peuvent évoluer et continuer à être optimisées.

La plupart d'entre eux n'ont pas ressenti le besoin d'avoir des outils ou des frameworks simples. Car c'est à nous de nous adapter. Nous devons nous former continuellement. Parce qu'en tant que développeurs ou ingénieurs, nous en sommes capables.

Le code le plus optimisé est un code simple

Usain Bolt et Lang Lang ont atteint le sommet de leurs domaines respectifs.

Quand Usain Bolt court, ça semble simple, mais ça ne l'est pas. Quand Lang Lang joue, ça semble simple, mais ça ne l'est pas. Sous le capot, il y a des milliers d'heures d'apprentissage et d'entrainement complexe.

Il est possible d'imaginer des outils de développement simples et de haut niveau, qui nous permettraient d'atteindre des performances optimales en générant les applications les plus performantes. Des outils de premier ordre qui semblent simples, mais qui ne le sont pas. Des outils que nous pouvons utiliser de façon simple, mais qui sont performants en raison de leur complexité sous-jacente.

C'est possible, par exemple, si nous utilisons l'abstraction et si nous séparons la description d'une application, de son moteur.

Vous n'êtes pas un mauvais développeur si vous préférez les syntaxes et patterns simples, lisibles, et de haut-niveau, au lieu de syntaxes et patterns certes à la mode mais confus ou complexes. Parce que si les outils étaient bien pensés, ils pourraient offrir à la fois simplicité et performance. C'est techniquement possible.

Outre l'optimisation, simplicité signifie meilleure lisibilité, meilleure maintenance, meilleure évolutivité, meilleur travail d'équipe, moins de temps de formation et donc moins de coût global de développement.

Et la Simplicité apporte quelque chose de plus.
Quelque chose que vous trouverez dans la façon d'être des gens simples.
Quelque chose que vous trouverez dans de rares démonstrations mathématiques.
Quelque chose que vous trouverez dans la programmation, la science, la mode ou le design.
Elle apporte l'Élégance.

Le sourrire d'Usain Bolt