JIT and AOT Learning

Computers are no different than humans when it comes to learning. One of my favorite ways to learn about learning is to think of our brains as an interpreter and compiler, just like your favorite programming language may have.

Unfamiliar concepts are inputs into your compiler to which they are then translated into a familiar concept. However it depends on when the compilation takes place, in such that the time is either as you need it, or before you need it.

Just-in-Time (JIT) Learning

Just-in-Time learning compiles your learning as you need it. This might be learning about something while working through a problem, and you may not have a background in the topic. With JIT learning, you need a concept of an interpreter, to which can tell you if you are on the right or wrong path with regards to understanding. JIT learning is a common form of learning as we learn as we do, rather than learning for the sake of learning.


  • Does not require previous investment.
  • Practical learning opportunities.


  • Lacking subject mastery / preparation.
  • Prone to more failure.

Ahead-of-Time (AOT) Learning

Ahead-of-Time learning compiles your learning well before you need it. This might be learning about something well before you ever use that knowledge to solve a problem. AOT learning doesn’t require an interpreter, because you can already gauge the correctness based on understanding prior.


  • Subject mastery / preparation.
  • Improves future learning.


  • Upfront investment.
  • May never be used in a practical setting.

JIT or AOT Learning?

You’re going to encounter both types of learning every single day as a programmer. One day you may need to know about regular expressions to implement an email validation form, however how many of us would go through the gauntlet known as learning about regex when we may not regularly use them? However this marks an opportunity to take JIT learning as AOT learning. You can take the knowledge of what you learned while JIT learning to make a choice as to whether investing more time into the topic will be fruitful in the future. Either way, you’ll want a balance between these two types of learning. You don’t want to constantly learn everything, especially if you may not use majority of it, and you also don’t want to be unprepared by doing everything as it comes your way.