Even if you may end up using C#, consensus of experts suggests that Python is the best language for beginner programmers. Use either standard Python for Windows, or IronPython for .NET (which allows for some cool stuff).
Learning 2 languages (C# later I assume) will allow you to distinguish between complexities/quirks in language vs in algorithm, which will make you better programmer.
There is no reason to waste time learning java, C# is better fit and Java adds very little.
SQL/databases would be helpful and "nice to know" but secondary.
Find a good developer who can mentor you while learning programming (computational mindset) and debugging.
Would be helpful if your mentor know Python. Python is good tool to know for parsing text files, shuffling files in directories etc, creating small little custom tools, even if would be not used to writing automated tests. And if you can get away with it, write your tests in Python, for increased productivity.
Work on your googling skills. Good start would be to find at least a dozen questions similar to yours in this very forum related to how automated tester can learn programming and transition to test automation. :-)
Why Python is especially good as first language?
First language is the hardest to learn, so it should be easy, but allow to build important understanding of important programming concepts.
- Programmers.SE
- Opinion of a teacher of programming with Art History background - PhD in CompSci and lifehacker
My favorite features for beginners are:
- interpreter allows beginner to start learning and experimenting in first 10 minutes, way before concept of program is explained. And later, explore libraries. Instead of writing simple program to test a library, you just poke around in interpreter.
- debugger allows to explore programming objects as they exists in live code (and not as you thought they will).
- dynamic strict typing so programmer does not have to declare variable types like in Java (variable names "just work"), but wrong type conversion fails (unlike dynamic weak typing in Perl and JavaScript), friendly to both beginner and expert, and scaling to big projects better
- whitespace for code structure has dual benefit of enforcing what is "best practice" in all other languages, and making code of other people easier to read - which simplifies sharing the code and creating communities around it
- runtime errors instead of checked exceptions
- helpful community friendly to beginners with lots of free online resources for beginners and experts.
MIT uses Python as first language. Google has philosophy "Python where we can, C++ where we must""Python where we can, C++ where we must", and Python is language for next 100 years.
For hilarious rant against strong typing and forced OO in Java read Execution in the Kingdom of Nouns . Do not miss the fairy tale "For the lack of the nail", converted to Java as the example of OO running amok.
Learning Python will make you a better programmer in other languages. Especially if you will follow Zen of Python, rules of life in and out of programming like: In the face of ambiguity, refuse the temptation to guess.