Mmohmmad wrote:…would you show me the path to be a master in this programming language. Thanks
Sorry, but I don't think I can answer your question in any satisfying way.
Thank you for this question, anyway. I'll try to say just few things.
My education is very fundamental and not related to programming. Such education along is hard to find, and, among many other things, it's based on the idea that knowledge and understanding are not given by any authorities, but should be actively earned, through interest, independent and critical thinking and hard work. A student should be self-driven, not like the one who would ask "tell me what to do". Another important component is really tough criticism, especially from the peer, and constructive attitude to such criticism. This is not for mom's kinds who would complain that they are hurt, as very many inquirers at this forum, unfortunately, do. Either stand for your point, or accept your mistakes, fix them, and be able to say thank to those who "defeated you".
Another important thing is that deep understanding is the main thing, not the formal knowledge of many facts/techniques/patterns. Another one: do every important thing with your own hands, don't trust any existing solution or opinion until you work it through by yourself, at least in key fundamental aspects.
Another important component is focusing on most fundamental aspects, to be able to do the specifics when it is required. In programming, this is a usual fallacy, to do something just because one thinks it's "cool". A usual trivial fallacy is doing some kind of UI, graphics, etc, without proper understanding how type, instances, variables, methods and parameters, exception, thread and stacks work. These basics should be understood to extremely deep level.
One little secret which is not for everyone: before reading about results of others, try to do it all by yourself. Even if you fail, this is not a wasted time. Not only you are not loosing your chance to invent something which wasn't invented before, but, when you finally come to reading available literature, you will be able to really understand you. As to me, I should admit: I have not a very good ability to understand literature before I break my own teeth on the problem in question.
One my favorite advice I've read somewhere: "Don't be a problem solver!". Surprised? I was not. If you face some problem, the very first question you should ask is this: "do we really need to solve it?". Seriously. If people never had doubts like that, any progress would be impossible.
And finally, I would like to show one advice from a famous designer.
I recently found a wonderful passage from a book I use to learn some industrial design. It is written by a very famous designer, the owner of the successful leading design studio represented in several countries, often getting very expensive orders. Even though it mostly appeals to young designers, it is very well applicable to students in any creative field of activity, and very much to programming:
Most problems are solved in a wonderfully simple way: you need to take it and make it. For example, young designers often write to the author, asking him to give them a test task, so they could show themselves. The author always gives them all the same task: create your own task and do it. If a designer really worth something (it means, can solve problems), this person will simply bring the samples of excellent works. And, where to get such samples? You need to make them. And, how to make them? Start with something simple, for example, organize the food in your own refrigerator. And what if there is no any food in the refrigerator? Take a pencil and draw it. And what if you have no pencil? From this point — you are on your own.
Kovodstvo, § 149
[Translation into English is mine — SA]
How about that? :-)—SA