Theory is fine up to a point, wheras experience is an invaluable tool.

I'd be inclined to advise you to go and build something simple first, maybe a little steam engine.

See first hand just what is involved when people build engines from scratch and overcome any problems that may come up associated with their design or machining techniques.

I think you underestimate the level of experience needed to achieve a final working result. With software you push a button, anyone can do it the same way. With machining, a totally different story.

Not trying to downgrade software engineering in any way as I found out for myself how involved it can be. Just trying to point out there is a big difference.