When I first heard about Windows 8, I decided that I want to learn how to build apps for this new and promising platform. This was around 2011 and in this time Windows 8 was just a developer preview version. There weren't any tutorials or videos that could help ! I opened dev.windows.com - by the way it wasn't as rich as it is now - , installed the needed tools and made my 'Hello World' application.
Yea , I made it , now let's dig deeper but actually what came next wasn't like this good start , frankly everything went wrong ! The code samples were too complex to be understood by a guy who only knows C# programming basics. The support was weak so one couldn't easily find any help. I remember that I asked a Microsoft employee about how I could learn Metro Style Apps development (The old name of Windows 8 Store Application ) and where I should start , he didn't tell me anything except that I should check MSDN. "Again!" said to myself.
I didn't stop trying, I read some articles and checked may be all the tutorials that were available at this time. After some time I figured out that what I really in need to is studying a lot of concepts so as to become ready for developing polished and professional apps.
May be you are asking yourself how some people are able to learn a technology in just few weeks and sometimes in only a week or less. Actually there are two opposite cases :
1- Geeks who already have strong technical foundations and excellent understanding of the main concepts of this technology and so are able to absorb any new features or new releases easily and fast.
2- Beginners who don't have enough knowledge or experience and all their projects or apps are made with the help of code snippets , tutorials and may be video tutorials that they often don't truly understand.
So how could you solve this problem if you are a beginner who looks really for mastering a technology not just making some simple and repeated applications ?
1- Focus on learning concepts at first
Concepts are like the basement of any building , The stronger it is , the stronger and taller your building would be. So don't be hasty and give as much time as possible to mastering basic concepts stage and even if you face a feature / option that depends on a concepts or something that you aren't aware of , face the problem and give your self the enough time to go back and learn this thing before you continue. for example if you are going to learn Android mobile development , make sure that you mastered Java concepts and object oriented programming concepts and are aware of xml and the basic concepts and problems that any mobile developer should know.
“The formulation of the problem is often more essential than its solution" Albert Einstein
2- Read , Read , Read
Although I recommend video tutorials -if they are available- to learn the basics of any technology , I can't deny that reading is essential and it is the only thing that could make you aware of the details of anything and therefore understand it well too. Reading shouldn't be limited to text books. There are hundreds of blogs that have tons of excellent information that are extremely beneficial. Sites like CodeProject , MSDN , JavaDoc , StackOverflow should be in your bookmarks if you are serious about learning technology and definitely you should spend hours reading new things in them,
3- Learn by doing
Watching and reading tutorials is good but isn't enough at all. There are several skills -Debugging is one of them – which you won't acquire unless you get your hands dirty in code. Download hands on labs and try to build them on your own , apply what you learnt and make simple projects. This would keep you motivated and would make you better programmer of course.
4- Keep updated
Technology is changing everyday and you should keep up with these changes and continuously update your knowledge if you want to compete in this market. There are many tools and ways that could support you. Subscribing to technology geeks blogs , following them in Twitter and regularly check dev. sites should help a lot. Attending technology related events is indispensable.
Finally, there is an excellent blog about how you could stay on top by Bob Tabor that I recommend reading.
I hope this blog could help you learn to avoid most of the mistakes that beginners commit and use your time wisely too. For non-beginners , I would be happy to hear from you especially if you have other advises or recommendations that you believe should be added to this blog. Good Luck !