I'm a big fan of Clean Code
and especially YAGNI
. "You ain't gonna need it". If you don't need DI in a project, don't use it. If you need DI for Unit tests but don't need a container, don't use one. Simplicity is a virtue of it's own. Keep it as simple as possible.
If preparing a project for future extensibility costs time or money now, don't do it. You can pay that in the future. Because that future may never come. And if it does, it certainly will not be as predicted and your preparation will be not as useful as you thought.
I've been in projects where there was so much "extensibility" code, that you could have deleted at least 75% of the source code and all required functionality would still have been there. I have no problem envisioning the project manager wondering what the hell took so long to implement such a basic functionality. Don't do that. Plan your project, get your requirements and implement them. If extensibility is a requirement, plan it, estimate it, let your managers know. My guess is they don't want extensibility that badly. They'd rather have another working program instead.
That said, obviously you are learning. If it doesn't cost anything in terms of time or money, go ahead and develop your next program so it can more easily be extended. Just keep an eye on the cost.