A lot of it comes down to, how good are you at designing systems in your head/on paper before your start. One of the other things is, do you know the extent of the Engine, ie functions/features/classes/types, etc. I mean, i do a lot of stuff in C++ first, cause i have the idea in my head, i created a kinda plan for it and know the end goal. Sometimes this isn’t the final version, i sometimes refactor things again, if i find a better way, learn something new, or i need to optimize it.
The thing is, i have been programming for years, in Pascal, C, C#, C++, Java, etc. (15+ years), i still spent time in the blueprints, to get to know the engine. I am also a firm believer in “not everything in c++”. There is a balance. C++ for the core, expensive math, expensive tick functions, etc. Expose things that are to be edited a lot/adjusted to BP. Even if you just use BP’s as Class defaults (data only). Exposing properties for easy tweaking is a must. Exposing events/delegates/bp functions is also beneficial. Honestly. Getting that balance is the key to good development progress. C++ programmers don’t want to be hammered by gameplay programmers, to change one variable or adjust one thing, that should have been exposed to BP!
Just my two cents