In this paper, we discuss different algorithms that can be used to encode channel state information (CSI) in realistic multi-user multiple-input multiple-output (MIMO) systems where there are only few users experiencing similar propagation conditions and the mobile user receivers do not necessarily have the same number of receive antennas. We divide systems with CSI encoding into four classes: time-division multiplexing (TDM) with and without linear pre-coding, and multiple user scheduling with and without linear pre-coding. The practical aspects such as system's complexity and approaches for transmitting the CSI feedback and rate information from the mobile receivers to the base station are discussed and compared for different bit rates in the feedback link. We show that significant increases of the mean throughput of the multi-user scheduling systems demand much higher feedback link bit rates than TDM solutions. We also demonstrate that, while optimum, the non-linear precoding systems may introduce unacceptable degree of complexity into the base station design while linear pre-coding offers a very good trade-off between performance and complexity.