Long Exposure

Essays on the art of managing software people

Data & trends

On trends

Photograph: fashion
Fashion · © 2023 Nicolas Herry

We would like to think of producing software as an act of science: a careful, precise series of decisions guided by experience and knowledge, with the sole goal of delivering the best solution to any given problem. A rational activity of understanding, planning and executing. But is it really any of that? Are we supposed to have developed so many ways to solve the same problems? And how come we appear to be still working on the same questions as ten, twenty, thirty years ago? Surely by now we should have found many answers.

Where do trends come from?

The reality is simply that there are trends in software production.

Very often, in order to come to prominence and find adoption, ideas in software must first come into fashion. This has happened again and again in the past: functional programming, object-orientation, algol-like syntax, Service-Oriented Architecture, EJBs, microkernels, Agile, DevOps, RUPS, NoSQL… Some come and go, some stay longer, some keep making comebacks; all have been labelled fads by many.

As the various flavours of software engineering constitute a market, trends emerge as both a manifestation of the market's activity and a way to sustain it. Opinions are created by agents on the market, and consumed back by the same agents, creating a form of idea bubbles. These bubbles go through the same stages as economic bubbles1:

  1. a new paradigm emerges and is promoted by a few early adopters (displacement),
  2. the new product gains momentum, as more and more people start gravitating around it (boom),
  3. this creates both offer and demand, which then form an echo chamber (euphoria),
  4. the product is widely adopted, new projects are started around it and jobs are plentiful (profit),
  5. eventually, the product fails to deliver on unrealistic promises and a new product emerges (panic)

In the above, the product doesn't need to be a software package, it can be anything that can be produced and consumed, like a methodology, a programming paradigm, a code branching strategy or even habits.

An important aspect here is one that I believe is specific to the market of software skills: the lines are very often blurred between who is producing and who is consuming, between offer and demand. This is not a market of physical goods, hard and expensive to produce: this is a market of ideas and communication, easier to shape, share, offer and consume. Moreover, there is another fundamental difference between a science like, say, physics and the production of software: the former concerns a context we believe to be constant, and that we simply discover and understand more and more, whereas the latter deals with an ever changing context. Continual evolutions in hardware make possible what was considered science fiction only a decade earlier, and keep open questions that otherwise would have been closed. It only makes sense that we do revisit the same topic again and again.

What does it mean to you and your team?

Depending on when you are hearing about a new product, the implications can be entirely different. If this happens in stage 1 (displacement), then chances are that you're getting interested for reasons found in your own experience. You have seen the limitations in a given product, and have then started exploring new ideas. By doing so, you have reformulated your need along the new perspectives you have been developing on the way.

Hearing about a product later, like at stage 3 (euphoria) or stage 4 (profit), means that you are more likely hearing about the by-products than the product itself. You're not exploring the new idea yourself, you're rather experiencing it through the prism of an Instagram gallery of opinions, where accounts of use are curated and edited to maximise their audience and only convey a specific message. The problem here is that it gets difficult to define your own discourse, as you’re then speaking with borrowed ideas expressed through borrowed words. You can’t say anything new, as you’ve given up critical thinking by embracing the consensus.

In this context, trends limit thinking, shut your eyes to what lies beyond them and by definition, remain unproven and can’t solve any problem that itself is not trending at the moment. It’s a form of circular thinking, like breathing the same air constantly, and the solution is not to renew the air, it’s to accept to breathe new, unknown, unfiltered air, and run the risk of getting ill or innovative. It's making a conscious effort to try and catch word of new ideas as early as step 1.

So, should we run away from these devilish trends? When it comes to building and shaping a team, not everything is negative: you get to hire from a larger pool and you get to inscribe your team in a common culture, in key with the market. Knowledge and help are more readily available, as are community events which your team can attend or even organise. All this, in turn, makes it even easier to hire people and engage in this cycle. There is a lot of satisfaction to be found in getting what you want and your offering such a work environment is certainly going to create a net positive for your team.

Going for the intrinsic value

But of course, there is a catch: you can’t actually retain talent based solely on ephemeral, superficial satisfaction. Once the trend fizzles out, you're left with the option of going for the next trend or seeing valued members of your team leave. You end up being only one stop on their way, like a service station people stop by on their journey to a better place.

In my experience, not being the destination is absolutely fine. It's more than fine, really: you don’t need to be the destination, and should desire not to be, but you should be an experience helping them to truly value their next stop. You should design the work environment such as it allows the members of your team to develop a better understanding of their field, to broaden their intellectual toolset and strenghten their critical thinking. The experience you're offering them should be aimed at helping them make the most out of their next experience. This one could be offered by you, or someone else. It's doesn't really matter. The goal is not to get people to stay forever in your team, but to make the experience last forever. This is where, beyond the apparent contradiction, these temporary trends can bring long-lasting, essential insights. There is great value to be found in fads: the exercise of going back to the root of the problem and deconstructing how and why the trendy solution was put together; understanding who is going for this solution and who is not; abstracting away the momentary to reveal the permanent. I would venture that in software, under the mask of fashion always hides the true identity of both the problem and the solution.

Going back to the immediate, daily need to remain attractive on the market, you can use trends as time-bound devices to help progress on your long-term path: as explained above, if you want to reach out to a certain population, you must accumulate enough credit to be convincing, and one way to do that is to ride the trends. But the trick to turning the fashionable into the essential is that you don't need to commit, you only need to sail close to the wind. Physics tell us that if you keep a tight control over your direction, you can gain the most speed this way.

We even get a happy ending: eventually, science did come to our rescue.

Notes

  1. As proposed by the American economist Hyman Philip Minsky in his 1986 book "Stabilizing an Unstable Economy".
← All posts