It highly depends what your goal is. Is your goal to learn technology, specific techniques, or just make a game?
I wanted to see if I could make an asynchronous engine. Yeah, I want to make a game, but for me a large part of it was exploring the technology, and Unity wouldn’t really let me do that. I know how component based game programming works, I’ve done it before, but with Unity I can’t explore the stuff I want to explore (at least without the $1k+ pro version). I have less control over the renderer and update loop tools so I can’t try out certain algorithms I want to try out, and so on.
If your goal is just to learn specific techniques, it really depends which techniques. New graphics algorithms are going to be harder to implement because Unity is your renderer, pathfinding or AI is going to be easier because you can just choose to not use their API.
I’m going through largely the same progression that those Unity tutorials go through. Right now I’m working on the GUI system, so I’m implementing certain techniques (e.g. spatial hashing) to make the point-and-click stuff easier. As I develop the mock components, I learn about my API and what works and what doesn’t and refactor it. So I just decided to write a game that’s almost entirely keyboard and GUI. This lets me deal with stuff like text rendering, on-click events, and the like without having to deal with that and 3D geometry bugs and cascaded shadowmaps, and physics systems at the same time. It also lets me torture test my engine to make sure it’s flexible and can handle a wide variety of things with little fuss. However, if I just wanted to make my 3D game, yeah, I am immensely slowed down by “reinventing the wheel” and not just using Unity (well, except for the fact that I need control over the renderer for my game idea, but that’s besides the point).
So, as I said, it depends on what your goal as a “single dev” is.