C# is basically Java with some minor differences
Just about everyone I see saying this stopped seriously following or working with C# back at 2.0 or earlier. The changes since then have produced a very different beast than Java. Whether it has origins in NIH syndrome is entirely besides the point - MS was bolder with the language and the framework than Java's sluggish committees, and at the end of the day has built the better mousetrap.IMO any novice who isn't Windows phobic would be better off learning it than Java, in part because it will expose them to a wider range of language constructs and capabilities (pseudo-functional bits, task parallel stuff, etc).
That said, a total novice would probably be better off dabbling in a dynamic language like Python than taking on either Java or C#. Nothing like a REPL for getting your feet wet.
I don't see that person running parallelization schemes in their first 3 years.
These are valuable concepts to be exposed to, and IMO provide an advantage over learning Java.
That's really inaccurate. Mono aside, C# came up with quite a few innovations of its own, and I'm saying as a 15 year veteran Java developer who would love to see some of these be added to Java (at least we're getting closures next year).
Also, learning C# will teach you a lot of constructs and concepts that will be readily available in other languages such as Java, Kotlin, Ceylon or Scala (and to some extent, even Haskell).
The "proprietary, NIH, blah blah I hate Microsoft" nonsense belongs on slashdot, not here.
Linux, Windows, Mac, Android, iOS.
Considering that Java won't run on iOS (nor can you deploy java apps to the app store), I'd say C# is far more platform agnostic.
To be honest though anything non-x86/ARM is pretty esoteric these days, and realistically if you're going embedded C is a far better bet than anything else. (except maybe forth)
I have programmed in all three environments professionally and I know many different programming languages at least well enough to build a basic GUI.
I say that to preface what I am about to say... Java is not the worst language I have used but it's up there. I was a professional c# programmer back when it was in its 1.1 days and now I have revisited it for another professional project and it has improved to the point where I wish it was native on the Mac and on Linux without mono. It's what c++ should have been.
Edit... I have used java quite a bit and it's a terrible language.
That's absolutely not true, and everybody that has programmed in both languages know that's not true.
An awful lot of novice programmers take years to progress from their "mother tongue" to their 2nd and 3rd languages, if they even progress at all.
I think marrying yourself to a proprietary language like C# is a mistake, not because of any particular C# language feature, but because it's yet another product of Microsoft's extreme case of Not-Invented-Here Syndrome (see for example netbios, active directory, etc etc etc). They have a compulsion to create proprietary, non-compatible versions of things that already exist, and you'll be handicapped if you only know C# and ever need to work on Not-Windows.
C# is basically Java with some minor differences (differences that will be immaterial to the novice) and Java has a far better degree of platform-agnosticism and would be a far better choice for a first language than C#, IMHO.