Obecně se vyskytující požadavky, sestupně dle četnosti v průzkumu (viz ProfilBakalare a PotrebyZamestnavatelu):
- musí umět programovací jazyk, stačí jeden, ale skutečně pořádně
- důvody: další jazyk se v případě potřeby naučí poměrně snadno
- zkušenost s prací v týmu a na reálných projektech
- důvody: ve firmě pracují z 95% v týmu
- UML - přečíst model, případně umět vytvořit některé základní (tříd, aktivit, stavový, sekvencí)
- důvody: komunikační prostředek ve firmě
- základy konfiguračního managementu - práce s CVS nebo Subversion, povědomí o bug-tracking systémech
- důvody: rutinní používání v denní práci programátora, řízení projektu (Kerio)
- umět psát anglicky (a také česky) a rutinně číst anglické technické texty
- důvody: komunikační jazyk ve firmě (Kerio, GK), zahraniční zákazníci, outsourcing programátorů, školení
- schopnost dekompozice při designu, programování do rozhraní, dobrá organizace a čitelnost kódu (srozumitelnost pro ostatní vývojáře)
- důvody: tvořit kvalitní kód který může někdo jiný oponovat a/nebo přebrat
- používání hotových knihoven a návrhových vzorů vč. znalosti jejich výhod a nevýhod
- důvod: snazší komunikace, úspora nákladů na vývoj
- znalost SQL - aktivně základní DDL i DML ("select + create"), povědomí o triggerech a uložených procedurách, vyzkoušeno na robustním DB serveru (Oracle, PostgreSQL?)
- důvod: základní dovednost
- znalost fungování webu, schopnost vytvořit jednoduchou webovou aplikaci
- důvod: většina aplikací má nějaké webové rozhraní
- prezentační dovednosti - umět udělat prezentaci před publikem, umět napsat strukturovaný text srozumitelný pro odborníka i neodborníka
- důvod: obhajoba, školení; psaní podkladů pro vedoucí
- komunikační dovednosti - umí položit smysluplnou otázku, nekývá, že rozumí, když nerozumí
- důvod: komunikace se zákazníkem, s kolegy, se šéfem
- znalost testování - k čemu slouží test a jak ho napsat
- důvod: denní chléb i programátora
- znalost některého skriptovacího jazyka (Perl, bash)
- důvod: automatizace rutinních činností, jednorázové úlohy
Některé zajímavé singularity:
- principy distribuovaných systémů (transakce, protokoly) [GK]
- paralelní programování (vč. synchronizovaný server-objekt, side-effecty monitoru) [GK]
- programování ve vláknech (stává se čím dál častěji běžnou potřebou) [Kerio]
- praktický dopad výpočetní složitosti na velkých datech [Kerio]
- vědět něco o normách, standarech, zkratkách z IT [Kerio, CCA]
- umět se sám nabídnout, "prodat" [CCA]
- schopnost pracovat v příkazové řádce na klasickém UNIXu? (Solaris, AIX) [I-I]
- umět programovat v C a nemít k tomu odpor [Kerio]
- znalost více platforem -- buď je Windowsák nebo Linuxář ale chybí mix [Kerio]
Obvykle požadované technologické znalosti:
- Ant, JUnit?, případně Log4J?
- Subversion nebo CVS
- Oracle nebo PostgreSQL? + JDBC
- HTML+CSS+HTTP (případně JavaScript?)
- XML, JAXP, základní DOM
- .NET
- JSP, ideálně základní Struts nebo JSF
Non-requirements, tj. co není třeba aby věděli
- fyzika, elektronika
- analýza požadavků, tvorba doménového modelu nebo entit
- EJB
- prezentace vně firmy
Postřehy a poznámky
- "síťař z oboru DS je použitelný jako dobrý síťař, softvérář z SWI není použitelný jako dobrý databázista"
- inženýři moc neumí dekompozici na moduly/komponenty a "programování do rozhraní"
- jako team leadeři se víc osvědčují absolventi MFF UK než FAV.
- chtělo by to v nějakém předmětu probrat přehled "sw eng landscape" - např. dle ISO 15504 / SPICE
- absolventi, kteří prošli "all Java" studiem, se "nechtějí snížit na úroveň C" což je problém
- absolventi přichází s tím že "testování je otrava"
Viz ZnalostiDovednosti