I've seen this kind of curve many times, and to me, it's extremely anecdotal. At both ends, it implies that Junior and Senior developers write simple code, but then comes the question, what is simplicity?
Writing complicated code doesn't imply everything that was said a mid-level developer would do (and do wrong, according to the mindset behind the graph).
Simplicity is not about avoiding concepts, structures, and algorithms, but about finding the right balance.
The simplicity shown in the graph sounds like something where you'd have to write imperative code, with no structure , almost as if suggesting spaghetti code (or carbonara code if you're like me). All the implicit criticisms there almost sound like an affront to Javismo Cultural (Cultural Javism).
And not that this is a bad thing, on the contrary, it's a good thing. On BlueSky, sometime discussions about Cultural Javism happen, this idea that has ingrained itself into people’s minds over the last few decades, where you need classes for everything and so on.
A whole baggage that, as many can affirm here, Java has been trying to break free from over the latest versions (I abandoned Java in version 8 [saw a bit of 11], so I don’t know 100% how things are now), especially due to the rise in popularity of the functional paradigm.
But getting rid of some structures 100% (structures that exist in Javismo Cultural) doesn't mean writing simple code, it just means writing spaghetti code.
And you might come to me and say, “But functional programming, yadda yadda.”. Yes, I know, but even functional paradigm has its concepts, structures, and algorithms. You might just be switching from water to wine.
Anyway, my point is that running away from these things (as the graph implies) is a mistake. You need to find the BALANCE, the AVERAGE (we use 'mediocrity' as a pejorative term 100% of the time, but it means the average), and from that average, possibly some form of simplicity will likely emerge.
So, finding simplicity doesn't come from 'avoiding' something, but from evaluating how that thing fits the problem and making sure that fit is viable, ordinary, and small.
As an example, not using design patterns is a mistake, using too many design patterns is also a mistake. Finding that middle ground, that's what it means to write simple code.
Thanks see you next time.