Práce na novém programu začíná obvykle nastole programátora-analytika, který určí návrh budoucího programu, který předá řadovým programátorům. Ti ho převedou do sekvence příkazů, kterým rozumí počítač. Kratší programy může psát jen jeden člověk, itak by ale měl použít návrh. Programování bez návrhu vede nejčastěji ke špatnému programu, který je nakonec nutné přepsat, tentokrát snávrhem.
Procesor uznává pokyny vestrojovém kódu. Ten je však pro běžné programování naprosto nevhodný pro svou nízkoúrovňovost, navíc je specifický pro různé typy procesorů.
Programátoři si proto postupem času vymysleli nesmírné množství vyšších programovacích jazyků. Jsou to také sekvence příkazů, ale poskytují větší úroveň abstrakce (dofunkcí,objektů atp.). Cenou zatoto oproštění se od složitého programování vestrojovém kódu je nutnostpřekladu zdrojových kódů do jazyka procesoru před spuštěním a pomalejší vykonávání vzniklého kódu.
Téměř všechny jazyky mají stejné vyjadřovací schopnosti (jsouturingovsky úplné), ale různé jazyky se svousyntaxí, schopnostmi základníchknihoven apodporou hodí pro různé typy projektů. Například pro programování malýchwebových projektů se obvykle užíváPHP, protechnické výpočtyFortran atd.
Dobrý programátor umí více programovacích jazyků anedělá mu problém osvojit si kvůli novému projektu další. Je to umožněno značnou podobností užívaných jazyků – sdružují se do skupin užívajících podobnáparadigmata (objektově orientované programování,funkcionální programování) nebo podobnou syntax (nejběžnější jsou variace na témajazyka C).
Značnou část svého času programátor tráví testování svého programu na různých vstupních datech a uživatelských akcích. Když zjistí chybu (anglicky bug, dalo by se přeložit jako moucha), provádí ladění (anglickydebugging).
Programátoři se často dělí na aplikační a systémové.
Aplikační programátor vytváří programy plnící konkrétní práci – počítáderivaci nebo tiskne upomínky vknihovně.
Systémový programátor se oproti tomu stará o vyvíjení systémových programů, jako třebaoperačních nebodatabázových systémů, aby se například programátor upomínky tiskoucího systému nemusel starat o konkrétnosti komunikace s tiskárnou.
Dnes už je možná takové dělení poněkud historické, hlavně protože s expanzí počítačů je systémových programátorů relativně mnohem méně.
Související informace naleznete také v článkuSoftware.
Programátoři dnes spolupracují s celým spektrem dalších specialistů (například grafiků) při výrobě různých typů programů, mezi něž patříkancelářský software stejně jakohry awebové aplikace.
Programátoři mají svou vlastníkulturu, která se vyznačuje odmítáním uniformity a autorit. Hezký prototyp programátora byl předveden mainstreamové kultuře v podobě Nea ve filmuMatrix – pro poznání pravdy se vzdá místa v programátorské firmě a spojí se Morfeem, který je symboly autority (uniformními Agenty) označován za teroristu.
Oblíbený programovací jazyk je pro programátora vážná věc a dokáže se o něj s kolegy do krve hádat. Pro odlehčení si proto vymýšlejí humorné programovací jazyky, mezi které patří:
Whitespace – jeho zápis se skládá z mezer, tabulátorů a odřádkování (všechny tisknutelné znaky se ignorují)
Brainfuck je naprosto nepoužitelný pro svůj extrémní minimalismus. Zároveň však velmi zábavný.
LOLCODE – Jazyk vytvořený jako parodie k internetovému fenoménu „Lolcatz“. Vzdáleně připomíná jazyk C, ale jeho příkazy a klíčová slova jsou často zkomolená.
Výrazgeek pronikl do češtiny jako synonym pro „zažraného programátora“, v angličtině znamená obecně člověka s velkými znalostmi plně pohlceného svou profesí.
Hacker je programátor, který své umění dává na obdiv různými žertíky, ať už zákonnými či nelegálními. Nelegální hacking může být nabourání funkčnosti informačních systémů, zneužití bezpečnostních děr apodobně. Lidem, kteří se nezabývají ničím jiným než nabouráváním, se pro odlišení od „správňáků“ říkácracker.