Predevsim musi umet programovat, coz znamena myslet jako OOP programator (pochopeni OOP, dekompozice problemu, zakladni algoritmy,...). Od toho, jak je v tom dobry, se odviji, co musi umet dale - je radove jednodussi naucit nadaneho programatora javu, nez neobdareneho znalce javy programovat. Pro praci na ostrem projektu je podle mne bezpodminecna znalost syntaxe jazyka (uplna a presna), OOP v jave (tzn. jake jsou tam prostredky pro realizaci OOP), collections frameworku, nekterych veci z java.util a koncepce testovani. Dalsi pak podle konkretnich projektu (synchronizace, io, networking, JEE, Swing,...).