Já bych určitě každému poradil, aby vydržel alespoň rok u C/C++ + nějaké ty základy assembleru. Sám jsem nějak intenzivněji začínal programovat v C# s tím, že jsem uměl akorát HTML. Internet jsme měli totiž relativně pozdě (v 19 letech, teď mi bylo 23), takže v podstatě do té doby jsem ani nějak netušil, co všechno je možné.
Začátky s C# - jel jsem podle tutoriálu na živě.cz a zas*ral builder.cz svými dotazy.
No zhruba po týdnu jsem si řekl, že šíleně věcí nechápu a používám je jen tak, že je mám naučené. Typickým příkladem byla problematika eventů a delegátů. Takže jsem udělal, když se na to tak dívám zpětně, nejlepší věc co jsem mohl. Koupil jsem si knihu mistrovství v c++ a řekl si, že se naučím nejprve ty základy a hlavně jazyk, co má blíž k tomu, jak to vlastně v pc funguje.
Po nějaké době jsem se začal zajímat o problematiku prolamování ochran lineage 2 klientů proti používání jednoho programu, který v podstatě hraje za vás. To mi dalo neskutečně moc. Naučil jsem se základy assembleru a toho, jak program funguje a co se děje např. v paměti a taky trochu interní práce ve windows. Např. jedna ochrana odesílala verzi toho nepovoleného programu někam na server a podle toho admin rozdával bany. Já jsem si ve windowsech napsal knihovnu, která při nahrání do paměti procesu přepsala prvních 5 bajtů funkce send relativním skokem do mé funkce a v té jsem nedělal vůbec nic, pouze vrátil návratovou hodnotu podle msdn, což je počet úspěšně odeslaných bajtů. Takže doporučuji každému se ponořit na co nejdelší dobu do té "low level" problematiky a pokud máte navíc něco mezi ušima, tak pak nebudete mít problém s žádným moderním (Java, C#,...) jazykem.