A few things to note about programming. What language you use does not define how well you program. Find a project and start on it. If you can't think of a project check out github and re-write a project from there. Don't worry about scalabilty or speed, these are things that you learn as you progress. Don't think of it as programming with x language, think of it as using x language to learn programming. Ignore all people who say z sucks and you should switch to language x or y. Type all code, only copy paste other code that you've written. You don't need a GUI. Your first project better not be a gamehack. Avoid God Classes at all costs. If you can't explain it to a five year old you don't know it. Stop Googling variations of "How to learn programming fast". If you're bored your project is too easy. Find a mentor Take breaks, code won't run away. Languages are like tools, a hammer is a shitty tool to use on screws. If your coding non .NET languages consider switching to Linux, it will break less code and require fewer work-arounds. It is 100% worth the effort. That's all I have for now. If you don't ever start you can never improve. There are no shortcuts to true skill. I'm no amazing programmer myself, but I'm 100x better then I was 6 months ago. Keep at it.