Язык формирует способ нашего мышления и предопределяет, о чем мы можем думать. — Б.Л. Ворф.

При обучении программированию, люди выбирают C#.
Человек, которого учат не мышлению, не алгоритмизации, а использованию библиотек .NET, будет думать, что он действительно самостоятельно пишет программы, однако это не так. Как минимум, программисту необходимо знать основные структуры и алгоритмы обработки данных. А как он узнает о них, если, например, алгоритм сортировки на C# пишется так

Array.Sort(массив);


т.е используется класс Array и метод этого класса Sort. и все. Никакой алгоритмики.
Таким образом, от человека «прячут» машину и алгоритмы. Он зависим от .NET, он не знает, что творится внутри компьютера. Просто очередная «машинистка», которая только и умеет вызывать методы классов. От этого и низкий порог вхождения в профессию, и, в скором времени, переполнение рынка разработки программного обеспечения такими вот «машинистками».
Никаких структур данных, никаких алгоритмов, никакого ассемблера.(посадить c#-ника на ассемблер — ужас).
Так что, по моему мнению, надо начинать обучение с таких языков, как С/C++, Pascal.
Начинайте с фундамента, а писать на C# всегда можно научиться.
Даже на каком-то англоязычном сайте была статья с теоретическим минимумом для программистов, в нем не только C++, но и те же структуры данных, алгоритмы, компиляторы, сети, ос, организация эвм, искусственный интеллект и.т.д.

P.S Просто крик души. Становится стыдно от того, куда скатывается профессия.