Haych Wrote:What sort of things can one work on as a beginner?
With programming for me, I first learned in classes and did excercises in the class. It didn't really "click" for me until I discovered libraries and figured out that I could put things together and make stuff work to solve a problem.
I'll give you one general piece of advice that might help you progress into more challenging programming.
Every time you encounter a problem, be aware of it. Ask yourself, "Could a computer solve this problem?" (Hint: The answer is almost always 'yes').
Write it down.
When I first started trying to find "problems" it was hard, so here is an easier way to become conscious of problems.
Every time you encounter something annoying, ask your self "Is this a problem? Can it be solved with computers?"
I can't stress it enough though:
Write it down immediately. Note what caused the annoyance and what is problematic about the situation, try coming up with a small 2-3 sentence description for a program/service to solve that problem. Since I have my smartphone on me almost always, I find using Evernote helps with this as I can easily sync everything. I've learned not to trust my short term memory to keep problems in mind because there is too much going on and I feel my mind is more keen to toss out annoying, problematic stuff.
These annoyances/problems are the basis of good programs, you'll probably find that many of the program ideas that arise from these are probably technically difficult to implement. However, the act of putting a problem on paper, and trying to figure out what things you might need to solve it and how to go about it, even if its very general, will help you progress as a programmer.
Hold on to those problem-solution ideas and keep them in a "project bucket." You may not be able to tackle the problem now, but there may come a day in the future when you are more knowledgeable and you can. Additionally, these ideas are the foundation of a potential startup company. Not every idea is worth building a company around, but you can't even start building a company without an idea, and the best companies are formed around solving a problem.
That said, keep reading and learning what you can. After you do 1-2 small projects you'll start to get a good handle on things. Also, don't be afraid to "reinvent the wheel" for learning purposes. Trying to do something that already exists, and is more polished than what you can build, is a great learning experience and it can give you a great sense of just how much work goes into building a very polished piece of software.