system
Given the following post, respond as if you're commenting on Reddit:
human
Learning higher level programming

Hello

I've been programming for about 5 years now, and I have a decent understanding of several language (mostly C/C++, as well as some assembly and python).

While I do feel that I have a decent knowledge of the detailed, technical stuff (algorithms, data structures, languages and concepts, etc), I'm lacking in the higher level program... design. How do I design and structure larger applications?.  
For example, how would I know if I should design something as an object or function? What should I run as separate threads, and how do I figure these things out on my own?

Links or references to informative litterature or articles are highly appreciated, as well as comments!

Thank you in advance.
gpt
Looking for literature and articles is your mistake. You need to start \*BUILDING STUFF\*.

You're caught in the student-trap, like many before you. Stop reading and start writing. It doesn't have to be anything magic, try making a calculator with a UI or something. A text based RPG, a URL shortener, anything.

Start writing software, that's it.