I am actively teaching myself C#. Since this is the language that XNA is built around, I hope to conquer it quickly. I think like most languages, reading it and following its syntax is the easy part, writing it is quite a bit more challenging.
I have attempted to learn C, C++, and Visual C++. Although I purchased books, the applications and compilers, I never seemed to stick to it. I was thinking the other night at the concept of learning a language and how it can take months to learn and a lifetime to master. In fact, I have been working with UNIX scripting for about 5 years and have only just scratched the surface. In fact, only over the last 9 months or so have I even begun to work with sed and awk. Even more recently, I became aware of the use of functions.
I blame the fact that my programming knowledge is based on need, rather than desire. While my desire to learn a new language is red hot, the flame is like that of a flash fire. I lose interest. Mainly because I wade through the same beginning chapters or tutorials that talk about all the same shit I know already: data types, if-then-else, arrays. I never stick in there long enough to get to the stuff that I don’t know.
This time I am really trying to wade through the common programming logic, so that I can get to the stuff I don’t know. Currently, I am finally at that step in my C# learning where I am venturing into the unknown. I can feel my brain being taxed. I am having to stop the tutorial to delve deeper into specific topics. I am also finding that, although I waded through the boring stuff, I may not have spent enough time generating the rote experiences that are needed to embed the early lessons so there is the fluency to concentrate on the new topics.
I think what is important for me, is that I work in parallel on an application of interest. Something tough, but not impossible. I built an application within UNIX that takes some parm files and data files and builds user friendly html docs. I think I am going to try to build up a similar version with C#. This will give me the hands on that I need as well as puts me in a position to start delving into the online help. I can start learning how to find the answers to my questions inside the user forums and documentation.
I need to generate the ‘need’ that will drive me to learn what I ‘desire’. Putting myself in the position to generate a tool that will enhance my value to a client is a plus. So without further rhetoric…