Iako sebe ne ubrajam u seniore i arhitekte mislim da stvari treba razumeti iz korena da bi znao da ih primeniš. Naravno, programiranje je dovoljno široko da ne možeš sve znati (čast izuzecima), ali možeš imati predstavu o čemu se radi, kako radi i sl. na osnovu prethodnih znanja. Teško je zaista razumeti i ceniti stvari kao što su npr. stringovi i auto garbage collection ako nisi radio bez toga.
Moj savet je da ako zaista hoćeš da naučiš programiranje da znaš intuitivno, a ne napamet, je da batališ C# na neko vreme i naučiš se C i C++. Ne detaljno, ali da znaš kako i zašto. Onda kad počneš da učiš novije stvari sve nekako dobije perspektivu, stvari legnu na mesto, jer osnovni principi se nisu promenili već 50 godina. Ako bi krenuo tim putem preporučujem ti knjigu "Coronado C" i posle dodatak C++. Koliko vidim knjiga je i dalje živa i zdrava iako je toliko stara da kompajlere koji se pominju skoro da ne možeš da nađeš više

. Već posle toga ćeš videti koliko bolje razumeš C# iako si učio C. Onda posle kreni sa C# knjigama i ostalo.
Sa druge strane, ako ti c# treba da rešavaš konkretne day-to-day stvari nemoj da se zamaraš sa C-om nego odma udri po c# pa kad naletiš na problem guglaj i traži, ali uvek probaj da razumeš rešenje.
I nemoj da potcenjuješ poslovne aplikacije, kada ne bi bilo njih (i još bitnije para iza njih) verovatno ne bi bilo ni napretka u modernom programiranju.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.