Even if you may end up using C#, research shows 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](http://programmers.stackexchange.com/questions/124783/why-is-python-recommended-as-an-entry-level-programming-language) - Opinion of [a teacher of programming with Art History background](http://blog.trinket.io/why-python/) - [PhD in CompSci](http://pgbovine.net/python-teaching.htm) and [lifehacker](http://lifehacker.com/which-programming-language-should-i-learn-first-1477153665) My favorite feature 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). - **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 - **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"](http://stackoverflow.com/questions/2560310/heavy-usage-of-python-at-google), and [Python is language for next 100 years](http://paulgraham.com/hundred.html).