Softver po narudžbi, koji se u nekim slučajevima naziva i prilagođenim softverom, aplikacija je ili softverski paket koji je dizajniran i kreiran posebno za ispunjavanje zahtjeva tvrtke, organizacije ili pojedinog krajnjeg korisnika. Razina prilagodbe primijenjena na ove softverske pakete po mjeri razlikuje ih od općih, komercijalno dostupnih softverskih paketa. Programer softvera po narudžbi tim je ili pojedinac zadužen za izradu ovih prilagođenih softverskih aplikacija.
Kao dio postojeće tvrtke za razvoj softvera ili kao pojedinačni izvođač, od programera softvera po narudžbi očekuje se da se upoznaju s operativnim stilom krajnjeg korisnika ili organizacije. Budući da će općenito postojati samo jedan klijent za kojeg se softver razvija, postojat će nekoliko razvojnih faza koje programer softvera po mjeri mora ispuniti. Nakon što je svaka faza razvoja dovršena, testirana i analizirana za potrebna poboljšanja, može započeti sljedeća faza razvoja.
Zahtjev za razvoj softvera po mjeri najčešće se prima od većih organizacija, gdje se prilagođeni softver koristi za upravljanje operativnim, zalihama, resursima i financijskim procesima prema potrebi. Kako se softver razvija, programer softvera po narudžbi mora biti spreman ugraditi promjene u izvorni projektni sažetak. Započinjanje razvoja s praznog platna i prilagođavanje paketa rješavanju problema često čine razvoj softvera po narudžbi usredotočenijim procesom od onog koji je uključen u kreiranje tradicionalnog softverskog paketa.
Zahtjev za prilagođenim softverom često proizlazi iz nedostatka odgovarajućeg postojećeg komercijalnog softverskog paketa koji bi zadovoljio potrebe krajnjeg korisnika. U ovom slučaju, od programera softvera po narudžbi često se očekuje da inovira, pokrivajući nove terene u softverskom smislu kako bi osigurao postizanje postavljenih zahtjeva za paket. Klijenti također traže savjet od razvojnog programera kako najbolje postići svoje ciljeve u softverskom paketu. Upravo u tom području programer treba razumjeti operativne radne prakse krajnjeg korisnika.
Specifični zahtjevi funkcionalnosti povremeno postaju vidljivi tek kako se softverski paket koristi. Kada se to dogodi, programer mora biti u poziciji da ponovno adresira kreirani softver kako bi izvršio sve potrebne izmjene. U ovom području, uloga programera softvera po mjeri razlikuje se od tradicionalnije pozicije razvoja softvera. Fluidna priroda procesa kreiranja i stalna poboljšanja kako bi se zadovoljile specifične potrebe klijenta, a ne generalizirana poboljšanja ili zakrpe za ispravljanje programskih pogrešaka daju razvoju po narudžbi daleko uključeniji i osobniji osjećaj.