P.S.: Mám na mysli, za jak dlouho je člověk schopný naučit se takovou úroveň, díky které si začne vydělávat!
Definuj „začít vydělávat“. Pokud to myslíš jako freelancer, tak imho tak dva až pět let.
C++ není ostrov v moři, a přestože jako jazyk je relativně těžký, tak jím to teprve začíná. Potřebuješ toho znát kopec o toolingu kolem toho (kompilátory, linkery, makefiles, build systémy, způsoby interakce s knihovnami, operační systémy, sítě, endiany, ..). Musíš taky trochu rozumět hardware počítače, chápat jak asi funguje procesor, jak je organizovaná paměť. Hodí se mít nějaké základní zkušenosti s assemblerem, abys chápal kde se vůbec vzala půlka těch konceptů a nebyl ztracený s pointery a nepřímým adresováním a tak podobně.
Hodně záleží na tom jaké máš předchozí znalosti. Pokud jsi se vším tímhle dělal už někdy dřív třeba v nějakém jiném kompilovaném jazyce, tak to bude do velké míry jen otázka mapování jednoho konceptu do druhého a jsi schopný to udělat jak píše Jenda; během pár minut vygooglit a nějak si upravit ukázky. Pokud ne, tak ti vždycky bude trvat nějakou dobu než to pochopíš a ve skutečnosti věci často nechápeš, dokud si je nevyzkoušíš, což žere čas. Další věc je, že tohle můžeš dělat když se doma učíš, nebo když jednou za čas něco upravuješ, ale když tohle budeš praktikovat v práci, tak jednak nebudeš vůbec stíhat (potřebuješ to mít v hlavě, to lookup rychlejší o několik řádů než googlení a čtení článků) a druhak kolegové vážně nebudou nadšení ze špagety co jsi poslepoval z kousků kódu, kterým sám pořádně nerozumíš.
Vím že je to lehce irelevantní k dotazu na práci, ale uvádí se, že aby ses stal skutečným odborníkem, či
mistrem v nějakém oboru, tak se říká, že tomu musíš věnovat minimálně deset tisíc hodin. Platí zde
Parretovo pravidlo, které říká, že prvních 80% se naučíš za 20% času. Zbylých 20% ti bude trvat 80% času. Takže za cca 20% z 10000 hodin, tj 2000 hodin, tj 250 dní, když tomu věnuješ 8 hodin denně.
Samozřejmě, spousta firem je v dnešní situaci, kdy lidi na trhu moc nejsou, ochotna nabrat juniora a zaučit si ho, i když neumí prakticky nic. Takže práci můžeš sehnat po pár měsících, a učit se průběžně u toho.
Jazyk a tooling a prostředí a knihovny a tak dál jsou navíc jen jedna věc, a to ta čistě technická. Pak tu máš různé sociální stránky, jako například jak psát čistý kód (viz kniha
Čistý kód), jak správně dokumentovat, ať už interně formou komentářů a docstringů, tak externě, formou generované dokumentace a UML diagramů. Jak dělat dobrou a rozšiřitelnou architekturu, což se třeba já mám pořád ještě hodně co učit, přestože jsem začal programovat v roce 2004 a profesionálně to dělám už víc jak pět let. Jak spolupracovat s lidmi v týmu (slack, IRC, wiki, ..), dělat nějaký agile (standupy, issues, sprinty..) a verzovat kód, ať už jde o třeba o GIT (viz třeba kniha
Pro Git), nebo mercurial, jaký branchovací model budete používat. Jak dělat code review, a naopak, jak přijmout code review. Jak si plánovat práci (mně třeba hodně pomáhají osobní kanbany), odhadovat a pak dodržovat termíny. Jak rozplánovat projekt. Pak tu mýš čistě psychologické stránky, jako kde třeba brát dlouhodobě motivaci, jak se vyrovnat s frustrací, s nedostatkem energie, s tím když se nedaří. Jak nevyhořet, čím se rechargnout a jak dlouhodobě a konzistentně nabírat energii, abys podával optimální výkon. Jak se sebevzdělávat a nepřestat v tom jakmile se dostaneš na nějakou dostatečně funkční úroveň. Jak snášet kritiku a oddělit se od své práce, abys mohl snášet kritiku svojí práce. Spousta věcí je navíc propojená, různá algoritmizace jde plynule do teorie grafů a her a matematiky. Debugování třeba dost souvisí s vědeckou metodou a formováním hypotéz. Naučit se jak v klidu mnoho hodin debugovat nějaký problém, systematicky procházet prostor možných chyb a dělat heuristiky, které ti usnadní hledání chyb, a to vše bez toho aniž bys z toho měl stres a frustraci, to je taky běh na dlouhou trať.
Co se samotného hledání práce týče, tak jsem to kdysi trochu nakousl tady:
http://www.abclinuxu.cz/blog/bystroushaak/2017/7/jak-se-stat-programatoremRelevantní meme: