This is kind of a split between firmware and software engineering but since I came across this concept for the first time working on a firmware project, I thought it would be best to put it in here.