diff --git a/src/Constants.ts b/src/Constants.ts
index dbd9d86e8..e08786974 100644
--- a/src/Constants.ts
+++ b/src/Constants.ts
@@ -187,7 +187,7 @@ export const CONSTANTS: {
   IntelligenceCrimeWeight: 0.025, // Weight for how much int affects crime success rates
   IntelligenceInfiltrationWeight: 0.1, // Weight for how much int affects infiltration success rates
   IntelligenceCrimeBaseExpGain: 0.05,
-  IntelligenceProgramBaseExpGain: 2.5, // Program required hack level divided by this to determine int exp gain
+  IntelligenceProgramBaseExpGain: 0.1, // Program required hack level divided by this to determine int exp gain
   IntelligenceTerminalHackBaseExpGain: 200, // Hacking exp divided by this to determine int exp gain
   IntelligenceSingFnBaseExpGain: 1.5,
   IntelligenceClassBaseExpGain: 0.01,
diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
index 2397f2a89..e8f44ecec 100644
--- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
+++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
@@ -1293,7 +1293,7 @@ export function finishCreateProgramWork(this: IPlayer, cancelled: boolean): stri
   }
 
   if (!cancelled) {
-    this.gainIntelligenceExp(this.createProgramReqLvl / CONSTANTS.IntelligenceProgramBaseExpGain);
+    this.gainIntelligenceExp(CONSTANTS.IntelligenceProgramBaseExpGain * this.timeWorked/1000);
   }
 
   this.isWorking = false;