Računalniki so stroji, ki delujejo na milijonih vrstic kode. Programerji pišejo kodo v različnih jezikih, vendar ima vsa ta koda nekaj osnovnih lastnosti, ne glede na to, kateri jezik se uporablja. Program ima vedno dva niza kode, izvorno in objektno kodo. Izvorna koda je tisto, kar je ustvarjeno vnaprej, jezik, ki ga programer uporablja za dajanje navodil računalniškemu prevajalniku, da se program zažene. Rezultat prevajalnika, ki je prevedel ta navodila izvorne kode, se imenuje objektna koda.
Izrazi so intuitivni, saj je izvorna koda začetek ali izvor operacije, objektna koda pa je želeni rezultat ali predmet celotne vaje. Shranjena je v datotekah, ki jih ustvari računalniški prevajalnik in lahko nato postane končni cilj, ki ga namerava programer.
Ko je izvorna koda prevedena v datoteke, se lahko nato nadaljuje v procesor računalnika, ki izvrši končna navodila. Običajno dostopne programske aplikacije so ogromne zbirke objektne kode, ki je ni mogoče bistveno spremeniti, ker izvorna koda ni vključena. To je tako, kot da bi imeli rešitev problema, vendar ne vseh korakov, ki so bili uporabljeni za dosego tega. Spreminjanje te kode brez izvorne kode je lahko frustracija.
Ta večstopenjski postopek je potreben, ker lahko računalniki izvajajo samo tista navodila, ki so napisana v strojnem jeziku. To je končni rezultat, ki se izvaja v različicah objektne kode. Ko torej potrošnik dobi programsko aplikacijo, ta potrošnik dobi izvedeno različico izvorne kode, ki je postala strojni jezik, ki je bil preoblikovan v končni projekt.
Glede na trenutni poudarek na odprtokodni kodi se vedno več aplikacij izdaja z možnostmi v izvorno kodo. Prizadevni programerji in kodirji lahko dostopajo do te izvorne kode, jo spremenijo, da ustrezajo svojim potrebam, in nato ustvarijo novo objektno kodo, ki izpolnjuje namen, ki je lahko drugačen od tistega, ki so ga nameravali prvotni programerji.