Today is my 7 months since i am learning Java , I have completed 3 books for Java till now<p>1.Java Software Solutions: Foundations of Program Design
2.Java How To Program
3.Head First Java<p>My average of learning is 3 Hours Daily , TOTAL Of learning till now is : ( 630 hours ) .<p>Sometime I have a feeling that i am most completed programmer in the world ( i think that i can make everything ) and sometime i have a feeling that i am the worst programmer in the world (LoL).<p>I also completed Java Lynda.com (Fundamentals & Advance) Tutorials and Thenewboston tutorials i also started to learn Android development 1 months ago .<p>I am hobbyist and i don't have teacher or someone else to advice me what to do .<p>My question is should i practice programming because a lot of people are saying to me its your time just to practice , practice , practice some other people are saying just read a lot of books<p>My goal is to become professional programmer .<p>If i should go with other books which books should i continue ? some advised me to start with head first pattern and others told me to continue with thinking in Java .<p>I Also noticed some programmers read 3 books monthly how is this possible ? Are they just reading and not practicing the examples ?<p>I also want to know about game programming should i know the basic of trigonometry , algebra , physics to make game like mario 2d or should i become advance in math . My math is not very good<p>Thank you
Books are good to learn new concepts, but to actually understand the concepts and know when the right times to use them are, takes practice and no amount of books will make up for lack of practice here. So, since you have already read a number of books, I would say that practice is the most important thing for you now.<p>Also, in time, you will want to learn other programming languages to give you a more rounded experience of what is available both in terms of tools and also concepts which will help shape how you think about and solve problems in java. Ideally you would learn a number of very different languages. At the very least a functional language as this even help you a lot when you begin writing multithreaded programs in java (and also help you design simpler, more composable code).<p>But for now, practice. Try to set yourself real projects or actually useful tasks and make sure you complete them (ie don't have a load of unfinished projects, but finish them to the point that you could release them to non-programmers if you wanted). Projects should range from both large and small to give you experience and practice working on a range of codebase sizes.
I like Project Euler ( <a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a>) especially when toying around with new languages. Its is basically a list of shortish problems to solve. You don't technically have to do any programming to solve the problems, but it is a good way to force yourself into doing some thinking. Also when you complete the problem the forums are usually good for finding ways other people of solved the same problem. Try not to pay too much attention to the code golfing.<p>You could always find a project on Github that is interesting to you and try modifying it.<p>If you interested in game development I've known some people who have enjoyed playing around with PyGame ( <a href="http://www.pygame.org" rel="nofollow">http://www.pygame.org</a> ). You'd have to learn python, but its definitely a language worth knowing.
Yes, write programs.
And go on reading books, eg. SICP <a href="http://mitpress.mit.edu/sicp/" rel="nofollow">http://mitpress.mit.edu/sicp/</a>
or The Art of Computer Programming (Knuth).