Hello everyone, this is very first my post here, i am 16 years old beginner in programming and game development, well not absolute beginner, playing a bit with console: simple field in console, player controlled character and few "enemys" following player. I am learning in c++ for now, and i started to notice that i hardly concentrate in learning... Then i am about to go and code something i visit 9gag or something like that and stay there for hours.. If not IT lessons in school, i think i wont be learning at all, because only they motivate me a bit.
Any ideas how to start learning properly? Thanks for anything
It was the same problem for me..I found it hard to concentrate..I had a lot of tabs opened in my browser (FB, CNN, YouTube and so on..), I didn't know how to start learning normally. Then I told myself...if I want to be a professional programmer, I have to work hard. It will be a long way to the top. And it is only BAD when I just sit and do whatever except learning programming. The most important is to set your goal and find a motivation. It worked for me, I hope it will work for you too. Good luck!
Wasting time on the Internet can be a problem even for professional developers. I'd advise getting a plugin for your browser that will let you block those sites, at least at certain times of the day. For example, I have Facebook and other social media sites blocked on my work computer (by my own choice) except for a little while in the morning and during lunch. (Note that I'm not recommend a complete ban on using the Internet - you'll have to look up documentation, StackOverflow posts, etc. while coding, and that's fine. Just block the unproductive time-sucking sites.) More generally, try to create a space where you'll be as free of distractions as possible, so that it's hard to find something to do other than coding.
The other thing is just to force yourself to get started. Once you get started, it's easier to keep going. Tell yourself that you'll just code for five minutes, then go through with that. After the five minutes, most likely you'll want to keep going.
Finally, try to set a specific block of time each day for coding - for example, 7pm to 9pm (or whatever you have time for / whatever works in your schedule). Don't allow yourself to do anything else during that time. If you don't feel like coding, the rule is you have to just sit in front of the computer with the IDE open and the cursor blinking at you. Pretty soon, the boredom will force you to start coding something.
I think it's important to choose projects that interest you and make sure they are small enough so you can see progress. If you want to do work in a certain area, design a project that incorporates it. One of the worst things you can do is to start a huge project as a beginner. Even an advanced programmer will get bored with a very large project. If I am working on a project that absolutely bores me, I have no choice but to get away from it for a while and do something else. That can be dangerous because I may never start it up again. Also, try to design code that's as modular as possible, so you don't constantly rewrite the same thing when you start a new project. When you are browsing the web, visit a few programming sites so you stay interested. One thing that's kept me programming games as long as I have is that there is so much variety in it. Modeling, programming, sound editing, you name it. If it was just programming, I would probably get too bored. Going through tutorials are very boring, so verge off and design a small project that uses what you've learned so far, or change the tutorial code to do other things.
I started a new hobby project a few days ago. It's supposed to become a virtual life simulator with neural networks and evolution. It's a project that could grow really large.
I realized I needed to build it in small steps, adding only the bare minimum of code needed for the feature I was working on a the moment. I keep a todo list with small pieces of functionallity I want to add. Whenever I thnk of something I want to build that is not directly related to the task I'm implementing at the moment, it goes into the todo list.
This way, I have a working code base I can test and evaluate at all times. I get immediate feedback and motivation, since I don't get lost in the endless chain of "wouldn't it be cool if...".