Learning how to code to become a developer used to start with simple things, like learning the basics of a language and making a simple application. But nowadays, junior developers have to deal with complexity from day one, and I do not know if we are adapting how we learn for them to be prepared.
Let’s take an easy example: WordPress. Before the introduction of Full Site Editing — FSE for short — knowing some PHP was enough to start creating templates or functions — which already was more complex than starting from scratch, as it requires navigating through a large code base: functions, classes, and hooks already defined to be learnt.
With FSE WordPress offers a lot more to use and manage a website. You can customise, create new templates, and add new blocks without even looking at the source code. But it also adds a whole new layer of complexity to developers, because it requires a development environment using Node.js and learning React to create new blocks. Something as simple as writing some styles requires learning how WordPress generates its styles to be able to properly override them.
Taking CSS as an example, if you want to add styles to an HTML you created from scratch, it is easy to learn how to do it. If you are using some third-party library or framework, you also need to know how it works, and how to work with specificity if you want to add your own on top of the framework/library. And if you are preprocessing your styles using SCSS/SASS, learning what the final styles would look like, and how their specificity intersects with the one used by the third-party styles is a whole new level of complexity.
What do you think? Should complexity and working on projects using different frameworks and libraries be part of the learning process? Or should it be learnt through professional experience?