knowledge programmers must have? where should I go from here?
I was doing simple programming, fixing things and never really building or designing anything, and I was using proprietary technology, so that experience was pretty useless when it came to finding another job. I'm currently learning C#/ .NET and hope to obtain a job doing .NET web or desktop development (or at least a job where I will be working with these technologies).
what I want to know is where I should go from here, given that most of the formal programming education I have received is limited to a handful of freshman level courses. I need guidance trying to understand what subjects I'm better off studying during the next 4-6 months, in the interest of returning to the labor force, catching up with computer science majors, and, of course, my own personal satisfaction.
Let me put it this way: I actively try to deepen my knowledge of C#, .NET and object-oriented programming in general, and the harder I try to find answers, the more questions that are posed before me. I feel that even though I have acquired knowledge of a core set of programming-related concepts, I still don't know enough.
For example, am I better off expanding my knowledge of everything that goes on behind the scenes, and learning to work with pointers and memory addresses, and manipulating data at the binary level, possibly using an assembly language, or am I better off learning all the intricacies of concurrent programming?
Am I better off learning design patterns? Or studying and memorizing 'basic' algorithms and maybe some more advanced ones as well as trying to come up with some of my own?
Or am I better off continuing to deepen my knowledge of C# and .NET, and learning as much trivia as possible? (ie: not possible to have a constant field of non-built-in struct type!)
Or should I learn as many .NET API's as possible?
Or should I continue to learn about Windows programming? (ie: learning to create applications that make use of the registry and so on?)
Or should I stick to making web sites and GUIs with fancy controls and lots of eye candy?
Or am I better off learning as much SQL server as possible?
(I know there is probably no right or wrong answer here, but my guess is that some paths are likely to be more 'useful' than the other ones when it comes to becoming not only a competent programmer, but most importantly and at least for the time being, employable.)