Don't worry. The pure use of CreateChildControls is only due to old habits of SharePoint developers due to the way Web Parts was developed in the past.
If you prefer to build your web parts declaratively due to the increased productivity then just use that method.
The only reason to prefer CreateChildControls is if you need the extra flexibility of adding child controls dynamically.
Here is some of the history of web parts to explain where a lot of SharePoint developers got their habits from.
This was the first version of SharePoint build on top of ASP.NET, but it used it's own page parser so .ascx files wasn't supported which meant that the use of CreateChildControls was the only possibility.
Later versions of SharePoint
These are "pure" ASP.NET applications which fully support .ascx files.
But the method of creating web parts was limited by the support of different Visual Studio versions
Visual Studio 2008
No built in support for Visual Web Parts so most developers continued to use CreateChildControls as this was what they got out of the box.
Visual Studio 2010
Introduced Visual Web Parts, but what it created was a web part which was a thin wrapper around a UserControl which it loaded using Page.LoadControl which loaded the .ascx from the file system. This had two drawbacks:
- Could not be used in Sandboxed solutions (but do we really care?)
- It was cumbersome to use Web Part properties and connections as these had to be implemented in the web part and then somehow delegated forward to the UserControl which had the main logic
The last part meant that most SharePoint developers continued to use CreateChildControls
Visual Studio 2010 SharePoint Power Tools, Visual Studio 2012 and later
Introduced a new paradigm for the Visual Web Part (depending on the version it either has
Sandboxed or lacks
Farm Solution Only in the name) , where Visual Studio generates a partial class based on the .ascx file which is "merged" with your class, this generate a pure web part which is functional no different than the one created using CreateChildControls.