Program utgjør alt fra bittesmå skrevet av amatører til enorme systemer skrevet av hundrevis av utviklere. Programmerere har forskjellige ferdighetsnivåer, alt fra nybegynnere til eksperter. Kompleksiteten de forskjellige kan håndtere er ulik. Programmene må finne en balanse mellom størrelse, hastighet, vedlikeholdbarhet og andre parametre. Systemene de skal kjøre på er alt fra enkle mikrokontrollere til superdatamaskiner. Program som er «ferdigskrevet» kan være under nesten konstant modifikasjon, eller de kan være statiske gjennom hele sin levetid over flere tiår. Programmererens kompetanse i et bestemt språk kan også være utslagsgivende.