Pro kontext - mám vystudovaný MFF (teoretická informatika + AI), cca 15 let praxe v oboru, na začátku jsem na tom byl podobně jako popisuješ. Motivuje mě řešit těžké problémy.
1. Aplikované AI je teď víceméně jen machine/deep learning, je v něm dost velký přetlak na pozice a z mojí zkušenosti lidi čekají nereálné výsledky. Je to méně o vývoji, spíš o tom udržovat si přehled v oboru a umět natrénovat dobrý model a hrát si s jeho parametry. Mě by to nebavilo, ale YMMV. Asi bych se na tuhle specializaci vykašlal.
2. Práce v herním průmyslu (zmiňoval jsi 3d rendering a unity) -> vyhnout se velkým obloukem. Malé platy, dost často crunch time a malá flexibilita pro změnu - pro povýšení se ti typicky počítají jen dodělané tituly, takže v zásadě nedává smysl odejít v půlce vývoje.
3. O quant tradingu a computer vision toho moc nevím, tak se ani nebudu snažit radit.
4. Management potřebuje jiný skill set než vývoj. Je to víc o plánování práce, řešení (a předcházení) konfliktů, práce s členy týmu na jejich rozvoji, reportování tvému šéfovi a odstínění týmu od problémů co se na tebe hrnou shora. Dost často taky o udržování kontaktů a hraní politických her v rámci společnosti (v závislosti na tom jak moc je ta společnost velká). Je to taky dost osamělá pozice, zpravidla bez jakéhokoliv kódování. Jestli ti tohle spadá do kolonky "challenging", tak směle do toho. Já si to zkusil a není to nic pro mě - chybí mi tam týmová práce, vadí mi politikaření a řešení motivace/konfliktů lidí v týmu není typ problem solvingu, který by mě naplňoval.
5. Kde jsem nakonec skončil já - vývoj a design distribuovaných systémů, čistý backend. Placené dobře, challenging taky a dá se tam dobře růst technicky až do architektonických rolí. Je po tom velká poptávka na trhu (mimo jiné se mi ozývají i z těch fintechů co dělají quant trading).
6. Co mi během kariéry přišlo použitelné a co mi dávalo konkurenční výhodu oproti ostatním vývojářům:
Takový ten základ: problem solving skills, algo+datové struktury, memory management, multi threading (!!!)
Dobrý rozhled v různých prog. jazycích/paradigmatech: funkcionální programování (scala, haskell, erlang, ...), managed (c#, java) / unmanaged (c++, ...)
Co mě nenaučili na MFF, ale je potřeba (možná se to už učí :-)): TDD, design patterns, git, ...
A pro pozdější část kariéry (no vlastně i do začátku): soft skills - pokora, otevřenost ostatním (naučit se poslouchat a nesoudit), vyjednávání, mentoring, komunikační dovednosti, vidět věci v kontextu, rozumět přínosu pro zákazníka. A hlavně: rozhodovat se na základě dat (a vědět co měřit), ne pocitů
Obecně mi přišlo, že za dob mého studia dával matfyz důraz na dokonalá řešení (optimální algoritmus, důkaz bez chyb, ...) s čímž jsem pak narazil v praxi. Zejména kvůli tomu, že problémy, které v praxi řešíš, nemají jasné zadání, nebo zadání neodpovídá realitě. Díky tomu se nevyplatí investovat do optimálního řešení, ale spíš iterativně zkoušet upravovat nějaké "good enough" řešení co nestojí moc zdrojů (čas na vývoj, náklady na provoz, náklady na údržbu, ...).