How I learn new things:
1. When I'm waiting for something, like build or a test run - I', reading API references to the libraries I use right now top to bottom. This way I learn new things and staying in the zone at the same time.
2. I read all kinds of programming books in bed before going to sleep. It's a really good way to fall asleep, since they tend to be extremely boring and consist mostly of things I already know.
How I stay motivated:
1. I accept the fact that I can't be motivated all the time. Sometimes I feel sad and this is ok, just a natural cycle
2. I write code that inspires me. If I can't write such code at the present moment, I'm thinking about it, trying to figure out what can I do about my current task to make the result exciting!
3. When falling asleep, I plan my code architecture or thinking about the issues I were not able to resolve during the day. Thinking about issues in computer program is soothing, unlike thinking about issues that involve people