The need to evolve the system often means that you need to maintain backwards and forwards compatibility at the same time.
- Backwards compatibility – newer code can read data that was written by older code
- Forwards compatibility – older code can read data that was written by newer code (older code ignores additions made by newer code)
Formats for Encoding Data
In memory data is kept in a wide-variety of data structures optimized for efficient access and manipulation. When writing data to file or sending over the network the data must be encoded in some kind of self-contained sequence of bytes.