CMS - Part 3.1: Surfing the waves of progress

CMS - Part 3.1: Surfing the waves of progress

Like in any world, it doesn't matter wether you save for something awesome. As soon as you have it, something cooler comes along. The very same issue applies to the development of software. How and what we develop, changes over time. Currently, software technology advances so fast that it’s nearly impossible for a developer to keep up with the waves progress. It’s either a matter of surfing that wave or falling behind! So, how do we translate this ‘wave surfing’ to a software system? This article is the third part of my CMS series. I will explain how a system like a CMS could (and should) survive in a sea of existing and new tools, but also how it can still be top of the game. This part deals with the term waves of progress, followed by 2 articles: “How to catch waves of progress” and “Surfing waves with a CMS as your surfboard”  in the coming weeks.

In the previous part of this series, I briefly mentioned one of my favorite phrases, “Adopt and prosper”. This cycle has proven itself since the existence of life itself. If you don’t develop further you will fall behind. This is not necessarily a bad thing and, of course, it remains a choice when it comes to software development. You can stick to the old for as long as you want or as long as companies are willing to pay for it. But let’s be honest. As a software company you should be all about the new, because you are supposed to be a pioneer and 'cool'. Or because it will just save you a shitload of working hours! But when will you be at that point where you switch from the old to the new? And when you do switch, are you going to throw away the old stuff and start from scratch with the new tools? It depends..

How do waves of progress work?

Waves are funny. They start as a ripple and can be a smooth but stable bulge for some time until they suddenly grow. Along the way they gain momentum and suddenly they disappear into thin air, they simply collapse or crash into some cliff. In software development, it's new technology that causes such a ripple effect. When developers adopt this new technology, the wave of progress grows and gains momentum. All technology in a ‘mature’ state is part of the wave’s bulge and thus, part of the forward momentum. At some point the mature technology becomes older and falls back, behind the wave where the momentum slowly fades away into a calm sea. This sea is commonly known as the “Sea of Sameness”, where everything in its core is practically the same.

wave-of-progress

So, now imagine that you are the surfer. At first you learn how to swim, stand on the board and after that you start learning how to ‘catch’ waves. Catching a wave requires speed (you peddle). You must have the right timing. When the wave reaches your legs it lifts you up. If you go too slow, the wave will pass by on you and you end up in the calm waters behind it. If you go too fast you will stay in front of the wave, but you will not be able to benefit from it’s momentum. And benefitting should exactly be your goal, right? Or do you just like swimming?

Small side note here. Although they are closely related, a wave of progress is not a consumer based product adoption curve (which is about consumers that adopt a new product over time). A wave of progress is more trend related, concerning ways of working using one or multiple ‘products’. It becomes a wave when the product itself becomes the base of many other products.

The following image shows the ideal scenario in which a new programming language is being introduced and where developers adopted the product to create new tools for and based upon it. Two products are created for the language: an editor and a library. The language has become a wave, because all 3 of the products are enforcing the wave’s momentum.

Wave of progress vs product adoption curve

From the moment a fresh programmer writes it’s very first “Hello World” code. He’s actually trying to catch his first wave of progress with his language of choice as the product. To catch the wave he needs speed, and to acquire speed he needs a good technique. Unfortunately, this is the very moment where most potential programmers stop (huh? - Yes. They stop). Because as soon as they have figured out the technique, the wave has already passed by. In other words, they discover that what they have created, already exists and probably works better elsewhere. They don't see an opportunity to benefit from it, and end up behind the wave to bath in the Sea of Sameness. The wave is now way ahead! Discouraging, but it can also be addictive. The programmer has felt the power of the wave. It did make him go forward, but not enough to really benefit from it. And the good thing is that there are more waves to catch and the programmer is able to retry endlessly with his newly acquired skills!

Some examples of development waves? Well, actually all of the tools that developers currently use, be it languages, platforms, laptops, text-editors or even planning methodologies such as Scrum vs Waterfall. Some of the waves are big. For example, Twitters Bootstrap and the Wordpress Blog system. And also, think about the complete platforms like the native app ‘wave’ on iOS and Android. A competing wave is the hybrid javascript wave. The waves mentioned above are the tsunamis of the internet on which smaller waves can be based.

As you might see, catching waves is not that easy and it takes time and experience for developers to surf the proper ones at the perfect moment. The more experience a programmer has, the better he should be able to surf and predict the waves. However, some programmers decide to swim on their own. They are the experimenters and innovators that create the new tools, or they are just new programmers that play around. Those programmers are either in Sea of Sameness where it’s calm, or in the foam area in front of the wave where it’s shearing chaos and not a lot of tools exist. Of course there is this 0.1 percent that is capable of creating their own wave like Twitter did with Bootstrap. Others will either earn just enough to survive or they are forced to start over or adapt to existing waves. The actual goal of a programmer in a company is to stay on the wave's momentum so they can benefit from it and drag customers and colleagues along. The ideal scenario would be this:

Real world scenario for product in wave

The next article will be about “How to catch waves of progress”! See you next time!