So my problem may be relatively rare, at least the majority of the "how to learn to code" questions I've come across deal with a lack of fundamental understanding of computers or languages. I'm fluent in Linux, repairing PC's to an extent, learning new languages is not a problem for me (learned a bit of Scheme to hand in lab assignments in a single day), etc. I've been in the KDE open source project and fixed bugs and segfaults successfully, though the latter required some assistance since I lacked the necessary OS knowledge. But, there's a huge problem.
I can't write code from scratch, especially in my favorite C++ language.I understand the language itself, no problems. Whenever I have to design a set of classes for my program (a very simple one), to break down responsibilities between functions, to choose a language or a library feature to use among the ones available, I come to a stall and spend days starting at the damn screen. I have a great PC, display, and soon a new keyboard. I have a lot of time, yet it's wasted wandering around, unable to make a choice or design decision. The essence of the problem is probably that I don't know what is more correct or appropriate, and, importantly, what is the "common" way to do this or that - I don't want to reinvent the wheel or take the wrong aproach - see the last paragraph for why it is so.
The root as I feel it is here: I'm in a dire need of input on my ideas, for them to be validated or rejected, or at least discussed. My university, and no Russian university for that matter (or no Uni in the world? how is it done in the West?) doesn't offer such a "consulting" service, and no one actually cares for the actual code I write. Yesterday I learn that once a course is over, I'm not allowed to ask that professor for help on projects, which is understandable since they have finite amount of free time and students are many. I learned English with a very, very great teacher, who taught me to actually speak instead of just knowing the grammar. Maybe I can or should find a mentor to get me through the stalls in the beginning?
How can I solve this? How do all those people who post code on GitHub write it in the first place, obviously there's no validation or review for personal projects?
In case you wonder where it stems from, in my mathematical school we were taught to act on probems in a "literate fashion" and areceive feedback, as well as follow the established rules and practices. However, I still managed to find my own solutions, and they were of course accepted. But with this programming problem I'm describing, I feel I simply don't know enough rules or examples to follow..