This question already has an answer here:
I'm a programmer who's still in his teens. I've been doing some programming for a couple of years now, I started on Ruby, and later switched to Python due to the massive amount of learning resources there. I never really built anything worthwhile with Python, but feel like I learned a fair amount of programming fundamentals going through Zed Shaw's Learn Python The Hard Way.
For the last few months I've been looking over languages to learn, as I feel a lack of interest in Python. In the end I decided I want to learn both C# and Haskell as my next languages. My brother, a software engineer, recommends I don't learn Haskell yet, as he thinks I'll get tripped up with some of the ideas associated with it, such as it being pure. Originally I would've just stuck with learning C#, as I have a few books on it and it's frameworks such as XNA, but Haskell keeps drawing me back to it. I also have a copy of Learn You A Haskell For Great Good! which seems like a great start into Haskell.
I feel like I could learn C# along with Haskell at the same time, although it might take me longer. One of my worries about not learning C# quickly is that with the fast pace of C#/.NET/XNA development that the books I have will be outdated by the time I'm really ready to use them. (I don't have any directly about beginning C#, just C# in Depth, a couple ASP.NET ones and an XNA 4.0 book.) Also note, I have access to Visual Studio Ultimate, which seems like it could be useful in learning how to program while still getting access to Intellisense and other VS features.
Haskell on the other hand seems extremely enticing as I'm really interested in some of the things it's best at, such as algorithms/problems at sites such as Project Euler. The advantages of learning two very different paradigmatic languages at the beginning of my programming career seems very advantageous.
My question is this, would it be better (considering my situation) to learn C# and write some non-trivial programs in it, something I've yet to really do, then attempt to learn Haskell and write some programs in it? Or could I feasibly learn both at the same time and still be fluent in both and be able to write projects in both of them?
Edit: I chose tdammers response as the questions answer for the reason that he recognized both options and gave reasons for why either could work. In some ways I agree with Sayem, that generally it's best to learn just one language and master it. However, I have years before I'll be entering the workforce as a programmer, and since it is one of the things I love most I feel like it wouldn't be much of a burden to take the time to learn both and master both simultaneously. That said I still might chose to focus mainly on one language and learn the other on the side.
Edit 2: I've chosen to learn both C# and Haskell at the same time. I'll be using online resources along with a couple books I have. Below is a list of the resources I'm going to use for each language.
- Programming C# 4.0 - Ian Griffiths, Matthew Adams, and Jesse Liberty
- C# in Depth - Jon Skeet
- Framework Specific Books
- XNA Game Studio 4.0 Programming - Tom Miller & Dean Johnson