I think part of what your missing is based on your own self-described lack of experience.. that you can write simple programs but get bogged down writing more complex stuff. Professional programmers don't really have this problem (or at least the experienced ones don't - there is a learning curve as in any field).
The main "trick" to designing/writing complex programs is to be able to think at many different levels of abstraction and therefore to "divide and conquor" the complexity. At each level of your program (think of it as a layered onion from the highest level on the outside down to the low level stuff of simple programs on the inside) you're going to be implementing one level of complexity/capability by using software components that are essentially only ONE level lower in capability than the level you're at... ditto for the next lower level, etc, all the way down. Designed this way, it's no harder to write the highest levels of the program than it is to write the lowest levels that you are familiar with.
Note though that the software components you're using at any level of your design are going to be domain-specific components that you've designed yourself to make the job easy - they are not going to be 100% off-the-shelf components (other than company internal re-use), other than at the bottom most layer of the design. It's having the right components that makes the job of implementing the next layer up easy (like the idea of the adjacent possible - without having "adjacent" components the corresponding "adjacent possible" is NOT possible, or at least is way more difficult). So, the real issue is not whether one is using a visual vs text-based method of composition but rather in having (creating) the right components at each level.
It's also worth noting that since programmers are the ones with the skills to create programming tools that we therefore necessarily have pretty much the tools we need. Good programmers are lazy (strive for minimalism), and arn't going to fight the same battles every day if they can build a tool to make their lives easier. Of course there's always a bleeding edge of new technology where the tools havn't yet matured (e.g. now that clock speeds are topping out and parallelism is replacing it, there's more need for better tools to deal with parallelism), but basically we DO have the tools we need.