I have a different theory. Making your own engine is a way to turn the enthusiasm I have now into something productive now.
If I want to make a character jump in Unity I need to familiarize myself with Assets, GameObjects, Cameras (don't forget the CamRotate component!), C#, Rigidbody and Colliders. My hunger for programming has turned into homework. But if I make my own engine I have more control between where I am, where I wanted to go, and what do I need to do in order to get there.
It is also probably a waste of time as I'll solve over and over problems that the game engine has been refining for decades. But I definitely see the appeal.
If I want to make a character jump in Unity I need to familiarize myself with Assets, GameObjects, Cameras (don't forget the CamRotate component!), C#, Rigidbody and Colliders. My hunger for programming has turned into homework. But if I make my own engine I have more control between where I am, where I wanted to go, and what do I need to do in order to get there.
It is also probably a waste of time as I'll solve over and over problems that the game engine has been refining for decades. But I definitely see the appeal.